Added SVNMapping. Now it is able to parse libsvn.def
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 10 Jul 2008 20:56:08 +0000
changeset 6 ae25dce94003
parent 5 c110eef5b9ef
child 7 75608e40c6da
Added SVNMapping. Now it is able to parse libsvn.def
Cface__CConstNode.st
Cface__CDefinitionParser.st
Cface__CDefinitionScanner.st
Cface__CDerivedTypeNode.st
Cface__CFunctionNode.st
Cface__CNode.st
Cface__CTypedefNode.st
Cface__SVNMapping.st
Cface__TypeCollector.st
Cface__TypeMapper.st
Cface__TypeMapping.st
--- a/Cface__CConstNode.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__CConstNode.st	Thu Jul 10 20:56:08 2008 +0000
@@ -44,6 +44,13 @@
 
 !CConstNode methodsFor:'accessing'!
 
+ffiTypeSymbol
+
+    ^type ffiTypeSymbol
+
+    "Created: / 10-07-2008 / 20:15:12 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
 smalltalkClassName
     ^ type smalltalkClassName
 
--- a/Cface__CDefinitionParser.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__CDefinitionParser.st	Thu Jul 10 20:56:08 2008 +0000
@@ -15,7 +15,7 @@
 scannerClass
 	^Cface::CDefinitionScanner
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionParser class methodsFor:'generated-comments'!
@@ -54,6 +54,14 @@
                 { (CArgumentNode new
                                 cName:(name value);
                                 type:type) }
+        | ""("" ""argument"" ""("" Type 'type' "")"" ""value"" 'name' "")"" 
+                { (CArgumentNode new
+                                cName:(name value);
+                                type:type) }
+        | ""("" ""argument"" ""("" Type 'type' "")"" ""array"" 'name' "")"" 
+                { (CArgumentNode new
+                                cName:(name value);
+                                type:type) }
         ;                               
 
 
@@ -242,7 +250,7 @@
     ;
 "
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionParser class methodsFor:'generated-starting states'!
@@ -256,7 +264,7 @@
 startingStateForDefinitionFile
 	^2
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionParser methodsFor:'accessing'!
@@ -274,14 +282,23 @@
         cName:((nodes at:6) value);
         type:(nodes at:4))
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForArgument2:nodes 
-    ^ FunctionArgumentNode cName:((nodes at:6) value) id:(nodes at:4)
+    ^ ((CArgumentNode new)
+        cName:((nodes at:6) value);
+        type:(nodes at:4))
+
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
 
-    "Created: / 10-02-2008 / 10:26:31 / janfrog"
-    "Modified: / 10-02-2008 / 19:08:18 / janfrog"
+reduceActionForArgument3:nodes 
+    ^ ((CArgumentNode new)
+        cName:((nodes at:6) value);
+        type:(nodes at:4))
+
+    "Created: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForArguments1:nodes 
@@ -304,73 +321,73 @@
         type:(nodes at:4);
         size:(nodes at:6) value
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType10:nodes 
     ^ CWCharNode new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType1:nodes 
     ^ CUnsignedNode new type:(nodes at:2)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType2:nodes 
     ^ nodes at:2
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType3:nodes 
     ^ CLongNode new type:(nodes at:2)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType4:nodes 
     ^ CShortNode new type:(nodes at:2)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType5:nodes 
     ^ CIntNode new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType6:nodes 
     ^ CCharNode new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType7:nodes 
     ^ CDoubleNode new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType8:nodes 
     ^ CFloatNode new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForBuiltinType9:nodes 
     ^ CVoidNode new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForConst1:nodes 
     ^ CConstNode new type:(nodes at:2)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForDefBody1:nodes 
@@ -452,31 +469,31 @@
 reduceActionForDefinition1:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForDefinition2:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForDefinition3:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForDefinition4:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForDefinition5:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForDefinition6:nodes 
@@ -500,7 +517,7 @@
 reduceActionForDefinitionFile1:nodes 
     ^ CDefinitionFileNode new definitions:(nodes at:1)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForEnum1:nodes 
@@ -510,7 +527,7 @@
         foreign:false;
         typedef:false
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForEnum2:nodes 
@@ -520,7 +537,7 @@
         foreign:true;
         typedef:false
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForEnumField1:nodes 
@@ -549,7 +566,7 @@
         cName:((nodes at:4) value);
         intValue:((nodes at:6) value))
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForFunction1:nodes 
@@ -558,7 +575,7 @@
         arguments:(nodes at:5);
         return:(nodes at:7)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForFunctionArguments1:nodes 
@@ -581,7 +598,7 @@
         arguments:(nodes at:5);
         return:(nodes at:7)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForFunctionPrototypeArgument1:nodes 
@@ -589,7 +606,7 @@
         cName:nil;
         type:(nodes at:4)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForFunctionPrototypeArguments1:nodes 
