def visitArray(self, array, arg, name, func): eleSerialType = stdapi.getSerializationType(array.type) print(' pValueTM->mType = Array_Type;') if stdapi.isString(array.type): print(' pValueTM->mEleType = String_Type;') print(' Array<const char*> %s; // string array' % (name)) print(' _src = ReadStringArray(_src, %s);' % (name)) else: print(' pValueTM->mEleType = %s;' % literalToType[eleSerialType.__str__()]) print(' Array<%s> %s; // array' % (eleSerialType, name)) print(' _src = Read1DArray(_src, %s);' % (name)) print(' pValueTM->mArrayLen = %s.cnt;' % name) print(' if (pValueTM->mArrayLen) {') print(' pValueTM->mArray = new ValueTM[pValueTM->mArrayLen];') print( ' for (unsigned int i = 0; i < pValueTM->mArrayLen; i++) {') if stdapi.isString(array.type): print(' pValueTM->mArray[i].mType = String_Type;') print(' pValueTM->mArray[i].mStr = %s.v[i];' % name) else: print(' pValueTM->mArray[i].mType = %s;' % literalToType[eleSerialType.__str__()]) print(' pValueTM->mArray[i].%s = %s.v[i];' % (literalToMember[eleSerialType.__str__()], name)) print(' }') print(' } else {') print(' pValueTM->mArray = NULL;') print(' }')
def visitPointer(self, pointer, name, func): print ' if (%s) {' % name print ' dest = WriteFixed<unsigned int>(dest, 1); // valid pointer' print ' dest = WriteFixed<%s>(dest, *%s); // pointer' % (stdapi.getSerializationType(pointer.type), name) print ' } else {' print ' dest = WriteFixed<unsigned int>(dest, 0); // NULL pointer' print ' }'
def visitPointer(self, pointer, arg, name, func): print ' %s* %s; // pointer' % (pointer.type, name) print ' unsigned int isValidPtr;' print ' _src = ReadFixed(_src, isValidPtr);' print ' if (isValidPtr)' print ' _src = ReadFixed<%s>(_src, %s)' % ( stdapi.getSerializationType(pointer.type), name)
def visitArray(self, array, arg, name, func): eleSerialType = stdapi.getSerializationType(array.type) if isString(array.type): print ' Array<const char*> %s; // string array' % (name) print ' _src = ReadStringArray(_src, %s);' % (name) #print ' for (unsigned int i = 0; i < %s.cnt; ++i)' % (name) #print ' DBG_LOG("%%s", %s.v[i]);' % (name) else: print ' Array<%s> %s; // array' % (eleSerialType, name) print ' _src = Read1DArray(_src, %s);' % (name)
def visitArray(self, array, name, func): eleSerialType = stdapi.getSerializationType(array.type) if stdapi.isString(array.type): print ' dest = WriteStringArray(dest, %s, %s); // string array' % (array.length, name) elif func.name == "glGetSynciv": print ' if (%s) {' % array.length print ' dest = Write1DArray<%s>(dest, *%s, (%s*)%s); // array' % (eleSerialType, array.length, eleSerialType, name) print ' } else {' print ' dest = Write1DArray<%s>(dest, 0, (%s*)%s); // array size is 0' % (eleSerialType, eleSerialType, name) print ' }' else: print ' dest = Write1DArray<%s>(dest, %s, (%s*)%s); // array' % (eleSerialType, array.length, eleSerialType, name)
def visitArray(self, array, arg, lvalue, rvalue): if not isinstance(array.type.type, stdapi.Handle): return datatype = stdapi.getSerializationType(array.type) print ' {datatype}* {newname} = {oldname}.v;'.format( datatype=datatype, newname=lvalue, oldname=rvalue) print ' for (unsigned int i = 0; i < %s.cnt; ++i) {' % (rvalue) self.inLoop = True self.visit(array.type, arg, lvalue + '[i]', rvalue + '[i]') print ' }'
def visitPointer(self, pointer, arg, name, func): print ' pValueTM->mType = Pointer_Type;' ptrSerialType = stdapi.getSerializationType(pointer.type) print ' %s %s; // pointer' % (ptrSerialType, name) print ' unsigned int isValidPtr;' print ' _src = ReadFixed(_src, isValidPtr);' print ' if (isValidPtr) {' print ' _src = ReadFixed<%s>(_src, %s);' % (ptrSerialType, name) print ' pValueTM->mPointer = new ValueTM;' print ' pValueTM->mPointer->mType = %s;' % literalToType[ ptrSerialType.__str__()] print ' pValueTM->mPointer->%s = %s;' % ( literalToMember[ptrSerialType.__str__()], name) print ' } else {' print ' pValueTM->mPointer = NULL;' print ' }'