ibus-qt
1.3.3
builddir
build
BUILD
ibus-qt-1.3.3-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
Definition:
qibusattribute.cpp:3
IBus::Pointer
Definition:
qibuspointer.h:10
Generated by
1.8.17