A arrow::Buffer value.
| 602 | |
| 603 | |
| 604 | class Buffer: |
| 605 | """ |
| 606 | A arrow::Buffer value. |
| 607 | """ |
| 608 | |
| 609 | def __init__(self, val): |
| 610 | self.val = val |
| 611 | self.size = int(val['size_']) |
| 612 | |
| 613 | @property |
| 614 | def data(self): |
| 615 | return self.val['data_'] |
| 616 | |
| 617 | def bytes_literal(self): |
| 618 | if self.size > 0: |
| 619 | return self.val['data_'].lazy_string(length=self.size).value() |
| 620 | else: |
| 621 | return '""' |
| 622 | |
| 623 | def bytes_view(self, offset=0, length=None): |
| 624 | """ |
| 625 | Return a view over the bytes of this buffer. |
| 626 | """ |
| 627 | if self.size > 0: |
| 628 | if length is None: |
| 629 | length = self.size |
| 630 | mem = gdb.selected_inferior().read_memory( |
| 631 | self.val['data_'] + offset, self.size) |
| 632 | else: |
| 633 | mem = memoryview(b"") |
| 634 | # Read individual bytes as unsigned integers rather than |
| 635 | # Python bytes objects |
| 636 | return mem.cast('B') |
| 637 | |
| 638 | view = bytes_view |
| 639 | |
| 640 | |
| 641 | class BufferPtr: |