use bytes for code & fields
This commit is contained in:
48
blendfile.py
48
blendfile.py
@@ -309,8 +309,8 @@ class BlendFileHeader:
|
|||||||
else:
|
else:
|
||||||
assert(0)
|
assert(0)
|
||||||
|
|
||||||
tVersion = values[3].decode()
|
version_id = values[3].decode()
|
||||||
self.version = int(tVersion)
|
self.version = int(version_id)
|
||||||
|
|
||||||
def create_block_header_struct(self):
|
def create_block_header_struct(self):
|
||||||
return BLOCKHEADERSTRUCT[self.endian_str + str(self.pointer_size)]
|
return BLOCKHEADERSTRUCT[self.endian_str + str(self.pointer_size)]
|
||||||
@@ -343,7 +343,7 @@ class DNACatalog:
|
|||||||
|
|
||||||
log.debug("building #%d names" % names_len)
|
log.debug("building #%d names" % names_len)
|
||||||
for i in range(names_len):
|
for i in range(names_len):
|
||||||
tName = DNA_IO.read_string0(data, offset)
|
tName = DNA_IO.read_bytes0(data, offset)
|
||||||
offset = offset + len(tName) + 1
|
offset = offset + len(tName) + 1
|
||||||
self.names.append(DNAName(tName))
|
self.names.append(DNAName(tName))
|
||||||
del names_len
|
del names_len
|
||||||
@@ -354,7 +354,7 @@ class DNACatalog:
|
|||||||
offset += 4
|
offset += 4
|
||||||
log.debug("building #%d types" % types_len)
|
log.debug("building #%d types" % types_len)
|
||||||
for i in range(types_len):
|
for i in range(types_len):
|
||||||
tType = DNA_IO.read_string0(data, offset)
|
tType = DNA_IO.read_bytes0(data, offset)
|
||||||
self.types.append([tType, 0, None])
|
self.types.append([tType, 0, None])
|
||||||
offset += len(tType) + 1
|
offset += len(tType) + 1
|
||||||
|
|
||||||
@@ -407,7 +407,6 @@ class DNAName:
|
|||||||
"is_pointer",
|
"is_pointer",
|
||||||
"is_method_pointer",
|
"is_method_pointer",
|
||||||
"array_size",
|
"array_size",
|
||||||
"_SN", # TODO, investigate why this is needed!
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, aName):
|
def __init__(self, aName):
|
||||||
@@ -419,40 +418,39 @@ class DNAName:
|
|||||||
|
|
||||||
def as_reference(self, parent):
|
def as_reference(self, parent):
|
||||||
if parent is None:
|
if parent is None:
|
||||||
result = ""
|
result = b''
|
||||||
else:
|
else:
|
||||||
result = parent + "."
|
result = parent + b'.'
|
||||||
|
|
||||||
result = result + self.name_short
|
result = result + self.name_short
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def calc_name_short(self):
|
def calc_name_short(self):
|
||||||
result = self.name
|
result = self.name
|
||||||
result = result.replace("*", "")
|
result = result.replace(b'*', b'')
|
||||||
result = result.replace("(", "")
|
result = result.replace(b'(', b'')
|
||||||
result = result.replace(")", "")
|
result = result.replace(b')', b'')
|
||||||
index = result.find("[")
|
index = result.find(b'[')
|
||||||
if index != -1:
|
if index != -1:
|
||||||
result = result[:index]
|
result = result[:index]
|
||||||
self._SN = result
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def calc_is_pointer(self):
|
def calc_is_pointer(self):
|
||||||
return self.name.find("*") > -1
|
return (b'*' in self.name)
|
||||||
|
|
||||||
def calc_is_method_pointer(self):
|
def calc_is_method_pointer(self):
|
||||||
return self.name.find("(*") > -1
|
return (b'(*' in self.name)
|
||||||
|
|
||||||
def calc_array_size(self):
|
def calc_array_size(self):
|
||||||
result = 1
|
result = 1
|
||||||
temp = self.name
|
temp = self.name
|
||||||
index = temp.find("[")
|
index = temp.find(b'[')
|
||||||
|
|
||||||
while index != -1:
|
while index != -1:
|
||||||
index_2 = temp.find("]")
|
index_2 = temp.find(b']')
|
||||||
result *= int(temp[index + 1:index_2])
|
result *= int(temp[index + 1:index_2])
|
||||||
temp = temp[index_2 + 1:]
|
temp = temp[index_2 + 1:]
|
||||||
index = temp.find("[")
|
index = temp.find(b'[')
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -472,7 +470,8 @@ class DNAStructure:
|
|||||||
self.fields = []
|
self.fields = []
|
||||||
|
|
||||||
def field_get(self, header, handle, path):
|
def field_get(self, header, handle, path):
|
||||||
splitted = path.partition(".")
|
assert(type(path) == bytes)
|
||||||
|
splitted = path.partition(b'.')
|
||||||
name = splitted[0]
|
name = splitted[0]
|
||||||
rest = splitted[2]
|
rest = splitted[2]
|
||||||
offset = 0
|
offset = 0
|
||||||
@@ -485,13 +484,13 @@ class DNAStructure:
|
|||||||
|
|
||||||
if fname.is_pointer:
|
if fname.is_pointer:
|
||||||
return DNA_IO.read_pointer(handle, header)
|
return DNA_IO.read_pointer(handle, header)
|
||||||
elif ftype[0] == "int":
|
elif ftype[0] == b'int':
|
||||||
return DNA_IO.read_int(handle, header)
|
return DNA_IO.read_int(handle, header)
|
||||||
elif ftype[0] == "short":
|
elif ftype[0] == b'short':
|
||||||
return DNA_IO.read_short(handle, header)
|
return DNA_IO.read_short(handle, header)
|
||||||
elif ftype[0] == "float":
|
elif ftype[0] == b'float':
|
||||||
return DNA_IO.read_float(handle, header)
|
return DNA_IO.read_float(handle, header)
|
||||||
elif ftype[0] == "char":
|
elif ftype[0] == b'char':
|
||||||
return DNA_IO.read_string(handle, fname.array_size)
|
return DNA_IO.read_string(handle, fname.array_size)
|
||||||
else:
|
else:
|
||||||
return ftype[2].field_get(header, handle, rest)
|
return ftype[2].field_get(header, handle, rest)
|
||||||
@@ -502,7 +501,8 @@ class DNAStructure:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def field_set(self, header, handle, path, value):
|
def field_set(self, header, handle, path, value):
|
||||||
splitted = path.partition(".")
|
assert(type(path) == bytes)
|
||||||
|
splitted = path.partition(b'.')
|
||||||
name = splitted[0]
|
name = splitted[0]
|
||||||
rest = splitted[2]
|
rest = splitted[2]
|
||||||
offset = 0
|
offset = 0
|
||||||
@@ -512,7 +512,7 @@ class DNAStructure:
|
|||||||
handle.seek(offset, os.SEEK_CUR)
|
handle.seek(offset, os.SEEK_CUR)
|
||||||
ftype = field[0]
|
ftype = field[0]
|
||||||
if len(rest) == 0:
|
if len(rest) == 0:
|
||||||
if ftype[0] == "char":
|
if ftype[0] == b'char':
|
||||||
if type(value) is str:
|
if type(value) is str:
|
||||||
return DNA_IO.write_string(handle, value, fname.array_size)
|
return DNA_IO.write_string(handle, value, fname.array_size)
|
||||||
else:
|
else:
|
||||||
|
Reference in New Issue
Block a user