@@ -609,7 +626,7 @@
 reduceActionForGenerated1:nodes 
     ^ (nodes at:3) value
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForGroup_____Function___Struct___Enum___Union___Typedef1:nodes 
@@ -729,7 +746,7 @@
 reduceActionForGroup______name_1:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForGroup______number_____name_1:nodes 
@@ -885,13 +902,13 @@
 reduceActionForOptional__Group______name_1:nodes 
     ^ nil
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForOptional__Group______name_2:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForOptional__Group______type_1:nodes 
@@ -945,7 +962,7 @@
 reduceActionForPointer1:nodes 
     ^ CPointerNode new type:(nodes at:3)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat_Multiple___name_1:nodes 
@@ -965,7 +982,7 @@
 reduceActionForRepeat__Argument1:nodes 
     ^ OrderedCollection new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__Argument2:nodes 
@@ -973,13 +990,13 @@
         add:(nodes at:2);
         yourself
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__Definition1:nodes 
     ^ OrderedCollection new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__Definition2:nodes 
@@ -987,7 +1004,7 @@
         add:(nodes at:2);
         yourself
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__EnumField1:nodes 
@@ -1007,7 +1024,7 @@
 reduceActionForRepeat__EnumValue1:nodes 
     ^ OrderedCollection new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__EnumValue2:nodes 
@@ -1015,13 +1032,13 @@
         add:(nodes at:2);
         yourself
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__FunctionPrototypeArgument1:nodes 
     ^ OrderedCollection new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__FunctionPrototypeArgument2:nodes 
@@ -1029,7 +1046,7 @@
         add:(nodes at:2);
         yourself
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__Group_____Function___Struct___Enum___Union___Typedef1:nodes 
@@ -1077,7 +1094,7 @@
 reduceActionForRepeat__StructField1:nodes 
     ^ OrderedCollection new
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForRepeat__StructField2:nodes 
@@ -1085,13 +1102,13 @@
         add:(nodes at:2);
         yourself
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForReturn1:nodes 
     ^ nodes at:3
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForStruct1:nodes 
@@ -1100,7 +1117,7 @@
         fields:(nodes at:4);
         foreign:false
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForStruct2:nodes 
@@ -1109,7 +1126,7 @@
         fields:(nodes at:4);
         foreign:true
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForStructField1:nodes 
@@ -1118,7 +1135,7 @@
         offset:(nodes at:8) value asNumber;
         type:(nodes at:4)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForStructField2:nodes 
@@ -1127,7 +1144,7 @@
         offset:(nodes at:8) value asNumber;
         type:(nodes at:4)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForStructField3:nodes 
@@ -1136,7 +1153,7 @@
         offset:(nodes at:8) value asNumber;
         type:(nodes at:4)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForStructField4:nodes 
@@ -1208,55 +1225,55 @@
 reduceActionForType1:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType2:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType3:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType4:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType5:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType6:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType7:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType8:nodes 
     ^ nodes at:1
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForType9:nodes 
     ^ CUserDefinedTypeNode new cName:(nodes at:1) value
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForTypedef1:nodes 
@@ -1264,7 +1281,7 @@
         cName:((nodes at:3) value);
         type:(nodes at:4)
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForTypedef2:nodes 
@@ -1273,7 +1290,7 @@
         type:(nodes at:4);
         foreign:true
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForTypedefEnum1:nodes 
@@ -1314,7 +1331,7 @@
         fields:(nodes at:4);
         foreign:false
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForUnion2:nodes 
@@ -1323,7 +1340,7 @@
         fields:(nodes at:4);
         foreign:true
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 reduceActionForUnionFields1:nodes 
@@ -1412,6 +1429,8 @@
 #(54 4 #reduceActionForPointer1:)
 #(55 7 #reduceActionForArray1:)
 #(56 7 #reduceActionForArgument1:)
+#(56 7 #reduceActionForArgument2:)
+#(56 7 #reduceActionForArgument3:)
 #(57 1 #'reduceActionForGroup______name_1:')
 #(58 0 #'reduceActionForOptional__Group______name_1:')
 #(58 1 #'reduceActionForOptional__Group______name_2:')
@@ -1428,56 +1447,56 @@
 #(66 1 #reduceActionForDefinitionFile1:)
 )
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 transitionTable
 	^#(
-#[1 0 234 0 12 0 234 0 63 0 13 0 65 0 17 0 66]
-#[1 0 234 0 12 0 234 0 63 0 13 0 65 0 21 0 66]
-#[1 0 25 0 12 0 29 0 38 0 33 0 39 0 37 0 40 0 41 0 41 0 45 0 42 0 49 0 44 0 242 0 63]
+#[1 0 242 0 12 0 242 0 63 0 13 0 65 0 17 0 66]
+#[1 0 242 0 12 0 242 0 63 0 13 0 65 0 21 0 66]
+#[1 0 25 0 12 0 29 0 38 0 33 0 39 0 37 0 40 0 41 0 41 0 45 0 42 0 49 0 44 0 250 0 63]
 #[0 0 0 0 63]
 #[0 0 0 0 63]
