Added support for generating classes for typedef'd types.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 06 Jul 2015 22:21:35 +0100
changeset 39 5ff8fcdb5228
parent 38 7654e5bd9818
child 40 7d1e77b6115e
Added support for generating classes for typedef'd types.
Cface__CTypedefNode.st
Cface__CUserDefinedTypeNode.st
Cface__SmalltalkXGenerator.st
Cface__TypeMapper.st
Cface__TypeMapping.st
Make.proto
Make.spec
bc.mak
libInit.cc
--- a/Cface__CTypedefNode.st	Mon Jul 06 08:03:53 2015 +0100
+++ b/Cface__CTypedefNode.st	Mon Jul 06 22:21:35 2015 +0100
@@ -2,8 +2,8 @@
 
 "{ NameSpace: Cface }"
 
-CTypeNode subclass:#CTypedefNode
-	instanceVariableNames:'type foreign'
+CDerivedTypeNode subclass:#CTypedefNode
+	instanceVariableNames:'type'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Cface-C AST'
@@ -52,18 +52,6 @@
     "Created: / 03-07-2008 / 22:40:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
-foreign
-    ^ foreign
-
-    "Created: / 04-07-2008 / 11:46:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
-!
-
-foreign:something
-    foreign := something.
-
-    "Created: / 04-07-2008 / 11:46:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
-!
-
 type
     ^ type
 
@@ -124,3 +112,4 @@
 version_SVN
     ^ '$Id$'
 ! !
+
--- a/Cface__CUserDefinedTypeNode.st	Mon Jul 06 08:03:53 2015 +0100
+++ b/Cface__CUserDefinedTypeNode.st	Mon Jul 06 22:21:35 2015 +0100
@@ -151,6 +151,30 @@
 
 !CUserDefinedTypeNode methodsFor:'testing'!
 
+isCEnumNode
+    ^ type isCEnumNode
+
+    "Created: / 06-07-2015 / 17:37:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isCPointerToCStructure
+    ^type isCPointerToCStructure
+
+    "Created: / 06-07-2015 / 17:38:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isCStructNode
+    ^ type isCStructNode
+
+    "Created: / 06-07-2015 / 17:37:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isCUnionNode
+    ^ type isCUnionNode
+
+    "Created: / 06-07-2015 / 17:38:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 isCUserDefinedTypeNode
     ^ true
 ! !
@@ -178,3 +202,4 @@
 version_SVN
     ^ '$Id$'
 ! !
+
--- a/Cface__SmalltalkXGenerator.st	Mon Jul 06 08:03:53 2015 +0100
+++ b/Cface__SmalltalkXGenerator.st	Mon Jul 06 22:21:35 2015 +0100
@@ -18,6 +18,27 @@
     "Created: / 08-02-2008 / 08:55:08 / janfrog"
 ! !
 
+!SmalltalkXGenerator methodsFor:'private'!
+
+generateClassForPointerType:cStructNode
+    | smalltalkClass |
+
+    smalltalkClass := Smalltalk at: cStructNode smalltalkClassNameWithNamespace ifAbsent:[nil].
+    smalltalkClass isNil ifTrue:[ 
+        (changeset add: ClassDefinitionChange new)
+            superClassName: ExternalAddress fullName;
+            nameSpaceName: cStructNode smalltalkNamespace;
+            className: cStructNode smalltalkClassName;
+            category: cStructNode smalltalkCategory;
+            package: cStructNode smalltalkPackage.
+    ] ifFalse:[ 
+        (smalltalkClass inheritsFrom: ExternalAddress) ifFalse:
+                [self error:'Class ',smalltalkClass fullName,' should inherit from ExternalAddress']
+    ].
+
+    "Modified: / 06-07-2015 / 18:04:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !SmalltalkXGenerator methodsFor:'processing'!
 
 process: node
@@ -308,9 +329,17 @@
     "Modified: / 28-12-2014 / 21:33:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-visitCTypedefNode: typedefNode
+visitCTypedefNode: cTypedefNode
+    cTypedefNode type isCStructuredNode ifTrue:[ 
+        self visitCStructuredNode: cTypedefNode.
+        ^ self
+    ].
+    cTypedefNode type isCPointerNode ifTrue:[
+        self generateClassForPointerType: cTypedefNode.
+    ].
 
     "Created: / 03-07-2008 / 22:00:49 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 06-07-2015 / 18:01:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 visitCUnionNode: cStructNode
--- a/Cface__TypeMapper.st	Mon Jul 06 08:03:53 2015 +0100
+++ b/Cface__TypeMapper.st	Mon Jul 06 22:21:35 2015 +0100
@@ -132,6 +132,22 @@
     "Modified: / 22-02-2009 / 22:14:40 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+visitCTypedefNode:cTypedefNode
+
+    cTypedefNode shouldBeIgnored ifFalse:[
+        cTypedefNode
+            smalltalkNamespace:(mappings smalltalkNamespaceForTypedef: cTypedefNode);
+            smalltalkPackage:(mappings smalltalkPackage);
+            smalltalkClassName:(mappings smalltalkClassNameForTypedef:cTypedefNode);
+            smalltalkCategory: (mappings smalltalkCategoryForTypedef: cTypedefNode)
+    ].
+    super visitCTypedefNode:cTypedefNode.
+    cTypedefNode shouldBeIgnored ifFalse:
+        [cTypedefNode ignore: (mappings shouldIgnoreTypedef: cTypedefNode)].
+
+    "Created: / 06-07-2015 / 11:35:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 visitCUnionNode:cUnion
 
 
@@ -159,3 +175,4 @@
 version_SVN
     ^ '$Id$'
 ! !
+
--- a/Cface__TypeMapping.st	Mon Jul 06 08:03:53 2015 +0100
+++ b/Cface__TypeMapping.st	Mon Jul 06 22:21:35 2015 +0100
@@ -67,6 +67,13 @@
     "Created: / 22-02-2009 / 15:13:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+shouldIgnoreTypedef: cTypedefNode
+
+    ^false
+
+    "Created: / 06-07-2015 / 11:37:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 shouldIgnoreUnion: cUnionNode
 
     ^false
@@ -99,6 +106,12 @@
     "Modified (comment): / 10-09-2012 / 09:35:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+smalltalkCategoryForTypedef:cTypedefNode 
+    ^ self smalltalkCategoryForDerivedType:cTypedefNode
+
+    "Created: / 06-07-2015 / 11:35:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 smalltalkCategoryForUnion:union 
     ^ self smalltalkCategoryForDerivedType:union
 
@@ -147,6 +160,14 @@
     "Created: / 10-07-2008 / 07:59:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+smalltalkClassNameForTypedef:cTypedefNode 
+    ^ self smalltalkClassNameForDerivedType:cTypedefNode
+
+    "Answers class which should contain function call"
+
+    "Created: / 06-07-2015 / 11:35:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 smalltalkClassNameForUnion:union 
     ^ self smalltalkClassNameForDerivedType:union
 
@@ -222,6 +243,13 @@
     "Created: / 10-07-2008 / 20:24:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+smalltalkNamespaceForTypedef: cTypedefNode
+
+    ^self smalltalkNamespaceForDerivedType: cTypedefNode
+
+    "Created: / 06-07-2015 / 11:36:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 smalltalkNamespaceForUnion: cType
 
     ^self smalltalkNamespaceForDerivedType: cType
--- a/Make.proto	Mon Jul 06 08:03:53 2015 +0100
+++ b/Make.proto	Mon Jul 06 22:21:35 2015 +0100
@@ -182,7 +182,6 @@
 $(OUTDIR)Cface__CBuiltinNode.$(O) Cface__CBuiltinNode.$(H): Cface__CBuiltinNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CDerivedTypeNode.$(O) Cface__CDerivedTypeNode.$(H): Cface__CDerivedTypeNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CPointerNode.$(O) Cface__CPointerNode.$(H): Cface__CPointerNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Cface__CTypedefNode.$(O) Cface__CTypedefNode.$(H): Cface__CTypedefNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CUserDefinedTypeNode.$(O) Cface__CUserDefinedTypeNode.$(H): Cface__CUserDefinedTypeNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CCharNode.$(O) Cface__CCharNode.$(H): Cface__CCharNode.st $(INCLUDE_TOP)/jv/cface/Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CDoubleNode.$(O) Cface__CDoubleNode.$(H): Cface__CDoubleNode.st $(INCLUDE_TOP)/jv/cface/Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -191,6 +190,7 @@
 $(OUTDIR)Cface__CFunctionTypeNode.$(O) Cface__CFunctionTypeNode.$(H): Cface__CFunctionTypeNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CIntNode.$(O) Cface__CIntNode.$(H): Cface__CIntNode.st $(INCLUDE_TOP)/jv/cface/Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CStructuredNode.$(O) Cface__CStructuredNode.$(H): Cface__CStructuredNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cface__CTypedefNode.$(O) Cface__CTypedefNode.$(H): Cface__CTypedefNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CVoidNode.$(O) Cface__CVoidNode.$(H): Cface__CVoidNode.st $(INCLUDE_TOP)/jv/cface/Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CWCharNode.$(O) Cface__CWCharNode.$(H): Cface__CWCharNode.st $(INCLUDE_TOP)/jv/cface/Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CStructNode.$(O) Cface__CStructNode.$(H): Cface__CStructNode.st $(INCLUDE_TOP)/jv/cface/Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CStructuredNode.$(H) $(INCLUDE_TOP)/jv/cface/Cface__CTypeNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Mon Jul 06 08:03:53 2015 +0100
+++ b/Make.spec	Mon Jul 06 22:21:35 2015 +0100
@@ -86,7 +86,6 @@
 	Cface::CBuiltinNode \
 	Cface::CDerivedTypeNode \
 	Cface::CPointerNode \
-	Cface::CTypedefNode \
 	Cface::CUserDefinedTypeNode \
 	Cface::CCharNode \
 	Cface::CDoubleNode \
