use bytes for code & fields

This commit is contained in:
2014-10-14 12:44:54 +02:00
parent e48d3ea656
commit 2480ded40d

View File

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