-#[1 0 53 0 11 0 57 0 17 0 61 0 20 0 65 0 22 0 69 0 23 0 73 0 25 0 77 0 29 0 81 0 31 0 85 0 32]
+#[1 0 53 0 11 0 57 0 17 0 61 0 19 0 65 0 20 0 69 0 22 0 73 0 23 0 77 0 25 0 81 0 29 0 85 0 31]
 #[0 0 50 0 12 0 63]
 #[0 0 54 0 12 0 63]
 #[0 0 58 0 12 0 63]
 #[0 0 62 0 12 0 63]
 #[0 0 46 0 12 0 63]
-#[0 0 238 0 12 0 63]
+#[0 0 246 0 12 0 63]
 #[0 0 89 0 33]
 #[0 0 93 0 33]
-#[1 0 194 0 12 0 194 0 14 0 97 0 33 0 101 0 57 0 105 0 58]
-#[0 0 109 0 33]
-#[1 0 194 0 12 0 194 0 14 0 97 0 33 0 101 0 57 0 113 0 58]
-#[1 0 194 0 12 0 194 0 14 0 97 0 33 0 101 0 57 0 117 0 58]
-#[1 0 194 0 12 0 194 0 14 0 97 0 33 0 101 0 57 0 121 0 58]
-#[1 0 194 0 12 0 194 0 14 0 97 0 33 0 101 0 57 0 125 0 58]
-#[1 0 194 0 12 0 194 0 14 0 97 0 33 0 101 0 57 0 129 0 58]
+#[1 0 202 0 12 0 202 0 14 0 97 0 33 0 101 0 57 0 105 0 58]
+#[1 0 202 0 12 0 202 0 14 0 97 0 33 0 101 0 57 0 109 0 58]
+#[0 0 113 0 33]
+#[1 0 202 0 12 0 202 0 14 0 97 0 33 0 101 0 57 0 117 0 58]
+#[1 0 202 0 12 0 202 0 14 0 97 0 33 0 101 0 57 0 121 0 58]
+#[1 0 202 0 12 0 202 0 14 0 97 0 33 0 101 0 57 0 125 0 58]
+#[1 0 202 0 12 0 202 0 14 0 97 0 33 0 101 0 57 0 129 0 58]
 #[0 0 133 0 12]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 0 201 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
-#[0 0 190 0 12 0 14]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 0 201 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
 #[0 0 198 0 12 0 14]
-#[1 0 226 0 12 0 226 0 14 0 225 0 62]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 0 229 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
-#[1 0 226 0 12 0 226 0 14 0 233 0 62]
-#[1 0 214 0 12 0 214 0 14 0 237 0 60]
-#[1 0 214 0 12 0 214 0 14 0 241 0 60]
-#[1 0 214 0 12 0 214 0 14 0 245 0 60]
-#[1 0 214 0 12 0 214 0 14 0 249 0 60]
+#[0 0 206 0 12 0 14]
+#[1 0 222 0 12 0 222 0 14 0 225 0 60]
+#[1 0 234 0 12 0 234 0 14 0 229 0 62]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 0 233 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[1 0 234 0 12 0 234 0 14 0 237 0 62]
+#[1 0 222 0 12 0 222 0 14 0 241 0 60]
+#[1 0 222 0 12 0 222 0 14 0 245 0 60]
+#[1 0 222 0 12 0 222 0 14 0 249 0 60]
 #[1 0 70 0 12 0 70 0 14 0 253 0 46]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 1 1 0 53]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 1 5 0 53]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 1 9 0 53]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 1 13 0 53]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 1 1 0 53]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 1 5 0 53]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 1 9 0 53]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 1 13 0 53]
+#[1 1 17 0 1 1 21 0 7 0 61 0 19 0 65 0 20 0 73 0 23 0 77 0 25 0 81 0 29 0 85 0 31 1 25 0 32]
 #[0 0 158 0 14]
 #[0 0 154 0 14]
-#[1 1 17 0 7 0 61 0 20 0 69 0 23 0 73 0 25 1 21 0 26 0 77 0 29 1 25 0 30 0 81 0 31 0 85 0 32]
-#[0 0 166 0 14]
 #[0 0 162 0 14]
 #[0 0 170 0 14]
+#[0 0 166 0 14]
 #[0 0 174 0 14]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 29 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 29 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
 #[0 0 114 0 14]
 #[0 0 102 0 14]
 #[0 0 106 0 14]
@@ -1488,13 +1507,13 @@
 #[0 0 86 0 14]
 #[0 0 90 0 14]
 #[0 0 94 0 14]