@@ -95,6 +94,7 @@
 	Cface::CFunctionTypeNode \
 	Cface::CIntNode \
 	Cface::CStructuredNode \
+	Cface::CTypedefNode \
 	Cface::CVoidNode \
 	Cface::CWCharNode \
 	Cface::CStructNode \
@@ -139,7 +139,6 @@
     $(OUTDIR_SLASH)Cface__CBuiltinNode.$(O) \
     $(OUTDIR_SLASH)Cface__CDerivedTypeNode.$(O) \
     $(OUTDIR_SLASH)Cface__CPointerNode.$(O) \
-    $(OUTDIR_SLASH)Cface__CTypedefNode.$(O) \
     $(OUTDIR_SLASH)Cface__CUserDefinedTypeNode.$(O) \
     $(OUTDIR_SLASH)Cface__CCharNode.$(O) \
     $(OUTDIR_SLASH)Cface__CDoubleNode.$(O) \
@@ -148,6 +147,7 @@
     $(OUTDIR_SLASH)Cface__CFunctionTypeNode.$(O) \
     $(OUTDIR_SLASH)Cface__CIntNode.$(O) \
     $(OUTDIR_SLASH)Cface__CStructuredNode.$(O) \
+    $(OUTDIR_SLASH)Cface__CTypedefNode.$(O) \
     $(OUTDIR_SLASH)Cface__CVoidNode.$(O) \
     $(OUTDIR_SLASH)Cface__CWCharNode.$(O) \
     $(OUTDIR_SLASH)Cface__CStructNode.$(O) \
--- a/bc.mak	Mon Jul 06 08:03:53 2015 +0100
+++ b/bc.mak	Mon Jul 06 22:21:35 2015 +0100
@@ -107,7 +107,6 @@
 $(OUTDIR)Cface__CBuiltinNode.$(O) Cface__CBuiltinNode.$(H): Cface__CBuiltinNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CDerivedTypeNode.$(O) Cface__CDerivedTypeNode.$(H): Cface__CDerivedTypeNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CPointerNode.$(O) Cface__CPointerNode.$(H): Cface__CPointerNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Cface__CTypedefNode.$(O) Cface__CTypedefNode.$(H): Cface__CTypedefNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CUserDefinedTypeNode.$(O) Cface__CUserDefinedTypeNode.$(H): Cface__CUserDefinedTypeNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CCharNode.$(O) Cface__CCharNode.$(H): Cface__CCharNode.st $(INCLUDE_TOP)\jv\cface\Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CDoubleNode.$(O) Cface__CDoubleNode.$(H): Cface__CDoubleNode.st $(INCLUDE_TOP)\jv\cface\Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -116,6 +115,7 @@
 $(OUTDIR)Cface__CFunctionTypeNode.$(O) Cface__CFunctionTypeNode.$(H): Cface__CFunctionTypeNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CIntNode.$(O) Cface__CIntNode.$(H): Cface__CIntNode.st $(INCLUDE_TOP)\jv\cface\Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CStructuredNode.$(O) Cface__CStructuredNode.$(H): Cface__CStructuredNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cface__CTypedefNode.$(O) Cface__CTypedefNode.$(H): Cface__CTypedefNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CVoidNode.$(O) Cface__CVoidNode.$(H): Cface__CVoidNode.st $(INCLUDE_TOP)\jv\cface\Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CWCharNode.$(O) Cface__CWCharNode.$(H): Cface__CWCharNode.st $(INCLUDE_TOP)\jv\cface\Cface__CBuiltinNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cface__CStructNode.$(O) Cface__CStructNode.$(H): Cface__CStructNode.st $(INCLUDE_TOP)\jv\cface\Cface__CDefinitionNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CDerivedTypeNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CStructuredNode.$(H) $(INCLUDE_TOP)\jv\cface\Cface__CTypeNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/libInit.cc	Mon Jul 06 08:03:53 2015 +0100
+++ b/libInit.cc	Mon Jul 06 22:21:35 2015 +0100
@@ -62,7 +62,6 @@
 _Cface__CBuiltinNode_Init(pass,__pRT__,snd);
 _Cface__CDerivedTypeNode_Init(pass,__pRT__,snd);
 _Cface__CPointerNode_Init(pass,__pRT__,snd);
-_Cface__CTypedefNode_Init(pass,__pRT__,snd);
 _Cface__CUserDefinedTypeNode_Init(pass,__pRT__,snd);
 _Cface__CCharNode_Init(pass,__pRT__,snd);
 _Cface__CDoubleNode_Init(pass,__pRT__,snd);
@@ -71,6 +70,7 @@
 _Cface__CFunctionTypeNode_Init(pass,__pRT__,snd);
 _Cface__CIntNode_Init(pass,__pRT__,snd);
 _Cface__CStructuredNode_Init(pass,__pRT__,snd);
+_Cface__CTypedefNode_Init(pass,__pRT__,snd);
 _Cface__CVoidNode_Init(pass,__pRT__,snd);
 _Cface__CWCharNode_Init(pass,__pRT__,snd);
 _Cface__CStructNode_Init(pass,__pRT__,snd);