diff options
| -rw-r--r-- | binaryninjaapi.h | 39 | ||||
| -rw-r--r-- | function.cpp | 63 | ||||
| -rw-r--r-- | mediumlevelilinstruction.cpp | 41 | ||||
| -rw-r--r-- | mediumlevelilinstruction.h | 25 |
4 files changed, 47 insertions, 121 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 90ee2585..9e90eeb8 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -10048,17 +10048,38 @@ namespace BinaryNinja { */ struct Variable : public BNVariable { - Variable(); - Variable(BNVariableSourceType type, uint32_t index, uint64_t storage); - Variable(BNVariableSourceType type, uint64_t storage); - Variable(const BNVariable& var); - Variable(const Variable& var); + Variable() : BNVariable{RegisterVariableSourceType, 0, 0} {} + Variable(BNVariableSourceType type, uint64_t storage) : Variable(type, 0, storage) {} + Variable(BNVariableSourceType type, uint32_t index, uint64_t storage) + : BNVariable{type, index, static_cast<int64_t>(storage)} + { + } + Variable(const BNVariable& var) : BNVariable(var) {} + + Variable(const Variable&) = default; + Variable& operator=(const Variable&) = default; - Variable& operator=(const Variable& var); + Variable(Variable&&) = default; + Variable& operator=(Variable&&) = default; + + bool operator==(const Variable& var) const + { + return type == var.type && index == var.index && storage == var.storage; + } - bool operator==(const Variable& var) const; - bool operator!=(const Variable& var) const; - bool operator<(const Variable& var) const; + bool operator!=(const Variable& var) const + { + return !(*this == var); + } + + bool operator<(const Variable& var) const + { + if (type != var.type) + return type < var.type; + if (storage != var.storage) + return storage < var.storage; + return index < var.index; + } uint64_t ToIdentifier() const; static Variable FromIdentifier(uint64_t id); diff --git a/function.cpp b/function.cpp index 1d35aa7d..df41b977 100644 --- a/function.cpp +++ b/function.cpp @@ -29,69 +29,6 @@ using namespace BinaryNinja; using namespace std; -Variable::Variable() -{ - type = RegisterVariableSourceType; - index = 0; - storage = 0; -} - - -Variable::Variable(BNVariableSourceType t, uint32_t i, uint64_t s) -{ - type = t; - index = i; - storage = s; -} - - -Variable::Variable(const BNVariable& var) -{ - type = var.type; - index = var.index; - storage = var.storage; -} - - -Variable::Variable(const Variable& var) -{ - type = var.type; - index = var.index; - storage = var.storage; -} - - -Variable& Variable::operator=(const Variable& var) -{ - type = var.type; - index = var.index; - storage = var.storage; - return *this; -} - - -bool Variable::operator==(const Variable& var) const -{ - if (type != var.type) - return false; - if (index != var.index) - return false; - return storage == var.storage; -} - - -bool Variable::operator!=(const Variable& var) const -{ - return !((*this) == var); -} - - -bool Variable::operator<(const Variable& var) const -{ - return ToIdentifier() < var.ToIdentifier(); -} - - uint64_t Variable::ToIdentifier() const { return BNToVariableIdentifier(this); diff --git a/mediumlevelilinstruction.cpp b/mediumlevelilinstruction.cpp index 8a026aad..1894294b 100644 --- a/mediumlevelilinstruction.cpp +++ b/mediumlevelilinstruction.cpp @@ -307,47 +307,6 @@ unordered_map<BNMediumLevelILOperation, unordered_map<MediumLevelILOperandUsage, MediumLevelILInstructionBase::operationOperandIndex = GetOperandIndexForOperandUsages(); -SSAVariable::SSAVariable() : version(0) {} - - -SSAVariable::SSAVariable(const Variable& v, size_t i) : var(v), version(i) {} - - -SSAVariable::SSAVariable(const SSAVariable& v) : var(v.var), version(v.version) {} - - -SSAVariable& SSAVariable::operator=(const SSAVariable& v) -{ - var = v.var; - version = v.version; - return *this; -} - - -bool SSAVariable::operator==(const SSAVariable& v) const -{ - if (var != v.var) - return false; - return version == v.version; -} - - -bool SSAVariable::operator!=(const SSAVariable& v) const -{ - return !((*this) == v); -} - - -bool SSAVariable::operator<(const SSAVariable& v) const -{ - if (var < v.var) - return true; - if (v.var < var) - return false; - return version < v.version; -} - - bool MediumLevelILIntegerList::ListIterator::operator==(const ListIterator& a) const { return count == a.count; diff --git a/mediumlevelilinstruction.h b/mediumlevelilinstruction.h index a1f8e00d..077ced5b 100644 --- a/mediumlevelilinstruction.h +++ b/mediumlevelilinstruction.h @@ -60,16 +60,25 @@ namespace BinaryNinja struct SSAVariable { Variable var; - size_t version; + size_t version = 0; - SSAVariable(); - SSAVariable(const Variable& v, size_t i); - SSAVariable(const SSAVariable& v); + // TODO: `= default` these when we can rely on C++20 + bool operator==(const SSAVariable& other) const + { + return var == other.var && version == other.version; + } - SSAVariable& operator=(const SSAVariable& v); - bool operator==(const SSAVariable& v) const; - bool operator!=(const SSAVariable& v) const; - bool operator<(const SSAVariable& v) const; + bool operator!=(const SSAVariable& other) const + { + return !(*this == other); + } + + bool operator<(const SSAVariable& other) const + { + if (var != other.var) + return var < other.var; + return version < other.version; + } }; /*! |