-#[1 1 37 0 12 1 41 0 14 1 45 0 61]
-#[0 1 49 0 14]
-#[1 1 37 0 12 1 53 0 14 1 45 0 61]
-#[1 1 57 0 12 1 61 0 14 1 65 0 59]
-#[1 1 57 0 12 1 69 0 14 1 65 0 59]
-#[1 1 57 0 12 1 73 0 14 1 65 0 59]
-#[1 1 57 0 12 1 77 0 14 1 65 0 59]
+#[1 1 37 0 12 1 41 0 14 1 45 0 59]
+#[1 1 49 0 12 1 53 0 14 1 57 0 61]
+#[0 1 61 0 14]
+#[1 1 49 0 12 1 65 0 14 1 57 0 61]
+#[1 1 37 0 12 1 69 0 14 1 45 0 59]
+#[1 1 37 0 12 1 73 0 14 1 45 0 59]
+#[1 1 37 0 12 1 77 0 14 1 45 0 59]
 #[1 1 81 0 12 1 85 0 14 1 89 0 56]
 #[0 0 142 0 14]
 #[0 0 138 0 14]
@@ -1502,17 +1521,17 @@
 #[0 0 146 0 14]
 #[0 1 93 0 33]
 #[0 1 97 0 12]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 101 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 101 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
 #[0 0 134 0 14]
 #[0 0 34 0 12 0 63]
-#[0 1 105 0 21]
+#[0 1 105 0 18]
+#[0 0 18 0 12 0 14 0 63]
+#[0 0 226 0 12 0 14]
+#[0 1 109 0 8]
 #[0 0 22 0 12 0 14 0 63]
-#[0 0 230 0 12 0 14]
+#[0 0 238 0 12 0 14]
 #[0 0 30 0 12 0 63]
 #[0 0 26 0 12 0 14 0 63]
-#[0 1 109 0 19]
-#[0 0 18 0 12 0 14 0 63]
-#[0 0 218 0 12 0 14]
 #[0 0 14 0 12 0 14 0 63]
 #[0 0 10 0 12 0 14 0 63]
 #[0 0 6 0 12 0 14 0 63]
@@ -1520,20 +1539,20 @@
 #[1 1 117 0 12 1 121 0 47]
 #[0 0 74 0 12 0 14]
 #[0 1 125 0 12]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 129 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 129 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
 #[0 1 133 0 14]
 #[0 1 137 0 12]
 #[0 1 141 0 12]
 #[0 1 145 0 12]
-#[0 1 149 0 8]
+#[0 1 149 0 2]
 #[0 1 153 0 14]
 #[1 0 122 0 12 0 122 0 14 1 157 0 50]
 #[0 1 161 0 14]
 #[0 0 178 0 14]
-#[0 1 165 0 33]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 169 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 173 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 177 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 165 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[0 1 169 0 33]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 173 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 1 177 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
 #[0 0 38 0 12 0 63]
 #[1 1 181 0 12 1 185 0 14 1 189 0 49]
 #[0 1 193 0 34]
@@ -1545,37 +1564,55 @@
 #[1 1 117 0 12 1 217 0 47]
 #[0 0 126 0 12 0 14]
 #[0 1 221 0 14]
-#[0 1 225 0 34]
-#[1 1 229 0 11 1 233 0 21 1 237 0 33]
-#[0 1 241 0 33]
+#[1 1 225 0 8 1 229 0 11 1 233 0 33]
+#[0 1 237 0 34]
+#[1 1 241 0 7 1 245 0 8 1 249 0 33]
 #[0 0 78 0 14]
-#[0 1 245 0 12]
-#[0 1 249 0 14]
+#[0 1 253 0 12]
+#[0 2 1 0 14]
 #[0 0 182 0 14]
-#[0 1 253 0 14]
-#[0 2 1 0 18]
-#[0 2 5 0 18]
-#[0 2 9 0 18]
-#[0 2 13 0 14]
-#[1 0 137 0 1 0 141 0 2 0 145 0 3 0 149 0 4 0 153 0 5 0 157 0 6 0 161 0 12 0 165 0 15 0 169 0 16 0 173 0 24 0 177 0 27 0 181 0 28 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 2 17 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
+#[0 2 5 0 21]
+#[0 2 9 0 21]
+#[0 2 13 0 21]
+#[0 2 17 0 14]
+#[0 2 21 0 14]
+#[0 2 25 0 14]
+#[0 2 29 0 14]
+#[1 0 137 0 3 0 141 0 4 0 145 0 5 0 149 0 6 0 153 0 12 0 157 0 15 0 161 0 16 0 165 0 24 0 169 0 26 0 173 0 27 0 177 0 28 0 181 0 30 0 185 0 33 0 189 0 38 0 193 0 39 0 197 0 40 2 33 0 48 0 205 0 51 0 209 0 52 0 213 0 53 0 217 0 54 0 221 0 55]
 #[0 0 130 0 14]
