]> git.cworth.org Git - apitrace/commitdiff
Allow float-based attrib_lists as found in WGL.
authorAndreas Hartmetz <ahartmetz@gmail.com>
Fri, 12 Jul 2013 09:37:35 +0000 (11:37 +0200)
committerAndreas Hartmetz <ahartmetz@gmail.com>
Sat, 13 Jul 2013 13:15:05 +0000 (15:15 +0200)
It also turns out that no "type" member is needed in AttribArray,
so remove it.

specs/stdapi.py
wrappers/trace.py

index 88711e1af10f713ad0f02c8f8e7d542e70701301..5cf1a37def1295c08620014332487f5539298876 100644 (file)
@@ -272,12 +272,14 @@ class Array(Type):
 
 class AttribArray(Type):
 
-    def __init__(self, keyType, valueTypes, isConst = True, terminator = '0'):
+    def __init__(self, keyType, valueTypes, isConst = True, punType = None, terminator = '0'):
+        self.baseType = Int
+        if punType is not None:
+            self.baseType = punType
         if isConst:
-            Type.__init__(self, (Pointer(Const(Int))).expr)
+            Type.__init__(self, (Pointer(Const(self.baseType))).expr)
         else:
-            Type.__init__(self, (Pointer(Int)).expr)
-        self.type = (Pointer(Const(Int))) # for function prototypes and such
+            Type.__init__(self, (Pointer(self.baseType)).expr)
         self.keyType = keyType
         self.valueTypes = valueTypes
         self.terminator = terminator
index 9bacf8a2ff5b4d04bdc1c2f9827b1ac34a3283d0..adfc764bff3259df9d12cff8783a721e564f0acb 100644 (file)
@@ -217,7 +217,7 @@ class ValueSerializer(stdapi.Visitor, stdapi.ExpanderMixin):
         print '    for (%(c)s = 0; %(array)s && %(array)s[%(c)s] != %(terminator)s; %(c)s += 2) {' \
               % {'c': count, 'array': instance, 'terminator': array.terminator}
         if array.hasKeysWithoutValues:
-            print '        switch (%(array)s[%(c)s]) {' % {'array': instance, 'c': count}
+            print '        switch (int(%(array)s[%(c)s])) {' % {'array': instance, 'c': count}
             for key, valueType in array.valueTypes:
                 if valueType is None:
                     print '        case %s:' % key
@@ -238,7 +238,7 @@ class ValueSerializer(stdapi.Visitor, stdapi.ExpanderMixin):
         print '        if (%(i)s + 1 >= %(count)s) {' % {'i': index, 'count': count}
         print '            break;'
         print '        }'
-        print '        switch (%(array)s[%(i)s++]) {' % {'array': instance, 'i': index}
+        print '        switch (int(%(array)s[%(i)s++])) {' % {'array': instance, 'i': index}
         # write generic value the usual way
         for key, valueType in array.valueTypes:
             if valueType is not None:
@@ -258,7 +258,7 @@ class ValueSerializer(stdapi.Visitor, stdapi.ExpanderMixin):
         print '        default:'
         print '            trace::localWriter.beginElement();'
         print '            os::log("apitrace: warning: %s: unknown key 0x%04X, interpreting value as int\\n", ' + \
-                           '__FUNCTION__, %(array)s[%(i)s]);'  % {'array': instance, 'i': index}
+                           '__FUNCTION__, int(%(array)s[%(i)s]));'  % {'array': instance, 'i': index}
         print '            trace::localWriter.writeSInt(%(array)s[%(i)s]);' % {'array': instance, 'i': index}
         print '            trace::localWriter.endElement();'
         print '            break;'