| 72 | |
| 73 | |
| 74 | class _StringTable(object): |
| 75 | def __init__(self, stream): |
| 76 | table_size = stream.read_uint32() |
| 77 | self._data = stream.read_raw(table_size) |
| 78 | |
| 79 | def get_string(self, offset): |
| 80 | try: |
| 81 | return self._data[offset:self._data.index(b'\000', offset)].decode('utf-8') |
| 82 | except ValueError: |
| 83 | return self._data[offset:] |
| 84 | |
| 85 | def get_blob(self, offset, size): |
| 86 | return self._data[offset:offset + size] |
| 87 | |
| 88 | |
| 89 | class ShaderInput(object): |