def to_bytes(tag): out_stream = ABCFileOutputStream() out_stream.write(TagHeaderConverter.to_bytes(tag.type, tag.header)) out_stream.writeUI16(tag.characterId) out_stream.writeUI32(tag.reserved) out_stream.write(tag.data) return out_stream.getvalue()
def to_bytes(tag): out_stream = ABCFileOutputStream() out_stream.write(TagHeaderConverter.to_bytes(tag.type, tag.header)) out_stream.writeUI16(len(tag.symbols)) for symbol in tag.symbols: out_stream.writeUI16(symbol.tagId) out_stream.write(symbol.name + '\x00') return out_stream.getvalue()
def to_bytes(class_): out_stream = ABCFileOutputStream() out_stream.writeU30(class_.cinit) trait_count = len(class_.traits) out_stream.writeU30(trait_count) for trait in class_.traits: trait_bytes = StTraitConverter.to_bytes(trait) out_stream.write(trait_bytes) return out_stream.getvalue()
def to_bytes(instance): out_stream = ABCFileOutputStream() out_stream.writeU30(instance.name) out_stream.writeU30(instance.super_name) out_stream.writeU8(instance.flags) if instance.flags & StInstanceInfo.CONSTANT_ClassProtectedNs: out_stream.writeU30(instance.protectedNs) out_stream.writeU30(instance.intrf_count) for interf in instance.interfaces: out_stream.writeU30(interf) out_stream.writeU30(instance.iinit) # Trait out_stream.writeU30(instance.trait_count) for trait in instance.traits: trait_bytes = StTraitConverter.to_bytes(trait) out_stream.write(trait_bytes) return out_stream.getvalue()
def to_bytes(tag): out_stream = ABCFileOutputStream() out_stream.write(TagHeaderConverter.to_bytes(tag.type, tag.header)) out_stream.writeSI32(tag.lazyInitializeFlag) out_stream.write(tag.abcName + '\x00') out_stream.write(tag.bytes) return out_stream.getvalue()
def to_bytes(body): out_stream = ABCFileOutputStream() out_stream.writeU30(body.method) out_stream.writeU30(body.max_stack) out_stream.writeU30(body.local_count) out_stream.writeU30(body.init_scope_depth) out_stream.writeU30(body.max_scope_depth) code_length = len(body.code) out_stream.writeU30(code_length) out_stream.write(body.code) exception_count = len(body.exceptions) out_stream.writeU30(exception_count) for exception in body.exceptions: out_stream.writeU30(exception.from_) out_stream.writeU30(exception.to) out_stream.writeU30(exception.target) out_stream.writeU30(exception.exc_type) out_stream.writeU30(exception.var_name) trait_count = len(body.traits) out_stream.writeU30(trait_count) for trait in body.traits: trait_bytes = StTraitConverter.to_bytes(trait) out_stream.write(trait_bytes) return out_stream.getvalue()
def to_bytes(pool): out_stream = ABCFileOutputStream() count = len(pool.integers) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for integer in pool.integers[1:]: out_stream.writeS32(integer) count = len(pool.uintegers) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for uinteger in pool.uintegers[1:]: out_stream.writeU32(uinteger) count = len(pool.doubles) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for d in pool.doubles[1:]: out_stream.writeD64(d) count = len(pool._strings) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for s in pool._strings[1:]: str_size = len(s) out_stream.writeU30(str_size) out_stream.write(s) count = len(pool._namespaces) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for kind, name in pool._namespaces[1:]: out_stream.writeU8(kind) out_stream.writeU30(name) count = len(pool._ns_sets) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for ns_set in pool._ns_sets[1:]: ns_count = len(ns_set) out_stream.writeU30(ns_count) for ns in ns_set: out_stream.writeU30(ns) count = len(pool._multinames) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for multiname in pool._multinames[1:]: m_bytes = MultinameConverter.to_bytes(multiname) out_stream.write(m_bytes) return out_stream.getvalue()
def to_bytes(abcfile): out_stream = ABCFileOutputStream() out_stream.writeU16(abcfile._version['minor']) out_stream.writeU16(abcfile._version['major']) pool_bytes = ConstantPoolConverter.to_bytes(abcfile.const_pool) out_stream.write(pool_bytes) # method count = len(abcfile.methods) out_stream.writeU30(count) for method in abcfile.methods: method_bytes = StMethodInfoConverter.to_bytes(method) out_stream.write(method_bytes) # metadata count = len(abcfile.metadatas) out_stream.writeU30(count) for metadata in abcfile.metadatas: out_stream.writeU30(metadata['name']) item_count = len(metadata['items']) out_stream.writeU30(item_count) for item in metadata['items']: out_stream.writeU30(item['key']) out_stream.writeU30(item['value']) # class/instance count = len(abcfile.instances) out_stream.writeU30(count) for instance in abcfile.instances: instance_bytes = StInstanceInfoConverter.to_bytes(instance) out_stream.write(instance_bytes) for class_ in abcfile.classes: class_bytes = StClassInfoConverter.to_bytes(class_) out_stream.write(class_bytes) # script count = len(abcfile.scripts) out_stream.writeU30(count) for script in abcfile.scripts: out_stream.writeU30(script['init']) trait_count = len(script['traits']) out_stream.writeU30(trait_count) for trait in script['traits']: trait_bytes = StTraitConverter.to_bytes(trait) out_stream.write(trait_bytes) # method body count = len(abcfile.method_bodies) out_stream.writeU30(count) for body in abcfile.method_bodies: body_bytes = StMethodBodyConverter.to_bytes(body) out_stream.write(body_bytes) return out_stream.getvalue()