| 84 | } |
| 85 | |
| 86 | TupleObject::TupleObject( |
| 87 | const std::shared_ptr<const AbstractProcessManager>& manager, |
| 88 | remote_addr_t addr) |
| 89 | { |
| 90 | d_manager = manager; |
| 91 | |
| 92 | Structure<py_tuple_v> tuple(manager, addr); |
| 93 | ssize_t num_items = tuple.getField(&py_tuple_v::o_ob_size); |
| 94 | if (num_items == 0) { |
| 95 | LOG(DEBUG) << std::hex << std::showbase << "There are no elements in this tuple"; |
| 96 | return; |
| 97 | } |
| 98 | d_items.resize(num_items); |
| 99 | manager->copyMemoryFromProcess( |
| 100 | tuple.getFieldRemoteAddress(&py_tuple_v::o_ob_item), |
| 101 | num_items * sizeof(PyObject*), |
| 102 | d_items.data()); |
| 103 | } |
| 104 | |
| 105 | std::string |
| 106 | TupleObject::toString(ssize_t max_size) const |
nothing calls this directly
no test coverage detected