ibus-qt
1.3.4
Loading...
Searching...
No Matches
builddir
build
BUILD
ibus-qt-1.3.4-Source
src
qibuspointer.h
1
#ifndef __Q_IBUS_POINTER_H__
2
#define __Q_IBUS_POINTER_H__
3
4
#include <QObject>
5
#include <QAtomicInt>
6
7
namespace
IBus
{
8
9
template
<
typename
T>
10
class
Pointer
11
{
12
public
:
13
Pointer
(
T
*
object
= 0) : p (0) {
14
set (
object
);
15
}
16
17
Pointer
(
const
Pointer
&
src
) : p (0) {
18
set (
src
.get ());
19
}
20
21
template
<
typename
T1>
22
Pointer
(
const
Pointer<T1>
&
src
): p (0) {
23
set (
dynamic_cast<
T
*
>
(
src
.get ()));
24
}
25
26
~Pointer
() {
27
set (0);
28
}
29
30
Pointer
&
operator=
(
T
*
object
) {
31
set (
object
);
32
return
*
this
;
33
}
34
35
Pointer
&
operator=
(
const
Pointer
&
src
) {
36
set (
src
.get ());
37
return
*
this
;
38
}
39
40
template
<
typename
T1>
41
Pointer
&
operator=
(
const
Pointer<T1>
&
src
) {
42
set (
dynamic_cast<
T
*
>
(
src
.get ()));
43
return
*
this
;
44
}
45
46
T
&
operator*
()
const
{
47
return
*get ();
48
}
49
50
T
*
operator->
()
const
{
51
return
get ();
52
}
53
54
operator
T
* ()
const
{
55
return
get ();
56
}
57
58
operator
bool
()
const
{
59
return
!isNull ();
60
}
61
62
T
*get ()
const
{
63
return
p;
64
}
65
66
bool
isNull ()
const
{
67
return
p == 0;
68
}
69
70
protected
:
71
T
*p;
72
73
void
set (
T
*
object
) {
74
if
(p)
75
p->unref ();
76
if
(
object
)
77
object
->ref ();
78
p =
object
;
79
}
80
};
81
82
};
83
#endif
IBus::Pointer
Definition
qibuspointer.h:11
IBus
Definition
qibusattribute.cpp:3
Generated by
1.10.0