-#[0 0 222 0 12 0 14]
-#[0 2 21 0 34]
-#[0 2 25 0 34]
-#[0 2 29 0 34]
+#[0 2 37 0 34]
+#[0 2 41 0 34]
+#[0 2 45 0 34]
+#[0 0 230 0 12 0 14]
+#[0 0 194 0 12 0 14]
+#[0 0 190 0 12 0 14]
 #[0 0 186 0 12 0 14]
-#[0 2 33 0 14]
-#[0 2 37 0 14]
-#[0 2 41 0 14]
-#[0 2 45 0 14]
 #[0 2 49 0 14]
+#[0 2 53 0 14]
+#[0 2 57 0 14]
+#[0 2 61 0 14]
+#[0 2 65 0 14]
+#[0 0 214 0 12 0 14]
+#[0 0 218 0 12 0 14]
 #[0 0 210 0 12 0 14]
-#[0 0 206 0 12 0 14]
-#[0 0 202 0 12 0 14]
 #[0 0 118 0 12 0 14]
 )
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
+!CDefinitionParser methodsFor:'private'!
+
+performReduceMethod: aSymbol with: items 
+
+    | cNode |
+    cNode := super performReduceMethod: aSymbol with: items.
+    (cNode isKindOf: CNode) ifTrue:
+        [cNode line: scanner lineNumber].
+    ^cNode
+
+    "Created: / 10-07-2008 / 15:59:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:05:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionParser methodsFor:'private-error handling'!
--- a/Cface__CDefinitionScanner.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__CDefinitionScanner.st	Thu Jul 10 20:56:08 2008 +0000
@@ -33,7 +33,7 @@
 <comment>       :       \# [^\r\n]* ;
 "
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner class methodsFor:'generated-initialization'!
@@ -41,54 +41,54 @@
 initializeKeywordMap
     keywordMap := Dictionary new.
     #( #(36 'argument' 13)
-     #(36 'array' 26)
-     #(36 'char' 5)
-     #(36 'const' 28)
-     #(36 'double' 16)
+     #(36 'array' 7)
+     #(36 'char' 15)
+     #(36 'const' 30)
+     #(36 'double' 24)
      #(36 'enum' 20)
-     #(36 'field' 19)
-     #(36 'float' 15)
+     #(36 'field' 18)
+     #(36 'float' 27)
      #(36 'function' 11)
-     #(36 'int' 6)
-     #(36 'long' 4)
-     #(36 'return' 8)
-     #(36 'short' 3)
-     #(36 'signed' 1)
-     #(36 'struct' 32)
+     #(36 'int' 16)
+     #(36 'long' 6)
+     #(36 'return' 2)
+     #(36 'short' 5)
+     #(36 'signed' 3)
+     #(36 'struct' 31)
      #(36 'typedef' 22)
-     #(36 'union' 29)
-     #(36 'unsigned' 2)
-     #(36 'value' 21)
-     #(36 'void' 24)
-     #(36 'wchar_t' 27)
+     #(36 'union' 25)
+     #(36 'unsigned' 4)
+     #(36 'value' 8)
+     #(36 'void' 26)
+     #(36 'wchar_t' 28)
      #(33 'argument' 13)
-     #(33 'array' 26)
-     #(33 'char' 5)
-     #(33 'const' 28)
-     #(33 'double' 16)
+     #(33 'array' 7)
+     #(33 'char' 15)
+     #(33 'const' 30)
+     #(33 'double' 24)
      #(33 'enum' 20)
-     #(33 'field' 19)
-     #(33 'float' 15)
+     #(33 'field' 18)
+     #(33 'float' 27)
      #(33 'function' 11)
-     #(33 'int' 6)
-     #(33 'long' 4)
-     #(33 'return' 8)
-     #(33 'short' 3)
-     #(33 'signed' 1)
-     #(33 'struct' 32)
+     #(33 'int' 16)
+     #(33 'long' 6)
+     #(33 'return' 2)
+     #(33 'short' 5)
+     #(33 'signed' 3)
+     #(33 'struct' 31)
      #(33 'typedef' 22)
-     #(33 'union' 29)
-     #(33 'unsigned' 2)
-     #(33 'value' 21)
-     #(33 'void' 24)
-     #(33 'wchar_t' 27) ) 
+     #(33 'union' 25)
+     #(33 'unsigned' 4)
+     #(33 'value' 8)
+     #(33 'void' 26)
+     #(33 'wchar_t' 28) ) 
             do:[:each | 
                 (keywordMap at:each first ifAbsentPut:[ Dictionary new ]) at:(each at:2)
                     put:each last
             ].
     ^ keywordMap
 
