| 77 | } |
| 78 | |
| 79 | QVariant SymbolTreeNode::readValueAsVariant(const ccc::ast::Node& physical_type, DebugInterface& cpu, const ccc::SymbolDatabase& database) const |
| 80 | { |
| 81 | switch (physical_type.descriptor) |
| 82 | { |
| 83 | case ccc::ast::BUILTIN: |
| 84 | { |
| 85 | const ccc::ast::BuiltIn& builtIn = physical_type.as<ccc::ast::BuiltIn>(); |
| 86 | switch (builtIn.bclass) |
| 87 | { |
| 88 | case ccc::ast::BuiltInClass::UNSIGNED_8: |
| 89 | return (qulonglong)location.read8(cpu); |
| 90 | case ccc::ast::BuiltInClass::SIGNED_8: |
| 91 | return (qlonglong)(s8)location.read8(cpu); |
| 92 | case ccc::ast::BuiltInClass::UNQUALIFIED_8: |
| 93 | return (qulonglong)location.read8(cpu); |
| 94 | case ccc::ast::BuiltInClass::BOOL_8: |
| 95 | return (bool)location.read8(cpu); |
| 96 | case ccc::ast::BuiltInClass::UNSIGNED_16: |
| 97 | return (qulonglong)location.read16(cpu); |
| 98 | case ccc::ast::BuiltInClass::SIGNED_16: |
| 99 | return (qlonglong)(s16)location.read16(cpu); |
| 100 | case ccc::ast::BuiltInClass::UNSIGNED_32: |
| 101 | return (qulonglong)location.read32(cpu); |
| 102 | case ccc::ast::BuiltInClass::SIGNED_32: |
| 103 | return (qlonglong)(s32)location.read32(cpu); |
| 104 | case ccc::ast::BuiltInClass::FLOAT_32: |
| 105 | { |
| 106 | u32 value = location.read32(cpu); |
| 107 | return *reinterpret_cast<float*>(&value); |
| 108 | } |
| 109 | case ccc::ast::BuiltInClass::UNSIGNED_64: |
| 110 | return (qulonglong)location.read64(cpu); |
| 111 | case ccc::ast::BuiltInClass::SIGNED_64: |
| 112 | return (qlonglong)(s64)location.read64(cpu); |
| 113 | case ccc::ast::BuiltInClass::FLOAT_64: |
| 114 | { |
| 115 | u64 value = location.read64(cpu); |
| 116 | return *reinterpret_cast<double*>(&value); |
| 117 | } |
| 118 | default: |
| 119 | { |
| 120 | } |
| 121 | } |
| 122 | break; |
| 123 | } |
| 124 | case ccc::ast::ENUM: |
| 125 | return location.read32(cpu); |
| 126 | case ccc::ast::POINTER_OR_REFERENCE: |
| 127 | case ccc::ast::POINTER_TO_DATA_MEMBER: |
| 128 | return location.read32(cpu); |
| 129 | default: |
| 130 | { |
| 131 | } |
| 132 | } |
| 133 | |
| 134 | return QVariant(); |
| 135 | } |
| 136 | |