long long, long long int etc. types
authorClaus Gittinger <cg@exept.de>
Thu, 05 Nov 2009 11:29:49 +0100
changeset 2233 bdfb7e25e14b
parent 2232 8718a50a9325
child 2234 c03b9d60b876
long long, long long int etc. types
Parser.st
--- a/Parser.st	Wed Nov 04 17:49:50 2009 +0100
+++ b/Parser.st	Thu Nov 05 11:29:49 2009 +0100
@@ -9393,14 +9393,46 @@
          ]
     ].
 
+    (tokenType == #Identifier and:[tokenName = 'long']) ifTrue:[
+        "/ long long
+        (type = 'long') ifTrue:[
+            "/ long long
+            typeName := 'longLong'.
+            self nextToken.
+        ].
+        "/ unsigned long
+        (type = 'unsigned') ifTrue:[
+            "/ unsigned long
+            typeName := 'ulong'.
+            self nextToken.
+        ].
+    ].
+    (tokenType == #Identifier and:[tokenName = 'int']) ifTrue:[
+        "/ long long int
+        "/ unsigned int
+        "/ long int
+        ( #('longLong' 'unsigned' 'long') includes: typeName) ifTrue:[
+            self nextToken.
+        ].
+    ].
+    (tokenType == #Identifier and:[tokenName = 'unsigned']) ifTrue:[
+        "/ long long unsigned
+        "/ int unsigned
+        "/ long unsigned
+        ( #('longLong' 'int' 'long') includes: typeName) ifTrue:[
+            typeName := 'u',typeName.
+            self nextToken.
+        ].
+    ].
+
     type := self typeMappingFor:typeName.
-    [(tokenType = $*) 
-        or:[((tokenType == #BinaryOperator) and:[tokenName = '*'])
-        or:[((tokenType == #BinaryOperator) and:[tokenName = '**'])
-        or:[((tokenType == #BinaryOperator) and:[tokenName = '***'])]]]
+
+    [
+        (tokenType = $*) 
+        or:[((tokenType == #BinaryOperator) and:[tokenName conform:[:ch | ch = '*']])]
     ] whileTrue:[
-        type := self pointerTypeMappingFor:type.
-        tokenName = '**' ifTrue:[
+        "/ that many indirections added
+        tokenName size timesRepeat:[
             type := self pointerTypeMappingFor:type.
         ].
         self nextToken.
@@ -9542,8 +9574,11 @@
         (uint8           uint8Pointer   )
         (uint16          uint16Pointer  )
         (uint32          uint32Pointer  )
+        (uint64          uint64Pointer  )
+        (int8            int8Pointer   )
         (int16           int16Pointer   )
         (int32           int32Pointer   )
+        (int64           int64Pointer   )
         (int             intPointer     )
         (short           shortPointer   )
         (ushort          ushortPointer  )
@@ -9676,11 +9711,11 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.617 2009-11-04 16:49:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.618 2009-11-05 10:29:49 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.617 2009-11-04 16:49:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.618 2009-11-05 10:29:49 cg Exp $'
 ! !
 
 Parser initialize!