コード例 #1
0
ファイル: call_parser.py プロジェクト: patelhardik/patrace
 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('    }')
コード例 #2
0
 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 '    }'
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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)
コード例 #6
0
    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 '    }'
コード例 #7
0
ファイル: call_parser.py プロジェクト: zhyh329/patrace
 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 '    }'