| 128 | } |
| 129 | |
| 130 | QStringList FieldDef::diffList(FieldDef* const other) const |
| 131 | { |
| 132 | QStringList diffs{}; |
| 133 | if (m_entry->getLabel() != other->m_entry->getLabel()) |
| 134 | diffs += QString("Name: %1 -> %2").arg(m_entry->getLabel()).arg(other->m_entry->getLabel()); |
| 135 | if (m_size != other->m_size) |
| 136 | diffs += QString("Field Size: %1 -> %2").arg(m_size).arg(other->m_size); |
| 137 | if (m_structOffset != other->m_structOffset) |
| 138 | diffs += QString("Struct Offset: %1 -> %2").arg(m_structOffset).arg(other->m_structOffset); |
| 139 | if (m_entry->getType() != other->m_entry->getType()) |
| 140 | diffs += QString("Type: %1 -> %2") |
| 141 | .arg(GUICommon::getStringFromType(m_entry->getType())) |
| 142 | .arg(GUICommon::getStringFromType(other->m_entry->getType())); |
| 143 | if (m_entry->getType() == Common::MemType::type_struct) |
| 144 | { |
| 145 | if (other->m_entry->getType() == Common::MemType::type_struct && |
| 146 | m_entry->getStructName() != other->m_entry->getStructName()) |
| 147 | diffs += QString("Struct Name: %1 -> %2") |
| 148 | .arg(m_entry->getStructName()) |
| 149 | .arg(other->m_entry->getStructName()); |
| 150 | else if (other->m_entry->getType() != Common::MemType::type_struct) |
| 151 | diffs += QString("Struct Name: %1 -> N/A").arg(m_entry->getStructName()); |
| 152 | } |
| 153 | else if (other->m_entry->getType() == Common::MemType::type_struct) |
| 154 | diffs += QString("Struct Name: N/A -> %1").arg(other->m_entry->getStructName()); |
| 155 | |
| 156 | size_t oldSize = Common::getSizeForType(m_entry->getType(), m_entry->getLength()); |
| 157 | if (m_entry->isBoundToPointer()) |
| 158 | oldSize = 4; |
| 159 | |
| 160 | size_t newSize = Common::getSizeForType(other->m_entry->getType(), other->m_entry->getLength()); |
| 161 | if (other->m_entry->isBoundToPointer()) |
| 162 | newSize = 4; |
| 163 | |
| 164 | if (oldSize != newSize) |
| 165 | diffs += QString("Entry Length: %1 -> %2").arg(oldSize).arg(newSize); |
| 166 | |
| 167 | if (m_entry->isBoundToPointer() != other->m_entry->isBoundToPointer()) |
| 168 | diffs += QString("Is Pointer: %1 -> %2") |
| 169 | .arg(m_entry->isBoundToPointer() ? "Yes" : "No") |
| 170 | .arg(other->m_entry->isBoundToPointer() ? "Yes" : "No"); |
| 171 | |
| 172 | if (m_entry->isBoundToPointer() || other->m_entry->isBoundToPointer()) |
| 173 | { |
| 174 | int i = 0; |
| 175 | while (i < static_cast<int>( |
| 176 | std::max(m_entry->getPointerLevel(), other->m_entry->getPointerLevel()))) |
| 177 | { |
| 178 | if (static_cast<int>(m_entry->getPointerLevel()) > i) |
| 179 | { |
| 180 | if (static_cast<int>(other->m_entry->getPointerLevel()) > i && |
| 181 | m_entry->getPointerOffset(i) != other->m_entry->getPointerOffset(i)) |
| 182 | diffs += QString(" Pointer Offset %1: %2 -> %3") |
| 183 | .arg(i) |
| 184 | .arg(m_entry->getPointerOffset(i)) |
| 185 | .arg(other->m_entry->getPointerOffset(i)); |
| 186 | else if (!(static_cast<int>(other->m_entry->getPointerLevel()) > i)) |
| 187 | diffs += |
no test coverage detected