118 .format(sDataType)) |
118 .format(sDataType)) |
119 self.__data.read(6) |
119 self.__data.read(6) |
120 lenSolName, = struct.unpack(">H", self.__data.read(2)) |
120 lenSolName, = struct.unpack(">H", self.__data.read(2)) |
121 # unsigned short, big-endian |
121 # unsigned short, big-endian |
122 solName = self.__data.read(lenSolName) |
122 solName = self.__data.read(lenSolName) |
123 solName = solName.decode("utf-8") |
123 solName = solName.decode("utf-8", "replace") |
124 self.__result["SolName"] = ("string", solName) |
124 self.__result["SolName"] = ("string", solName) |
125 self.__data.read(4) |
125 self.__data.read(4) |
126 while self.__data.tell() < lenSolData: |
126 while self.__data.tell() < lenSolData: |
127 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
127 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
128 # unsigned short, big-endian |
128 # unsigned short, big-endian |
129 variableName = self.__data.read(lenVariableName) |
129 variableName = self.__data.read(lenVariableName) |
130 variableName = variableName.decode("utf-8") |
130 variableName = variableName.decode("utf-8", "replace") |
131 variableType = self.__data.read(1) |
131 variableType = self.__data.read(1) |
132 if len(variableType): |
132 if len(variableType): |
133 if variableType == self.Number: |
133 if variableType == self.Number: |
134 self.__parseNumber(variableName, self.__result) |
134 self.__parseNumber(variableName, self.__result) |
135 elif variableType == self.Boolean: |
135 elif variableType == self.Boolean: |
209 @type dict |
209 @type dict |
210 """ |
210 """ |
211 lenStr, = struct.unpack(">H", self.__data.read(2)) |
211 lenStr, = struct.unpack(">H", self.__data.read(2)) |
212 # unsigned short, big-endian |
212 # unsigned short, big-endian |
213 b = self.__data.read(lenStr) |
213 b = self.__data.read(lenStr) |
214 value = b.decode("utf-8") |
214 value = b.decode("utf-8", "replace") |
215 parent[variableName] = ("string", value) |
215 parent[variableName] = ("string", value) |
216 |
216 |
217 def __parseDate(self, variableName, parent): |
217 def __parseDate(self, variableName, parent): |
218 """ |
218 """ |
219 Private method to parse a date. |
219 Private method to parse a date. |
247 @type dict |
247 @type dict |
248 """ |
248 """ |
249 lenCData, = struct.unpack(">L", self.__data.read(4)) |
249 lenCData, = struct.unpack(">L", self.__data.read(4)) |
250 # unsigned long, big-endian |
250 # unsigned long, big-endian |
251 cData = self.__data.read(lenCData) |
251 cData = self.__data.read(lenCData) |
252 value = cData.decode("utf-8") |
252 value = cData.decode("utf-8", "replace") |
253 parent[variableName] = ("xml", value) |
253 parent[variableName] = ("xml", value) |
254 |
254 |
255 def __parseOjm(self, variableName, parent): |
255 def __parseOjm(self, variableName, parent): |
256 """ |
256 """ |
257 Private method to parse an m_object. |
257 Private method to parse an m_object. |
301 |
301 |
302 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
302 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
303 # unsigned short, big-endian |
303 # unsigned short, big-endian |
304 while lenVariableName != 0: |
304 while lenVariableName != 0: |
305 variableName = self.__data.read(lenVariableName) |
305 variableName = self.__data.read(lenVariableName) |
306 variableName = variableName.decode("utf-8") |
306 variableName = variableName.decode("utf-8", "replace") |
307 variableType = self.__data.read(1) |
307 variableType = self.__data.read(1) |
308 if variableType == self.Number: |
308 if variableType == self.Number: |
309 self.__parseNumber(variableName, value) |
309 self.__parseNumber(variableName, value) |
310 elif variableType == self.Boolean: |
310 elif variableType == self.Boolean: |
311 self.__parseBoolean(variableName, value) |
311 self.__parseBoolean(variableName, value) |
352 |
352 |
353 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
353 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
354 # unsigned short, big-endian |
354 # unsigned short, big-endian |
355 while lenVariableName != 0: |
355 while lenVariableName != 0: |
356 variableName = self.__data.read(lenVariableName) |
356 variableName = self.__data.read(lenVariableName) |
357 variableName = variableName.decode("utf-8") |
357 variableName = variableName.decode("utf-8", "replace") |
358 variableType = self.__data.read(1) |
358 variableType = self.__data.read(1) |
359 if variableType == self.Number: |
359 if variableType == self.Number: |
360 self.__parseNumber(variableName, value) |
360 self.__parseNumber(variableName, value) |
361 elif variableType == self.Boolean: |
361 elif variableType == self.Boolean: |
362 self.__parseBoolean(variableName, value) |
362 self.__parseBoolean(variableName, value) |
396 file is found |
396 file is found |
397 """ |
397 """ |
398 lenCname = struct.unpack(">H", self.__data.read(2)) |
398 lenCname = struct.unpack(">H", self.__data.read(2)) |
399 # unsigned short, big-endian |
399 # unsigned short, big-endian |
400 cname = self.__data.read(lenCname) |
400 cname = self.__data.read(lenCname) |
401 cname = cname.decode("utf-8") |
401 cname = cname.decode("utf-8", "replace") |
402 |
402 |
403 value = {} |
403 value = {} |
404 parent[variableName] = ("c_object; cname={0}".format(cname), value) |
404 parent[variableName] = ("c_object; cname={0}".format(cname), value) |
405 |
405 |
406 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
406 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
407 # unsigned short, big-endian |
407 # unsigned short, big-endian |
408 while lenVariableName != 0: |
408 while lenVariableName != 0: |
409 variableName = self.__data.read(lenVariableName) |
409 variableName = self.__data.read(lenVariableName) |
410 variableName = variableName.decode("utf-8") |
410 variableName = variableName.decode("utf-8", "replace") |
411 variableType = self.__data.read(1) |
411 variableType = self.__data.read(1) |
412 if variableType == self.Number: |
412 if variableType == self.Number: |
413 self.__parseNumber(variableName, value) |
413 self.__parseNumber(variableName, value) |
414 elif variableType == self.Boolean: |
414 elif variableType == self.Boolean: |
415 self.__parseBoolean(variableName, value) |
415 self.__parseBoolean(variableName, value) |