diff options
| author | Peter LaFosse <peter@vector35.com> | 2023-02-15 11:44:26 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2023-02-17 09:07:17 -0500 |
| commit | 8b9d446826a1752b44a56158182723b16307fdfa (patch) | |
| tree | 461535ce8c2013a6a8ba89751839018b1c44e5ee | |
| parent | 88acbd3b77961187e20b712b37de9453c6f5151d (diff) | |
Ensure we reserve space in the vector in NameList constructor
| -rw-r--r-- | binaryninjaapi.h | 4 | ||||
| -rw-r--r-- | type.cpp | 25 |
2 files changed, 23 insertions, 6 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index f0f3ce89..9c8dd572 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2328,7 +2328,8 @@ namespace BinaryNinja { std::vector<std::string> m_name; public: - NameList(const std::string& join); + NameList(const BNQualifiedName* name); + NameList(const std::string& join, size_t size = 0); NameList(const std::string& name, const std::string& join); NameList(const std::vector<std::string>& name, const std::string& join); NameList(const NameList& name, const std::string& join); @@ -2385,6 +2386,7 @@ namespace BinaryNinja { { public: QualifiedName(); + QualifiedName(const BNQualifiedName* name); QualifiedName(const std::string& name); QualifiedName(const std::vector<std::string>& name); QualifiedName(const QualifiedName& name); @@ -25,7 +25,22 @@ using namespace BinaryNinja; using namespace std; -NameList::NameList(const string& join) : m_join(join) {} +NameList::NameList(const string& join, size_t size) : m_join(join) +{ + m_name.reserve(size); +} + + +NameList::NameList(const BNQualifiedName* name) +{ + if (name->join) + m_join = name->join; + m_name.reserve(name->nameCount); + for (size_t i = 0; i < name->nameCount; i++) + m_name.push_back(name->name[i]); +} + + NameList::NameList(const string& name, const string& join) : m_join(join) @@ -274,6 +289,9 @@ NameList NameList::FromAPIObject(BNNameList* name) QualifiedName::QualifiedName() : NameList("::") {} +QualifiedName::QualifiedName(const BNQualifiedName* name) : NameList(name) {} + + QualifiedName::QualifiedName(const string& name) : NameList(name, "::") {} @@ -342,10 +360,7 @@ void QualifiedName::FreeAPIObject(BNQualifiedName* name) QualifiedName QualifiedName::FromAPIObject(const BNQualifiedName* name) { - QualifiedName result; - for (size_t i = 0; i < name->nameCount; i++) - result.push_back(name->name[i]); - return result; + return QualifiedName(name); } |
