| 678 | } |
| 679 | |
| 680 | Object::PythonObject |
| 681 | Object::toConcreteObject() const |
| 682 | { |
| 683 | try { |
| 684 | switch (objectType()) { |
| 685 | case Object::ObjectType::STRING: |
| 686 | if (d_manager->versionIsAtLeast(3, 0)) { |
| 687 | return '"' + d_manager->getStringFromAddress(d_addr) + '"'; |
| 688 | } |
| 689 | return normalizeBytesObjectRepresentation(d_manager->getStringFromAddress(d_addr), ""); |
| 690 | case Object::ObjectType::BYTES: |
| 691 | return normalizeBytesObjectRepresentation(d_manager->getBytesFromAddress(d_addr)); |
| 692 | case Object::ObjectType::NONE: |
| 693 | return NoneObject(d_addr); |
| 694 | case Object::ObjectType::INT: |
| 695 | return toInteger(); |
| 696 | case Object::ObjectType::INT_BOOL: |
| 697 | return toBool(); |
| 698 | case Object::ObjectType::LONG: |
| 699 | return LongObject(d_manager, d_addr); |
| 700 | case Object::ObjectType::LONG_BOOL: |
| 701 | return LongObject(d_manager, d_addr, true); |
| 702 | case Object::ObjectType::FLOAT: |
| 703 | return toFloat(); |
| 704 | case Object::ObjectType::TUPLE: |
| 705 | return TupleObject(d_manager, d_addr); |
| 706 | case Object::ObjectType::LIST: |
| 707 | return ListObject(d_manager, d_addr); |
| 708 | case Object::ObjectType::DICT: |
| 709 | return DictObject(d_manager, d_addr); |
| 710 | case Object::ObjectType::CODE: |
| 711 | case Object::ObjectType::OTHER: |
| 712 | return GenericObject(d_addr, d_classname); |
| 713 | } |
| 714 | } catch (InvalidRemoteObject&) { |
| 715 | LOG(DEBUG) << std::hex << std::showbase << "Failed to identify object at address: " << d_addr; |
| 716 | } |
| 717 | return GenericObject(d_addr, d_classname); |
| 718 | } |
| 719 | |
| 720 | std::string |
| 721 | Object::guessClassName(Structure<py_type_v>& type) const |
nothing calls this directly
no test coverage detected