summaryrefslogtreecommitdiff
path: root/inputmethods/kjumpx
authorsimon <simon>2002-11-22 10:56:30 (UTC)
committer simon <simon>2002-11-22 10:56:30 (UTC)
commit480284c491e26427c630131a25e56f9ed1d129b2 (patch) (unidiff)
tree3bdd60afe34e8c466fbea92dcf89fcab381b110d /inputmethods/kjumpx
parent772c1321e4e95a415b9de700c3474f81f98b5482 (diff)
downloadopie-480284c491e26427c630131a25e56f9ed1d129b2.zip
opie-480284c491e26427c630131a25e56f9ed1d129b2.tar.gz
opie-480284c491e26427c630131a25e56f9ed1d129b2.tar.bz2
- properly namespace the input methods. fixes symbols clashes at run-time
with names like 'Keyboard' or 'KeyboardConfig' . the qcom interface objects are in an anonymous namespace now and the actual keyboard implementations are in Dvorak, JumpX, etc. namespaces. What's left is to solve the symbol clashes of the multiply compiled pickboard classes. I'll leave that one (as part of the patch posted yesterday) for another day for review. This part (namespacing) sounds like a safe bet to me though, so comitting now. (got no comments anyway)
Diffstat (limited to 'inputmethods/kjumpx') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/kjumpx/keyboard.cpp1
-rw-r--r--inputmethods/kjumpx/keyboard.h5
-rw-r--r--inputmethods/kjumpx/keyboardimpl.cpp4
-rw-r--r--inputmethods/kjumpx/keyboardimpl.h12
4 files changed, 18 insertions, 4 deletions
diff --git a/inputmethods/kjumpx/keyboard.cpp b/inputmethods/kjumpx/keyboard.cpp
index 3af6a78..dc44805 100644
--- a/inputmethods/kjumpx/keyboard.cpp
+++ b/inputmethods/kjumpx/keyboard.cpp
@@ -95,96 +95,97 @@ static const ushort kletterMapShift[][6] = {
95 { 0x1110, 0x1104, 0x1102, 0x1169, 0x1173, 0x1168 }, 95 { 0x1110, 0x1104, 0x1102, 0x1169, 0x1173, 0x1168 },
96 { 0x110e, 0x1108, 0x1106, 0x1111, 0x116e, 0x1172 }, 96 { 0x110e, 0x1108, 0x1106, 0x1111, 0x116e, 0x1172 },
97}; 97};
98 98
99static const uchar *const num1Map = (const uchar *const)"12345"; 99static const uchar *const num1Map = (const uchar *const)"12345";
100 100
101static const uchar *const specialMap[] = { 101static const uchar *const specialMap[] = {
102 (const uchar *const)"-+", 102 (const uchar *const)"-+",
103 (const uchar *const)"*!", 103 (const uchar *const)"*!",
104 (const uchar *const)",'", 104 (const uchar *const)",'",
105 (const uchar *const)".%", 105 (const uchar *const)".%",
106 (const uchar *const)"/$", 106 (const uchar *const)"/$",
107}; 107};
108 108
109static const uchar *const specialMapShift[] = { 109static const uchar *const specialMapShift[] = {
110 (const uchar *const)"_=", 110 (const uchar *const)"_=",
111 (const uchar *const)"#?", 111 (const uchar *const)"#?",
112 (const uchar *const)";\"", 112 (const uchar *const)";\"",
113 (const uchar *const)":|", 113 (const uchar *const)":|",
114 (const uchar *const)"\\&", 114 (const uchar *const)"\\&",
115}; 115};
116 116
117static const uchar *const specialMapParen[] = { 117static const uchar *const specialMapParen[] = {
118 (const uchar *const)"()", 118 (const uchar *const)"()",
119 (const uchar *const)"[]", 119 (const uchar *const)"[]",
120 (const uchar *const)"{}", 120 (const uchar *const)"{}",
121 (const uchar *const)"<>", 121 (const uchar *const)"<>",
122 (const uchar *const)"@~", 122 (const uchar *const)"@~",
123}; 123};
124 124
125static const uchar *const num2Map = (const uchar *const)"67890"; 125static const uchar *const num2Map = (const uchar *const)"67890";
126 126
127static const mapElement mod2Map[] = { 127static const mapElement mod2Map[] = {
128 { Qt::Key_Backspace, 8 }, 128 { Qt::Key_Backspace, 8 },
129 { Qt::Key_Delete, 0 }, 129 { Qt::Key_Delete, 0 },
130 { Qt::Key_Return, 13 }, 130 { Qt::Key_Return, 13 },
131 { Qt::Key_Shift, 0 }, 131 { Qt::Key_Shift, 0 },
132 { myParenID, 0 }, 132 { myParenID, 0 },
133}; 133};
134 134
135static const int cursorMap[][2] = { 135static const int cursorMap[][2] = {
136 { Qt::Key_Home, Qt::Key_PageUp }, 136 { Qt::Key_Home, Qt::Key_PageUp },
137 { Qt::Key_End, Qt::Key_PageDown }, 137 { Qt::Key_End, Qt::Key_PageDown },
138 { Qt::Key_Up, Qt::Key_Up }, 138 { Qt::Key_Up, Qt::Key_Up },
139 { Qt::Key_Left, Qt::Key_Right }, 139 { Qt::Key_Left, Qt::Key_Right },
140 { Qt::Key_Down, Qt::Key_Down }, 140 { Qt::Key_Down, Qt::Key_Down },
141}; 141};
142 142
143using namespace KJumpX;
143 144
144Keyboard::Keyboard(QWidget* parent, const char* name, WFlags f) : 145Keyboard::Keyboard(QWidget* parent, const char* name, WFlags f) :
145 QFrame(parent, name, f), 146 QFrame(parent, name, f),
146 shift(0), paren(0), ctrl(0), alt(0), lang(1), lastKey(0), 147 shift(0), paren(0), ctrl(0), alt(0), lang(1), lastKey(0),
147 pressedKeyUnicode(0), pressedKeyQcode(0), pressedMod(0), 148 pressedKeyUnicode(0), pressedKeyQcode(0), pressedMod(0),
148 isnoncont(false), 149 isnoncont(false),
149 slideKeyUnicodeH(0), slideKeyQcodeH(0), slideKeyUnicodeV(0), slideKeyQcodeV(0), 150 slideKeyUnicodeH(0), slideKeyQcodeH(0), slideKeyUnicodeV(0), slideKeyQcodeV(0),
150 enableMouseTracking(false), slidePix(NULL), slidePixH(NULL), slidePixV(NULL), 151 enableMouseTracking(false), slidePix(NULL), slidePixH(NULL), slidePixV(NULL),
151 releasedPix(NULL), pressedPix(NULL) 152 releasedPix(NULL), pressedPix(NULL)
152{ 153{
153 //setPalette(QPalette(QColor(240,240,230))); // Beige! 154 //setPalette(QPalette(QColor(240,240,230))); // Beige!
154 155
155 releasedPlain = releasedShift = releasedParen = Resource::loadPixmap("kjumpx/released"); 156 releasedPlain = releasedShift = releasedParen = Resource::loadPixmap("kjumpx/released");
156 pressedPlain = pressedShift = pressedParen = Resource::loadPixmap("kjumpx/pressed"); 157 pressedPlain = pressedShift = pressedParen = Resource::loadPixmap("kjumpx/pressed");
157 pressedDigit = Resource::loadPixmap("kjumpx/pressed"); 158 pressedDigit = Resource::loadPixmap("kjumpx/pressed");
158 159
159 QPixmap tmp; 160 QPixmap tmp;
160 161
161 tmp = Resource::loadPixmap("kjumpx/releasedShift"); 162 tmp = Resource::loadPixmap("kjumpx/releasedShift");
162 bitBlt(&releasedShift, letterx1, 0, &tmp); 163 bitBlt(&releasedShift, letterx1, 0, &tmp);
163 164
164 tmp = Resource::loadPixmap("kjumpx/releasedParen"); 165 tmp = Resource::loadPixmap("kjumpx/releasedParen");
165 bitBlt(&releasedParen, specialx1, 0, &tmp); 166 bitBlt(&releasedParen, specialx1, 0, &tmp);
166 167
167 tmp = Resource::loadPixmap("kjumpx/pressedShift"); 168 tmp = Resource::loadPixmap("kjumpx/pressedShift");
168 bitBlt(&pressedShift, letterx1, 0, &tmp); 169 bitBlt(&pressedShift, letterx1, 0, &tmp);
169 170
170 tmp = Resource::loadPixmap("kjumpx/pressedParen"); 171 tmp = Resource::loadPixmap("kjumpx/pressedParen");
171 bitBlt(&pressedParen, specialx1, 0, &tmp); 172 bitBlt(&pressedParen, specialx1, 0, &tmp);
172 173
173 tmp = Resource::loadPixmap("kjumpx/pressedDigit"); 174 tmp = Resource::loadPixmap("kjumpx/pressedDigit");
174 bitBlt(&pressedDigit, specialx1, 0, &tmp); 175 bitBlt(&pressedDigit, specialx1, 0, &tmp);
175 176
176 offscreen = QPixmap( releasedPlain ); 177 offscreen = QPixmap( releasedPlain );
177 178
178 releasedPix = &releasedPlain; 179 releasedPix = &releasedPlain;
179 pressedPix = &pressedPlain; 180 pressedPix = &pressedPlain;
180 slidePix = &pressedPlain; 181 slidePix = &pressedPlain;
181 182
182 delayTimer = new QTimer(this); 183 delayTimer = new QTimer(this);
183 rateTimer = new QTimer(this); 184 rateTimer = new QTimer(this);
184 connect( delayTimer, SIGNAL( timeout() ), this, SLOT( delayTimerDone() ) ); 185 connect( delayTimer, SIGNAL( timeout() ), this, SLOT( delayTimerDone() ) );
185 connect( rateTimer, SIGNAL( timeout() ), this, SLOT( rateTimerDone() ) ); 186 connect( rateTimer, SIGNAL( timeout() ), this, SLOT( rateTimerDone() ) );
186} 187}
187 188
188void Keyboard::resizeEvent(QResizeEvent*) 189void Keyboard::resizeEvent(QResizeEvent*)
189{ 190{
190 //cout << "resizeEvent()" << endl; 191 //cout << "resizeEvent()" << endl;
diff --git a/inputmethods/kjumpx/keyboard.h b/inputmethods/kjumpx/keyboard.h
index 148cb72..ca83915 100644
--- a/inputmethods/kjumpx/keyboard.h
+++ b/inputmethods/kjumpx/keyboard.h
@@ -1,79 +1,84 @@
1/**************************************************************************************94x78** 1/**************************************************************************************94x78**
2** 2**
3** This file may be distributed and/or modified under the terms of the 3** This file may be distributed and/or modified under the terms of the
4** GNU General Public License version 2 as published by the Free Software 4** GNU General Public License version 2 as published by the Free Software
5** Foundation and appearing in the file LICENSE.GPL included in the 5** Foundation and appearing in the file LICENSE.GPL included in the
6** packaging of this file. 6** packaging of this file.
7** 7**
8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10** 10**
11*********************************************************************************************/ 11*********************************************************************************************/
12#include <qframe.h> 12#include <qframe.h>
13#include <qpixmap.h> 13#include <qpixmap.h>
14#include <qtimer.h> 14#include <qtimer.h>
15 15
16namespace KJumpX
17{
18
16class Keyboard : public QFrame 19class Keyboard : public QFrame
17{ 20{
18 Q_OBJECT 21 Q_OBJECT
19public: 22public:
20 Keyboard( QWidget* parent=0, const char* name=0, WFlags f=0 ); 23 Keyboard( QWidget* parent=0, const char* name=0, WFlags f=0 );
21 24
22 void resetState(); 25 void resetState();
23 26
24 void mousePressEvent(QMouseEvent*); 27 void mousePressEvent(QMouseEvent*);
25 void mouseReleaseEvent(QMouseEvent*); 28 void mouseReleaseEvent(QMouseEvent*);
26 void mouseMoveEvent(QMouseEvent*); 29 void mouseMoveEvent(QMouseEvent*);
27 void resizeEvent(QResizeEvent*); 30 void resizeEvent(QResizeEvent*);
28 void paintEvent(QPaintEvent* e); 31 void paintEvent(QPaintEvent* e);
29 //void timerEvent(QTimerEvent* e); 32 //void timerEvent(QTimerEvent* e);
30 33
31 QSize sizeHint() const; 34 QSize sizeHint() const;
32 35
33 QChar parseKoreanInput(ushort); 36 QChar parseKoreanInput(ushort);
34 ushort combineKoreanChars(const ushort, const ushort, const ushort); 37 ushort combineKoreanChars(const ushort, const ushort, const ushort);
35 ushort constoe(const ushort); 38 ushort constoe(const ushort);
36 39
37 40
38signals: 41signals:
39 void key( ushort unicode, ushort qcode, ushort modifiers, bool, bool ); 42 void key( ushort unicode, ushort qcode, ushort modifiers, bool, bool );
40 43
41private slots: 44private slots:
42 void delayTimerDone(); 45 void delayTimerDone();
43 void rateTimerDone(); 46 void rateTimerDone();
44 47
45private: 48private:
46 int shift; // 0, 1, 2 49 int shift; // 0, 1, 2
47 int paren; // 0, 1, 2 50 int paren; // 0, 1, 2
48 int ctrl; // 0, 1 51 int ctrl; // 0, 1
49 int alt; // 0, 1 52 int alt; // 0, 1
50 bool lang; // 0 -> english, 1 -> korean 53 bool lang; // 0 -> english, 1 -> korean
51 54
52 int lastKey; 55 int lastKey;
53 56
54 int pressedKeyUnicode, pressedKeyQcode, pressedMod; 57 int pressedKeyUnicode, pressedKeyQcode, pressedMod;
55 int pressedx, pressedy, pressedw, pressedh; 58 int pressedx, pressedy, pressedw, pressedh;
56 bool isnoncont; 59 bool isnoncont;
57 int pressed2x, pressed2y, pressed2w, pressed2h; 60 int pressed2x, pressed2y, pressed2w, pressed2h;
58 61
59 int slideKeyUnicodeH, slideKeyQcodeH, slideKeyUnicodeV, slideKeyQcodeV; 62 int slideKeyUnicodeH, slideKeyQcodeH, slideKeyUnicodeV, slideKeyQcodeV;
60 bool enableMouseTracking; 63 bool enableMouseTracking;
61 QPixmap *slidePix, *slidePixH, *slidePixV; 64 QPixmap *slidePix, *slidePixH, *slidePixV;
62 65
63 QPixmap releasedPlain; 66 QPixmap releasedPlain;
64 QPixmap releasedShift; 67 QPixmap releasedShift;
65 QPixmap releasedParen; 68 QPixmap releasedParen;
66 69
67 QPixmap pressedPlain; 70 QPixmap pressedPlain;
68 QPixmap pressedShift; 71 QPixmap pressedShift;
69 QPixmap pressedParen; 72 QPixmap pressedParen;
70 QPixmap pressedDigit; 73 QPixmap pressedDigit;
71 74
72 QPixmap offscreen; 75 QPixmap offscreen;
73 76
74 QPixmap *releasedPix; 77 QPixmap *releasedPix;
75 QPixmap *pressedPix; 78 QPixmap *pressedPix;
76 79
77 QTimer *delayTimer; 80 QTimer *delayTimer;
78 QTimer *rateTimer; 81 QTimer *rateTimer;
79}; 82};
83
84} // namespace KJumpX
diff --git a/inputmethods/kjumpx/keyboardimpl.cpp b/inputmethods/kjumpx/keyboardimpl.cpp
index 5d8e0d3..976d816 100644
--- a/inputmethods/kjumpx/keyboardimpl.cpp
+++ b/inputmethods/kjumpx/keyboardimpl.cpp
@@ -1,97 +1,97 @@
1/**************************************************************************************94x78** 1/**************************************************************************************94x78**
2** 2**
3** This file may be distributed and/or modified under the terms of the 3** This file may be distributed and/or modified under the terms of the
4** GNU General Public License version 2 as published by the Free Software 4** GNU General Public License version 2 as published by the Free Software
5** Foundation and appearing in the file LICENSE.GPL included in the 5** Foundation and appearing in the file LICENSE.GPL included in the
6** packaging of this file. 6** packaging of this file.
7** 7**
8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10** 10**
11*********************************************************************************************/ 11*********************************************************************************************/
12#include <qapplication.h> 12#include <qapplication.h>
13#include <qpixmap.h> 13#include <qpixmap.h>
14#include "keyboard.h" 14#include "keyboard.h"
15#include "keyboardimpl.h" 15#include "keyboardimpl.h"
16 16
17/* XPM */ 17/* XPM */
18static char * icon_xpm[] = { 18static const char * const icon_xpm[] = {
19"26 13 2 1", 19"26 13 2 1",
20 " c None", 20 " c None",
21 ".c #000000", 21 ".c #000000",
22" ... ... ... ... ... ... ", 22" ... ... ... ... ... ... ",
23". . . . . ", 23". . . . . ",
24". . ... .. . . ", 24". . ... .. . . ",
25". . .. . . ", 25". . .. . . ",
26" ...... ...... ... .... ", 26" ...... ...... ... .... ",
27". .. .. .. . ", 27". .. .. .. . ",
28". .. .. .. . ", 28". .. .. .. . ",
29". ... .. . ", 29". ... .. . ",
30" ...... .. ...... ", 30" ...... .. ...... ",
31". . .. . . ", 31". . .. . . ",
32". . ....... . . ", 32". . ....... . . ",
33". . . . . ", 33". . . . . ",
34" ... ... ... ... ... ... "}; 34" ... ... ... ... ... ... "};
35 35
36 36
37KeyboardImpl::KeyboardImpl() 37KeyboardImpl::KeyboardImpl()
38 : input(0), icn(0), ref(0) 38 : input(0), icn(0), ref(0)
39{ 39{
40} 40}
41 41
42KeyboardImpl::~KeyboardImpl() 42KeyboardImpl::~KeyboardImpl()
43{ 43{
44 delete input; 44 delete input;
45 delete icn; 45 delete icn;
46} 46}
47 47
48QWidget *KeyboardImpl::inputMethod( QWidget *parent, Qt::WFlags f ) 48QWidget *KeyboardImpl::inputMethod( QWidget *parent, Qt::WFlags f )
49{ 49{
50 if ( !input ) 50 if ( !input )
51 input = new Keyboard( parent, "Keyboard", f ); 51 input = new KJumpX::Keyboard( parent, "Keyboard", f );
52 return input; 52 return input;
53} 53}
54 54
55void KeyboardImpl::resetState() 55void KeyboardImpl::resetState()
56{ 56{
57 if ( input ) 57 if ( input )
58 input->resetState(); 58 input->resetState();
59} 59}
60 60
61QPixmap *KeyboardImpl::icon() 61QPixmap *KeyboardImpl::icon()
62{ 62{
63 if ( !icn ) 63 if ( !icn )
64 icn = new QPixmap( (const char **)icon_xpm ); 64 icn = new QPixmap( (const char **)icon_xpm );
65 return icn; 65 return icn;
66} 66}
67 67
68QString KeyboardImpl::name() 68QString KeyboardImpl::name()
69{ 69{
70 return qApp->translate( "InputMethods", "KJumpX" ); 70 return qApp->translate( "InputMethods", "KJumpX" );
71} 71}
72 72
73void KeyboardImpl::onKeyPress( QObject *receiver, const char *slot ) 73void KeyboardImpl::onKeyPress( QObject *receiver, const char *slot )
74{ 74{
75 if ( input ) 75 if ( input )
76 QObject::connect( input, SIGNAL(key(ushort,ushort,ushort,bool,bool)), receiver, slot ); 76 QObject::connect( input, SIGNAL(key(ushort,ushort,ushort,bool,bool)), receiver, slot );
77} 77}
78 78
79#ifndef QT_NO_COMPONENT 79#ifndef QT_NO_COMPONENT
80QRESULT KeyboardImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) 80QRESULT KeyboardImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
81{ 81{
82 *iface = 0; 82 *iface = 0;
83 if ( uuid == IID_QUnknown ) 83 if ( uuid == IID_QUnknown )
84 *iface = this; 84 *iface = this;
85 else if ( uuid == IID_InputMethod ) 85 else if ( uuid == IID_InputMethod )
86 *iface = this; 86 *iface = this;
87 87
88 if ( *iface ) 88 if ( *iface )
89 (*iface)->addRef(); 89 (*iface)->addRef();
90 return QS_OK; 90 return QS_OK;
91} 91}
92 92
93Q_EXPORT_INTERFACE() 93Q_EXPORT_INTERFACE()
94{ 94{
95 Q_CREATE_INSTANCE( KeyboardImpl ) 95 Q_CREATE_INSTANCE( KeyboardImpl )
96} 96}
97#endif 97#endif
diff --git a/inputmethods/kjumpx/keyboardimpl.h b/inputmethods/kjumpx/keyboardimpl.h
index a82ec4a..1ff1034 100644
--- a/inputmethods/kjumpx/keyboardimpl.h
+++ b/inputmethods/kjumpx/keyboardimpl.h
@@ -1,43 +1,51 @@
1/**************************************************************************************94x78** 1/**************************************************************************************94x78**
2** 2**
3** This file may be distributed and/or modified under the terms of the 3** This file may be distributed and/or modified under the terms of the
4** GNU General Public License version 2 as published by the Free Software 4** GNU General Public License version 2 as published by the Free Software
5** Foundation and appearing in the file LICENSE.GPL included in the 5** Foundation and appearing in the file LICENSE.GPL included in the
6** packaging of this file. 6** packaging of this file.
7** 7**
8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 8** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 9** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10** 10**
11*********************************************************************************************/ 11*********************************************************************************************/
12#ifndef KEYBOARDIMPL_H 12#ifndef KEYBOARDIMPL_H
13#define KEYBOARDIMPL_H 13#define KEYBOARDIMPL_H
14 14
15#include <qpe/inputmethodinterface.h> 15#include <qpe/inputmethodinterface.h>
16 16
17class Keyboard; 17namespace KJumpX
18{
19 class Keyboard;
20}
18class QPixmap; 21class QPixmap;
19 22
23namespace
24{
25
20class KeyboardImpl : public InputMethodInterface 26class KeyboardImpl : public InputMethodInterface
21{ 27{
22public: 28public:
23 KeyboardImpl(); 29 KeyboardImpl();
24 virtual ~KeyboardImpl(); 30 virtual ~KeyboardImpl();
25 31
26#ifndef QT_NO_COMPONENT 32#ifndef QT_NO_COMPONENT
27 QRESULT queryInterface( const QUuid&, QUnknownInterface** ); 33 QRESULT queryInterface( const QUuid&, QUnknownInterface** );
28 Q_REFCOUNT 34 Q_REFCOUNT
29#endif 35#endif
30 36
31 virtual QWidget *inputMethod( QWidget *parent, Qt::WFlags f ); 37 virtual QWidget *inputMethod( QWidget *parent, Qt::WFlags f );
32 virtual void resetState(); 38 virtual void resetState();
33 virtual QPixmap *icon(); 39 virtual QPixmap *icon();
34 virtual QString name(); 40 virtual QString name();
35 virtual void onKeyPress( QObject *receiver, const char *slot ); 41 virtual void onKeyPress( QObject *receiver, const char *slot );
36 42
37private: 43private:
38 Keyboard *input; 44 KJumpX::Keyboard *input;
39 QPixmap *icn; 45 QPixmap *icn;
40 ulong ref; 46 ulong ref;
41}; 47};
42 48
49} // anonymous namespace
50
43#endif 51#endif