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
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
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:
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;'