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: 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: