Smalltalk/X generator improvements:
- generate C enums as SharedPools with accessors
- generate externa function calls using FFI. Not yet finished!
- CairoMappings improved.
"{ Package: 'cvut:fel/cface' }"
"{ NameSpace: Cface }"
CNodeVisitor subclass:#TypeMapper
instanceVariableNames:'mappings'
classVariableNames:''
poolDictionaries:''
category:'Cface-Visitors'
!
!TypeMapper class methodsFor:'processing'!
process: cNode
self error:'Use #process:using: instead'
"Created: / 17-02-2008 / 20:56:59 / janfrog"
!
process: cNode using: mappings
self new mappings: mappings process: cNode
"Created: / 17-02-2008 / 20:57:22 / janfrog"
"Modified: / 18-02-2008 / 15:32:31 / janfrog"
! !
!TypeMapper methodsFor:'accessing'!
mappings
^ mappings
"Created: / 17-02-2008 / 20:58:30 / janfrog"
!
mappings:something
mappings := something.
"Created: / 17-02-2008 / 20:58:30 / janfrog"
! !
!TypeMapper methodsFor:'processing'!
process: definitions
mappings ifNil:[^self error:'No mappings provided!!'].
super process: definitions
"Created: / 18-02-2008 / 15:33:19 / janfrog"
!
process: definitions using: givenMappings
self mappings: givenMappings.
self process: definitions
"Created: / 18-02-2008 / 15:34:07 / janfrog"
! !
!TypeMapper methodsFor:'visiting'!
visitCEnumNode: cEnum
cEnum isAnonymous ifFalse:
[cEnum
smalltalkNamespace: mappings smalltalkNamespace;
smalltalkPackage: (mappings smalltalkPackage);
smalltalkClass: (mappings smalltalkClassForEnum: cEnum)].
super visitCEnumNode: cEnum
"Created: / 17-02-2008 / 20:58:53 / janfrog"
"Modified: / 17-02-2008 / 22:24:58 / janfrog"
"Modified: / 03-07-2008 / 21:16:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
visitCEnumValueNode: cEnum
cEnum
smalltalkNamespace: mappings smalltalkNamespace;
smalltalkClass: (mappings smalltalkClassForEnumValue: cEnum).
super visitCEnumValueNode: cEnum
"Created: / 17-02-2008 / 21:02:21 / janfrog"
!
visitCFunctionNode: cFunction
cFunction
kind: (mappings kindForFunction:cFunction);
smalltalkNamespace: mappings smalltalkNamespace;
smalltalkClass: (mappings smalltalkClassForFunction: cFunction);
smalltalkSelector: (mappings smalltalkSelectorForFunction: cFunction).
super visitCFunctionNode: cFunction
"Created: / 17-02-2008 / 22:10:44 / janfrog"
"Modified: / 03-07-2008 / 22:10:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
visitCStructFieldNode: cEnum
cEnum
smalltalkName: (mappings smalltalkNameForStructField: cEnum).
super visitCStructFieldNode: cEnum
"Created: / 17-02-2008 / 21:22:53 / janfrog"
!
visitCStructNode: cStruct
cStruct isAnonymous ifFalse:
[cStruct
smalltalkNamespace: mappings smalltalkNamespace;
smalltalkPackage: (mappings smalltalkPackage);
smalltalkClass: (mappings smalltalkClassForStruct: cStruct)].
super visitCStructNode: cStruct
"Created: / 17-02-2008 / 21:12:55 / janfrog"
"Modified: / 17-02-2008 / 22:24:51 / janfrog"
"Modified: / 03-07-2008 / 21:43:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
visitCUnionNode: cUnion
cUnion isAnonymous ifFalse:
[cUnion
smalltalkNamespace: mappings smalltalkNamespace;
smalltalkPackage: (mappings smalltalkPackage);
smalltalkClass: (mappings smalltalkClassForStruct: cUnion)].
super visitCUnionNode: cUnion
"Created: / 17-02-2008 / 22:25:27 / janfrog"
"Modified: / 03-07-2008 / 21:16:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!TypeMapper class methodsFor:'documentation'!
version
^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__TypeMapper.st,v 1.1 2008/02/26 15:58:36 vranyj1 Exp $'
! !