author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 10 Jul 2008 07:31:14 +0000 | |
changeset 5 | c110eef5b9ef |
parent 4 | fc74bd43a3eb |
child 9 | 03c7a764d2be |
permissions | -rw-r--r-- |
1 | 1 |
"{ Package: 'cvut:fel/cface' }" |
2 |
||
3 |
"{ NameSpace: Cface }" |
|
4 |
||
5 |
CTypeNode subclass:#CPointerNode |
|
6 |
instanceVariableNames:'type' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
9 |
category:'Cface-C AST' |
|
10 |
! |
|
11 |
||
12 |
!CPointerNode class methodsFor:'documentation'! |
|
13 |
||
14 |
history |
|
15 |
||
16 |
"Created: / 25-10-2007 / 16:58:14 / haja" |
|
17 |
"Created: #id / 25-10-2007 / 16:58:17 / haja" |
|
18 |
"Created: #id: / 25-10-2007 / 16:58:44 / haja" |
|
19 |
"Created: #acceptVisitor: / 02-11-2007 / 10:44:49 / haja" |
|
20 |
"Created: #acceptVisitorName: / 05-11-2007 / 17:30:59 / haja" |
|
21 |
"Created: #acceptNameVisitor: / 05-11-2007 / 17:32:41 / haja" |
|
22 |
"Deleted: #acceptVisitorName: / 05-11-2007 / 17:32:44 / haja" |
|
23 |
"Deleted: #acceptNameVisitor: / 12-11-2007 / 09:47:00 / haja" |
|
24 |
"Created: #buildTypeCheckFor:on: / 19-12-2007 / 15:06:43 / haja" |
|
25 |
"Created: #buildObjectCreationOn: / 19-12-2007 / 16:21:13 / haja" |
|
26 |
"Created: #buildValueExtractionFor:on: / 19-12-2007 / 17:08:44 / haja" |
|
27 |
"Created: #buildObjectCreationFor:on: / 19-12-2007 / 17:44:34 / haja" |
|
28 |
"Deleted: #buildObjectCreationOn: / 19-12-2007 / 17:44:36 / haja" |
|
29 |
"Created: #buildCTypeOn: / 19-12-2007 / 18:18:04 / haja" |
|
30 |
"Created: #buildTypeDEscriptionOn: / 20-12-2007 / 12:06:45 / haja" |
|
31 |
"Created: #buildTypeDescriptionOn: / 20-12-2007 / 12:06:49 / haja" |
|
32 |
"Deleted: #buildTypeDEscriptionOn: / 20-12-2007 / 12:06:51 / haja" |
|
33 |
! ! |
|
34 |
||
35 |
!CPointerNode class methodsFor:'instance creation'! |
|
36 |
||
37 |
id:anId |
|
38 |
||
39 |
| defPointerNode | |
|
40 |
||
41 |
defPointerNode := self new. |
|
42 |
defPointerNode id:anId. |
|
43 |
||
44 |
^defPointerNode |
|
45 |
||
46 |
"Created: / 25-10-2007 / 16:58:44 / haja" |
|
47 |
! ! |
|
48 |
||
49 |
!CPointerNode methodsFor:'accessing'! |
|
50 |
||
5
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
51 |
cByteSize |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
52 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
53 |
" |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
54 |
Cface::CPointerNode new cByteSize |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
55 |
" |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
56 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
57 |
%{ |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
58 |
return __MKSMALLINT(sizeof(void*)); |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
59 |
%}. |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
60 |
^4 |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
61 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
62 |
"Created: / 09-07-2008 / 19:36:02 / Jan Vrany <vranyj1@fel.cvut.cz>" |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
63 |
! |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
64 |
|
2
cfd2c393abfe
Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
65 |
ffiTypeSymbol |
cfd2c393abfe
Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
66 |
"Superclass Cface::CTypeNode says that I am responsible to implement this method" |
cfd2c393abfe
Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
67 |
|
3
110a9cbf8594
More improvements, now it generates usable Cairo bindings!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
68 |
(type isCCharNode) |
110a9cbf8594
More improvements, now it generates usable Cairo bindings!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
69 |
ifTrue:[^#charPointer]. |
4
fc74bd43a3eb
Minor parser fixes to parse Cairo Xlib stuff
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
70 |
((type isCStructNode) |
fc74bd43a3eb
Minor parser fixes to parse Cairo Xlib stuff
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
71 |
and:[type isAnonymous not |
fc74bd43a3eb
Minor parser fixes to parse Cairo Xlib stuff
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
72 |
and:[type isForeign not]]) |
fc74bd43a3eb
Minor parser fixes to parse Cairo Xlib stuff
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
73 |
ifTrue:[^type smalltalkClassNameWithNamespace]. |
3
110a9cbf8594
More improvements, now it generates usable Cairo bindings!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
74 |
|
110a9cbf8594
More improvements, now it generates usable Cairo bindings!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2
diff
changeset
|
75 |
^#pointer |
2
cfd2c393abfe
Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
76 |
|
cfd2c393abfe
Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
77 |
"Created: / 03-07-2008 / 22:54:39 / Jan Vrany <vranyj1@fel.cvut.cz>" |
4
fc74bd43a3eb
Minor parser fixes to parse Cairo Xlib stuff
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3
diff
changeset
|
78 |
"Modified: / 04-07-2008 / 11:43:59 / Jan Vrany <vranyj1@fel.cvut.cz>" |
2
cfd2c393abfe
Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
79 |
! |
cfd2c393abfe
Smalltalk/X generator improvements:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
80 |
|
5
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
81 |
smalltalkxValueExtractionSelector |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
82 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
83 |
^#doubleWordAt: |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
84 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
85 |
"Created: / 09-07-2008 / 22:22:06 / Jan Vrany <vranyj1@fel.cvut.cz>" |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
86 |
! |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
87 |
|
1 | 88 |
type |
89 |
^ type |
|
90 |
||
91 |
"Created: / 10-02-2008 / 19:21:38 / janfrog" |
|
92 |
! |
|
93 |
||
94 |
type:something |
|
95 |
type := something. |
|
96 |
||
97 |
"Created: / 10-02-2008 / 19:21:38 / janfrog" |
|
98 |
! ! |
|
99 |
||
100 |
!CPointerNode methodsFor:'builder'! |
|
101 |
||
102 |
buildCTypeOn:aBuilder |
|
103 |
||
104 |
aBuilder pointerTo:[ |
|
105 |
id buildCTypeOn:aBuilder. |
|
106 |
]. |
|
107 |
||
108 |
"Modified: / 19-12-2007 / 18:19:01 / haja" |
|
109 |
! |
|
110 |
||
111 |
buildObjectCreationFor:aVariable on:aBuilder |
|
112 |
||
113 |
(id references:IdNode) ifTrue:[ |
|
114 |
(id names last = 'char') ifTrue:[ |
|
115 |
^aBuilder buildStringCreationFor:aVariable. |
|
116 |
]. |
|
117 |
]. |
|
118 |
||
119 |
(id references:CConstNode) ifTrue:[ |
|
120 |
(id id references:IdNode) ifTrue:[ |
|
121 |
(id id names last = 'char') ifTrue:[ |
|
122 |
^aBuilder buildStringCreationFor:aVariable. |
|
123 |
]. |
|
124 |
]. |
|
125 |
]. |
|
126 |
||
127 |
^aBuilder buildPointerCreationFor:aVariable. |
|
128 |
||
129 |
"Created: / 19-12-2007 / 17:44:34 / haja" |
|
130 |
"Modified: / 10-02-2008 / 10:48:44 / janfrog" |
|
131 |
! |
|
132 |
||
133 |
buildTypeCheckFor:aVariable on:aBuilder |
|
134 |
||
135 |
(id references:IdNode) ifTrue:[ |
|
136 |
(id names last = 'char') ifTrue:[ |
|
137 |
^aBuilder buildStringCheckFor:aVariable. |
|
138 |
]. |
|
139 |
]. |
|
140 |
||
141 |
(id references:CConstNode) ifTrue:[ |
|
142 |
(id id references:IdNode) ifTrue:[ |
|
143 |
(id id names last = 'char') ifTrue:[ |
|
144 |
^aBuilder buildStringCheckFor:aVariable. |
|
145 |
]. |
|
146 |
]. |
|
147 |
]. |
|
148 |
||
149 |
^aBuilder buildPointerCheckFor:aVariable. |
|
150 |
||
151 |
"Created: / 19-12-2007 / 15:06:43 / haja" |
|
152 |
"Modified: / 10-02-2008 / 10:50:26 / janfrog" |
|
153 |
! |
|
154 |
||
155 |
buildTypeDescriptionOn:aBuilder |
|
156 |
||
157 |
aBuilder buildPointerTo:[ |
|
158 |
id buildTypeDescriptionOn:aBuilder. |
|
159 |
]. |
|
160 |
||
161 |
"Created: / 20-12-2007 / 12:06:49 / haja" |
|
162 |
! |
|
163 |
||
164 |
buildValueExtractionFor:aVariable on:aBuilder |
|
165 |
||
166 |
(id references:IdNode) ifTrue:[ |
|
167 |
(id names last = 'char') ifTrue:[ |
|
168 |
^aBuilder buildStringValueExtractionFor:aVariable. |
|
169 |
]. |
|
170 |
]. |
|
171 |
||
172 |
(id references:CConstNode) ifTrue:[ |
|
173 |
(id id references:IdNode) ifTrue:[ |
|
174 |
(id id names last = 'char') ifTrue:[ |
|
175 |
^aBuilder buildStringValueExtractionFor:aVariable. |
|
176 |
]. |
|
177 |
]. |
|
178 |
]. |
|
179 |
||
180 |
^aBuilder buildPointerValueExtractionFor:aVariable. |
|
181 |
||
182 |
"Created: / 19-12-2007 / 17:08:44 / haja" |
|
183 |
"Modified: / 10-02-2008 / 10:50:31 / janfrog" |
|
184 |
! ! |
|
185 |
||
186 |
!CPointerNode methodsFor:'printing'! |
|
187 |
||
188 |
printOn: stream indent: indent |
|
189 |
||
190 |
stream |
|
191 |
nextPutAll:'(pointer-to '; |
|
192 |
cr; |
|
193 |
next: indent + 1 put: Character tab. |
|
194 |
||
195 |
type printOn: stream indent: indent + 1. |
|
196 |
stream nextPut:$) |
|
197 |
||
198 |
"Created: / 04-03-2008 / 10:57:12 / janfrog" |
|
199 |
"Modified: / 27-05-2008 / 12:15:57 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
200 |
! ! |
|
201 |
||
202 |
!CPointerNode methodsFor:'testing'! |
|
203 |
||
204 |
isCPointerNode |
|
205 |
^ true |
|
206 |
||
207 |
"Created: / 17-02-2008 / 21:52:45 / janfrog" |
|
5
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
208 |
! |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
209 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
210 |
isCPointerToCStructure |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
211 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
212 |
^type isCStructNode |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
213 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
214 |
"Created: / 04-07-2008 / 15:11:33 / Jan Vrany <vranyj1@fel.cvut.cz>" |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
215 |
! |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
216 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
217 |
isCPointerToChar |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
218 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
219 |
^type isCCharNode |
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
220 |
|
c110eef5b9ef
- externalization of libraryName (now supports unix & win32 simultaneously)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
4
diff
changeset
|
221 |
"Created: / 09-07-2008 / 21:37:34 / Jan Vrany <vranyj1@fel.cvut.cz>" |
1 | 222 |
! ! |
223 |
||
224 |
!CPointerNode methodsFor:'visiting'! |
|
225 |
||
226 |
acceptVisitor:aVisitor |
|
227 |
"Double dispatch back to the visitor, passing my type encoded in |
|
228 |
the selector (visitor pattern)" |
|
229 |
"stub code automatically generated - please change if required" |
|
230 |
||
231 |
^ aVisitor visitCPointerNode:self |
|
232 |
||
233 |
"Created: / 02-11-2007 / 10:44:49 / haja" |
|
234 |
"Modified: / 10-02-2008 / 10:45:24 / janfrog" |
|
235 |
! ! |
|
236 |
||
237 |
!CPointerNode class methodsFor:'documentation'! |
|
238 |
||
239 |
version |
|
240 |
^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__CPointerNode.st,v 1.1 2008/02/26 15:58:16 vranyj1 Exp $' |
|
241 |
! ! |