A shared_ptr value, possibly null.
| 838 | |
| 839 | |
| 840 | class MetadataPtr(Sequence): |
| 841 | """ |
| 842 | A shared_ptr<arrow::KeyValueMetadata> value, possibly null. |
| 843 | """ |
| 844 | |
| 845 | def __init__(self, val): |
| 846 | self.ptr = SharedPtr(val).get() |
| 847 | self.is_null = int(self.ptr) == 0 |
| 848 | self.md = None if self.is_null else Metadata(self.ptr.dereference()) |
| 849 | |
| 850 | def __len__(self): |
| 851 | return 0 if self.is_null else len(self.md) |
| 852 | |
| 853 | def __getitem__(self, i): |
| 854 | if self.is_null: |
| 855 | raise IndexError |
| 856 | return self.md[i] |
| 857 | |
| 858 | |
| 859 | DecimalTraits = namedtuple('DecimalTraits', ('bit_width', 'struct_format_le')) |