示例#1
0
    def parse_list(self, fileptr, identifier):
        size_field = fileptr.read(4)
        list_identifier = fileptr.read(4)

        size = get_chunk_size(size_field)
        offset = fileptr.tell()

        if list_identifier == 'cmpr':
            fileptr.seek(offset)
            self.stream_start = offset
            self.stream_size = get_chunk_size(size_field)
            chunk = fileptr.read(size - 4)
            return self.parse_cmpr_list(identifier + size_field + \
                                        list_identifier + chunk)

        class_ = self.get_class(identifier, list_identifier)
        obj = class_(identifier + size_field + list_identifier)

        while fileptr.tell() <= offset + size - 8:
            ret = self.parse_stream(fileptr)
            if ret is None:
                fileptr.seek(offset)
                chunk = fileptr.read(size - 4)
                return model.RiffUnparsedList(identifier + size_field + \
                                              list_identifier + chunk)
            else:
                obj.childs.append(ret)

        return obj
示例#2
0
	def parse_list(self, fileptr, identifier):
		size_field = fileptr.read(4)
		list_identifier = fileptr.read(4)

		size = get_chunk_size(size_field)
		offset = fileptr.tell()

		if list_identifier == 'cmpr':
			fileptr.seek(offset)
			self.stream_start = offset
			self.stream_size = get_chunk_size(size_field)
			chunk = fileptr.read(size - 4)
			return self.parse_cmpr_list(identifier + size_field + \
									list_identifier + chunk)

		class_ = self.get_class(identifier, list_identifier)
		obj = class_(identifier + size_field + list_identifier)

		while fileptr.tell() <= offset + size - 8:
			ret = self.parse_stream(fileptr)
			if ret is None:
				fileptr.seek(offset)
				chunk = fileptr.read(size - 4)
				return model.RiffUnparsedList(identifier + size_field + \
										list_identifier + chunk)
			else:
				obj.childs.append(ret)

		return obj
示例#3
0
 def parse_object(self, fileptr, identifier):
     if not identifier[:3].isalnum():
         return None
     size_field = fileptr.read(4)
     size = get_chunk_size(size_field)
     chunk = fileptr.read(size)
     return model.RiffObject(identifier + size_field + chunk)
示例#4
0
	def parse_object(self, fileptr, identifier):
		if not identifier[:3].isalnum():
			return None
		size_field = fileptr.read(4)
		size = get_chunk_size(size_field)
		chunk = fileptr.read(size)
		return model.RiffObject(identifier + size_field + chunk)
示例#5
0
	def parse_object(self, file, identifier):
		if not identifier[:3].isalnum():
			return None
		size_field = file.read(4)
		size = get_chunk_size(size_field)
		chunk = file.read(size)
		class_ = self.get_class(identifier)
		return class_(identifier + size_field + chunk)
示例#6
0
 def parse_object(self, file, identifier):
     if not identifier[:3].isalnum():
         return None
     size_field = file.read(4)
     size = get_chunk_size(size_field)
     chunk = file.read(size)
     class_ = self.get_class(identifier)
     return class_(identifier + size_field + chunk)
示例#7
0
 def parse_object(self, fileptr, identifier):
     if not identifier[:3].isalnum():
         return None
     size_field = fileptr.read(4)
     size = get_chunk_size(size_field)
     chunk = fileptr.read(size)
     self.report_position(fileptr.tell())
     class_ = self.get_class(identifier)
     return class_(identifier + size_field + chunk)
示例#8
0
	def parse_object(self, fileptr, identifier):
		if not identifier[:3].isalnum():
			return None
		size_field = fileptr.read(4)
		size = get_chunk_size(size_field)
		chunk = fileptr.read(size)
		self.report_position(fileptr.tell())
		class_ = self.get_class(identifier)
		return class_(identifier + size_field + chunk)
示例#9
0
    def parse_file(self, fileptr):
        identifier = fileptr.read(4)
        size_field = fileptr.read(4)
        list_identifier = fileptr.read(4)
        obj = model.RiffRootList(identifier + size_field + list_identifier)

        size = get_chunk_size(size_field)
        while fileptr.tell() < size + 8:
            ret = self.parse_stream(fileptr)
            obj.childs.append(ret)

        return obj
示例#10
0
	def parse_file(self, fileptr):
		identifier = fileptr.read(4)
		size_field = fileptr.read(4)
		list_identifier = fileptr.read(4)
		obj = model.RiffRootList(identifier + size_field + list_identifier)

		size = get_chunk_size(size_field)
		while fileptr.tell() < size + 8:
			ret = self.parse_stream(fileptr)
			obj.childs.append(ret)

		return obj
示例#11
0
	def parse_file(self, file):
		identifier = file.read(4)
		size_field = file.read(4)
		list_identifier = file.read(4)
		self.version = list_identifier
		self.obj_map = generic_dict
		obj = model.RiffRootList(identifier + size_field + list_identifier)

		size = get_chunk_size(size_field)
		while file.tell() < size + 8:
			ret = self.parse_stream(file)
			obj.childs.append(ret)

		return obj
示例#12
0
    def parse_file(self, file):
        identifier = file.read(4)
        size_field = file.read(4)
        list_identifier = file.read(4)
        self.version = list_identifier
        self.obj_map = generic_dict
        obj = model.RiffRootList(identifier + size_field + list_identifier)

        size = get_chunk_size(size_field)
        while file.tell() < size + 8:
            ret = self.parse_stream(file)
            obj.childs.append(ret)

        return obj
示例#13
0
    def parse_pack(self, fileptr, identifier):
        size_field = fileptr.read(4)
        size = get_chunk_size(size_field)
        chunk = fileptr.read(size)
        obj = model.RiffPackObject(identifier + size_field + chunk)

        import StringIO, zlib
        decomp = zlib.decompressobj()
        uncompresseddata = decomp.decompress(chunk[12:])
        stream = StringIO.StringIO(uncompresseddata)

        while stream.tell() < len(uncompresseddata):
            ret = self.parse_stream(stream)
            obj.childs.append(ret)

        return obj
示例#14
0
	def parse_pack(self, fileptr, identifier):
		size_field = fileptr.read(4)
		size = get_chunk_size(size_field)
		chunk = fileptr.read(size)
		obj = model.RiffPackObject(identifier + size_field + chunk)

		import StringIO, zlib
		decomp = zlib.decompressobj()
		uncompresseddata = decomp.decompress(chunk[12:])
		stream = StringIO.StringIO(uncompresseddata)

		while stream.tell() < len(uncompresseddata):
			ret = self.parse_stream(stream)
			obj.childs.append(ret)

		return obj