-    "Modified: / 09-07-2008 / 21:25:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner methodsFor:'generated-scanner'!
@@ -110,7 +110,7 @@
     ].
     ^ self reportLastMatch
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 scan2
@@ -149,7 +149,7 @@
     ].
     ^ self reportLastMatch
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 scan3
@@ -1185,7 +1185,7 @@
         ^ self reportLastMatch
     ].
     (currentCharacter == $@) ifTrue:[
-        ^ self recordAndReportMatch:#( 18 ).
+        ^ self recordAndReportMatch:#( 21 ).
     ].
     (currentCharacter == $e) ifTrue:[
         self recordMatch:#( 33 36 ).
@@ -1833,7 +1833,7 @@
                                                                 ^ self reportLastMatch
                                                             ].
                                                     (currentCharacter == $e) ifTrue:[
-                                                        self recordMatch:#( 7 36 ).
+                                                        self recordMatch:#( 1 36 ).
                                                         self step.
                                                         (currentCharacter isLetterOrDigit 
                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
@@ -2081,7 +2081,7 @@
                                                     ^ self reportLastMatch
                                                 ].
                                         (currentCharacter == $o) ifTrue:[
-                                            self recordMatch:#( 30 36 ).
+                                            self recordMatch:#( 32 36 ).
                                             self step.
                                             (currentCharacter isLetterOrDigit 
                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
@@ -2420,7 +2420,7 @@
                                                                     ^ self reportLastMatch
                                                                 ].
                                                         (currentCharacter == $n) ifTrue:[
-                                                            self recordMatch:#( 31 36 ).
+                                                            self recordMatch:#( 29 36 ).
                                                             self step.
                                                             (currentCharacter isLetterOrDigit 
                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
@@ -3113,7 +3113,7 @@
                                                                 ^ self reportLastMatch
                                                             ].
                                                     (currentCharacter == $n) ifTrue:[
-                                                        self recordMatch:#( 25 36 ).
+                                                        self recordMatch:#( 19 36 ).
                                                         self step.
                                                         (currentCharacter isLetterOrDigit 
                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
@@ -3154,7 +3154,7 @@
     ].
     ^ self reportLastMatch
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner methodsFor:'generated-tokens'!
@@ -3162,13 +3162,13 @@
 emptySymbolTokenId
 	^63
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 errorTokenId
 	^64
 
-    "Modified: / 09-07-2008 / 21:26:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner class methodsFor:'documentation'!
--- a/Cface__CDerivedTypeNode.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__CDerivedTypeNode.st	Thu Jul 10 20:56:08 2008 +0000
@@ -86,6 +86,8 @@
 !CDerivedTypeNode methodsFor:'printing'!
 
 printOn:stream indent:level 
+
+    self printLineOn: stream indent: level.
     self smalltalkNamespace 
         ifNotNil:[
             stream
@@ -104,7 +106,7 @@
         ].
 
     "Created: / 18-02-2008 / 14:33:01 / janfrog"
-    "Modified: / 10-07-2008 / 08:01:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:05:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDerivedTypeNode methodsFor:'testing'!
--- a/Cface__CFunctionNode.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__CFunctionNode.st	Thu Jul 10 20:56:08 2008 +0000
@@ -162,7 +162,9 @@
 
 !CFunctionNode methodsFor:'printing'!
 
-printOn:stream indent:level 
+printOn:stream indent:level
+
+    self printLineOn: stream indent: level.
     self smalltalkNamespace 
         ifNotNil:[
             stream
@@ -214,7 +216,7 @@
 
     "Created: / 18-02-2008 / 14:27:37 / janfrog"
     "Modified: / 04-03-2008 / 10:57:11 / janfrog"
-    "Modified: / 10-07-2008 / 08:01:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:05:29 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CFunctionNode methodsFor:'private'!
--- a/Cface__CNode.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__CNode.st	Thu Jul 10 20:56:08 2008 +0000
@@ -3,7 +3,7 @@
 "{ NameSpace: Cface }"
 
 Object subclass:#CNode
-	instanceVariableNames:''
+	instanceVariableNames:'line'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Cface-C AST'
@@ -12,6 +12,18 @@
 
 !CNode methodsFor:'accessing'!
 
+line
+    ^ line
+
+    "Created: / 10-07-2008 / 20:05:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+line:something
+    line := something.
+
+    "Created: / 10-07-2008 / 20:05:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
 priority
 
     ^50
@@ -21,6 +33,16 @@
 
 !CNode methodsFor:'printing'!
 
+printLineOn: stream indent: level
+
+    line ifNil:[^self].
+    stream nextPutAll:';; Line: '; nextPutAll: line printString; cr.
+    stream next: level put: Character tab.
+
+    "Created: / 10-07-2008 / 15:58:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:05:31 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
 printOn: stream
 
     self printOn: stream indent: 0
@@ -30,9 +52,11 @@
 
 printOn: stream indent: level
 
+    stream next: level put: Character tab.
     super printOn: stream
 
     "Created: / 17-02-2008 / 18:10:30 / janfrog"
+    "Modified: / 10-07-2008 / 20:05:18 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CNode methodsFor:'testing'!
--- a/Cface__CTypedefNode.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__CTypedefNode.st	Thu Jul 10 20:56:08 2008 +0000
@@ -104,6 +104,7 @@
 
 printOn: stream indent: level
 
+    self printLineOn: stream indent: level.
     stream
         nextPutAll: '(typedef '; cr;
         next: level + 1 put: Character tab; nextPutAll: cName; cr;
@@ -113,6 +114,7 @@
 
     "Created: / 17-02-2008 / 18:13:13 / janfrog"
     "Modified: / 18-02-2008 / 15:12:01 / janfrog"
+    "Modified: / 10-07-2008 / 20:05:26 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CTypedefNode methodsFor:'visiting'!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Cface__SVNMapping.st	Thu Jul 10 20:56:08 2008 +0000
@@ -0,0 +1,76 @@
+"{ Package: 'cvut:fel/cface' }"
+
+"{ NameSpace: Cface }"
+
+TypeMapping subclass:#SVNMapping
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Cface-Mappings'
+!
+
+!SVNMapping methodsFor:'accessing'!
+
+smalltalkClassNameForDerivedType:cType 
+    |svnName|
+
+    svnName := cType cName.
+    svnName = 'svn_client_ctx' ifTrue:[
+        ^ #Context
+    ].
+    (svnName startsWith:'svn_') ifTrue:[
+        svnName := svnName copyFrom:5
+    ].
+    (svnName endsWith:'_t') ifTrue:[
+        svnName := svnName copyTo:(svnName size - 2)
+    ].
+    ^ (self smalltalkize:svnName) capitalized asSymbol
+
+    "
+        Cface::CairoMappings new
+            classForType:(Cface::EnumNode new name:'_cairo_subpixel_order_t')
+
+        Cface::CairoMappings new
+            classForType:(Cface::EnumNode new name:'_cairo_status_t')"
+    "Answers class which should contain function call"
+
+    "Modified: / 17-02-2008 / 22:18:24 / janfrog"
+    "Created: / 10-07-2008 / 20:26:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkNamespaceForDerivedType: type
+
+    (type cName startsWith: 'svn') ifTrue:[^#SVN].
+    (type cName startsWith: 'apr') ifTrue:[^#APR].
+    ^super smalltalkNamespaceForDerivedType: type
+
+    "Created: / 10-07-2008 / 20:26:40 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkPackage
+
+    ^#'stx:goodies/libsvn'
+
+    "Created: / 10-07-2008 / 20:26:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkSelectorForFunction: cFunction
+
+    | selector |
+    selector := cFunction cName.
+    cFunction isFirstArgumentCPointerToCStructure ifTrue:
+        [|firstArgTypeCname|
+        firstArgTypeCname := cFunction arguments first type type cName.
+        (firstArgTypeCname first = $_) ifTrue:
+            [ firstArgTypeCname := firstArgTypeCname copyFrom:2].
+        (selector startsWith:firstArgTypeCname) ifTrue:
+            [selector := selector copyFrom: firstArgTypeCname size + 2]].
+
+    (selector startsWith:'cairo_')
+        ifTrue:[selector := (cFunction cName at: 7) asString , (selector copyFrom: 8)].
+    ^self smalltalkizeSelector: selector forFunction: cFunction.
+
+    "Modified: / 18-02-2008 / 14:58:43 / janfrog"
+    "Created: / 10-07-2008 / 20:26:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
--- a/Cface__TypeCollector.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__TypeCollector.st	Thu Jul 10 20:56:08 2008 +0000
@@ -101,6 +101,7 @@
 visitCTypedefNode: node
 
     | oldNode |
+    node cName = node type cName ifTrue:[^self].
     oldNode := typeMap at: node cName ifAbsent:nil.
     oldNode
         ifNil:
@@ -110,7 +111,7 @@
                     [typeMap at: node cName put: node type]]
 
     "Created: / 12-02-2008 / 22:55:53 / janfrog"
-    "Modified: / 04-07-2008 / 15:03:19 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:10:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 visitCUnionNode: anObject
--- a/Cface__TypeMapper.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__TypeMapper.st	Thu Jul 10 20:56:08 2008 +0000
@@ -65,7 +65,7 @@
 visitCEnumNode:cEnum 
     cEnum isAnonymous ifFalse:[
         cEnum
-            smalltalkNamespace:mappings smalltalkNamespace;
+            smalltalkNamespace:(mappings smalltalkNamespaceForEnum: cEnum);
             smalltalkPackage:(mappings smalltalkPackage);
             smalltalkClassName:(mappings smalltalkClassNameForEnum:cEnum);
             smalltalkCategory: (mappings smalltalkCategoryForEnum: cEnum)
@@ -74,7 +74,7 @@
 
     "Created: / 17-02-2008 / 20:58:53 / janfrog"
     "Modified: / 17-02-2008 / 22:24:58 / janfrog"
-    "Modified: / 10-07-2008 / 08:02:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:25:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 visitCEnumValueNode:cEnum 
@@ -89,13 +89,13 @@
 visitCFunctionNode:cFunction 
     cFunction
         kind:(mappings kindForFunction:cFunction);
-        smalltalkNamespace:mappings smalltalkNamespace;
+        smalltalkNamespace:(mappings smalltalkNamespaceForFunction: cFunction);
         smalltalkClassName:(mappings smalltalkClassNameForFunction:cFunction);
         smalltalkSelector:(mappings smalltalkSelectorForFunction:cFunction).
     super visitCFunctionNode:cFunction
 
     "Created: / 17-02-2008 / 22:10:44 / janfrog"
-    "Modified: / 10-07-2008 / 08:01:27 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:25:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 visitCStructFieldNode: cEnum
@@ -110,7 +110,7 @@
 visitCStructNode:cStruct 
     cStruct isAnonymous ifFalse:[
         cStruct
-            smalltalkNamespace:mappings smalltalkNamespace;
+            smalltalkNamespace:(mappings smalltalkNamespaceForStruct: cStruct);
             smalltalkPackage:(mappings smalltalkPackage);
             smalltalkClassName:(mappings smalltalkClassNameForStruct:cStruct);
             smalltalkCategory: (mappings smalltalkCategoryForStruct: cStruct)
@@ -119,13 +119,13 @@
 
     "Created: / 17-02-2008 / 21:12:55 / janfrog"
     "Modified: / 17-02-2008 / 22:24:51 / janfrog"
-    "Modified: / 10-07-2008 / 08:03:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:25:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 visitCUnionNode:cUnion 
     cUnion isAnonymous ifFalse:[
         cUnion
-            smalltalkNamespace:mappings smalltalkNamespace;
+            smalltalkNamespace:(mappings smalltalkNamespaceForUnion: cUnion);
             smalltalkPackage:(mappings smalltalkPackage);
             smalltalkClassName:(mappings smalltalkClassNameForStruct:cUnion);
             smalltalkCategory: (mappings smalltalkCategoryForUnion: cUnion)
@@ -133,7 +133,7 @@
     super visitCUnionNode:cUnion
 
     "Created: / 17-02-2008 / 22:25:27 / janfrog"
-    "Modified: / 10-07-2008 / 08:03:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:25:56 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !TypeMapper class methodsFor:'documentation'!
--- a/Cface__TypeMapping.st	Thu Jul 10 07:31:14 2008 +0000
+++ b/Cface__TypeMapping.st	Thu Jul 10 20:56:08 2008 +0000
@@ -3,7 +3,7 @@
 "{ NameSpace: Cface }"
 
 Object subclass:#TypeMapping
-	instanceVariableNames:'smalltalkPackage'
+	instanceVariableNames:'smalltalkPackage smalltalkNamespace'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Cface-Mappings'
@@ -33,9 +33,10 @@
 
 smalltalkCategoryForDerivedType:cType 
 
-    ^self smalltalkNamespace , ' - C Types'
+    ^(self smalltalkNamespaceForDerivedType: cType) , ' - C Types'
 
     "Created: / 10-07-2008 / 08:06:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:30:28 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 smalltalkCategoryForEnum: enum
@@ -64,9 +65,10 @@
 !
 
 smalltalkClassNameForDerivedType:cType 
-    ^ self smalltalkize:cType cName
+    ^ (self smalltalkize:cType cName) capitalized asSymbol
 
     "Created: / 10-07-2008 / 08:05:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-07-2008 / 20:29:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 smalltalkClassNameForEnum:cEnum 
@@ -126,9 +128,51 @@
 
 smalltalkNamespace
 
-    ^#Smalltalk
+    ^smalltalkNamespace ? #Smalltalk
 
     "Created: / 17-02-2008 / 20:51:05 / janfrog"
+    "Modified: / 10-07-2008 / 20:34:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkNamespace:something
+    smalltalkNamespace := something.
+
+    "Created: / 10-07-2008 / 20:23:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkNamespaceForDerivedType: cType
+
+    ^self smalltalkNamespace
+
+    "Created: / 10-07-2008 / 20:23:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkNamespaceForEnum: cType
+
+    ^self smalltalkNamespaceForDerivedType: cType
+
+    "Created: / 10-07-2008 / 20:24:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkNamespaceForFunction: cType
+
+    ^self smalltalkNamespaceForDerivedType: cType
+
+    "Created: / 10-07-2008 / 20:24:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkNamespaceForStruct: cType
+
+    ^self smalltalkNamespaceForDerivedType: cType
+
+    "Created: / 10-07-2008 / 20:24:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+smalltalkNamespaceForUnion: cType
+
+    ^self smalltalkNamespaceForDerivedType: cType
+
+    "Created: / 10-07-2008 / 20:24:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 smalltalkPackage