|
74 | 74 | to_bytes, |
75 | 75 | to_str, |
76 | 76 | to_unicode, |
| 77 | + BYTES_TYPE, |
77 | 78 | UNICODE_TYPE, |
78 | 79 | unicode_char, |
79 | 80 | hexdump, |
@@ -817,11 +818,11 @@ def _read_value(self, raw_field_type, ident, name=""): |
817 | 818 | :return: The read value |
818 | 819 | :raise RuntimeError: Unknown field type |
819 | 820 | """ |
820 | | - if isinstance(raw_field_type, (bytes, str)): |
| 821 | + if isinstance(raw_field_type, (TypeCode, int)): |
| 822 | + field_type = raw_field_type |
| 823 | + else: |
821 | 824 | # We don't need details for arrays and objects |
822 | 825 | field_type = TypeCode(ord(raw_field_type[0])) |
823 | | - else: |
824 | | - field_type = raw_field_type |
825 | 826 |
|
826 | 827 | if field_type == TypeCode.TYPE_BOOLEAN: |
827 | 828 | (val,) = self._readStruct(">B") |
@@ -1343,11 +1344,11 @@ def _write_value(self, raw_field_type, value): |
1343 | 1344 | :param raw_field_type: Value type |
1344 | 1345 | :param value: The value itself |
1345 | 1346 | """ |
1346 | | - if isinstance(raw_field_type, (bytes, str)): |
| 1347 | + if isinstance(raw_field_type, (TypeCode, int)): |
| 1348 | + field_type = raw_field_type |
| 1349 | + else: |
1347 | 1350 | # We don't need details for arrays and objects |
1348 | 1351 | field_type = TypeCode(ord(raw_field_type[0])) |
1349 | | - else: |
1350 | | - field_type = raw_field_type |
1351 | 1352 |
|
1352 | 1353 | if field_type == TypeCode.TYPE_BOOLEAN: |
1353 | 1354 | self._writeStruct(">B", 1, (1 if value else 0,)) |
@@ -1376,7 +1377,7 @@ def _write_value(self, raw_field_type, value): |
1376 | 1377 | self.write_object(value) |
1377 | 1378 | elif isinstance(value, JavaString): |
1378 | 1379 | self.write_string(value) |
1379 | | - elif isinstance(value, (bytes, str)): |
| 1380 | + elif isinstance(value, (BYTES_TYPE, UNICODE_TYPE)): |
1380 | 1381 | self.write_blockdata(value) |
1381 | 1382 | else: |
1382 | 1383 | raise RuntimeError("Unknown typecode: {0}".format(field_type)) |
|
0 commit comments