class AttribArray(Type):
- def __init__(self, keyType, valueTypes, isConst = True):
- if isConst:
- Type.__init__(self, (Pointer(Const(Int))).expr)
- else:
- Type.__init__(self, (Pointer(Int)).expr)
- self.type = (Pointer(Const(Int))) # for function prototypes and such
- self.keyType = keyType
+ def __init__(self, baseType, valueTypes, terminator = '0'):
+ self.baseType = baseType
+ Type.__init__(self, (Pointer(self.baseType)).expr)
self.valueTypes = valueTypes
+ self.terminator = terminator
+ self.hasKeysWithoutValues = False
+ for key, value in valueTypes:
+ if value is None:
+ self.hasKeysWithoutValues = True
def visit(self, visitor, *args, **kwargs):
return visitor.visitAttribArray(self, *args, **kwargs)
def visitAttribArray(self, attribs, *args, **kwargs):
for key, valueType in attribs.valueTypes:
- self.visit(valueType, *args, **kwargs)
+ if valueType is not None:
+ self.visit(valueType, *args, **kwargs)
def visitBlob(self, array, *args, **kwargs):
pass