diff options
| author | Peter LaFosse <peter@vector35.com> | 2018-09-20 16:51:14 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2018-09-20 16:51:14 -0400 |
| commit | f48203de0acafb1d981d56c79d0edff921102065 (patch) | |
| tree | 04e3a94f4756fc4c00e64346ceec660bf25fa4b0 /binaryninjaapi.h | |
| parent | 74a8547853dd66fe62d2e75b93c1b723eb6f69cf (diff) | |
Adding NameSpace tokens and plumbing through some namespce apis
Diffstat (limited to 'binaryninjaapi.h')
| -rw-r--r-- | binaryninjaapi.h | 172 |
1 files changed, 88 insertions, 84 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 647d2677..81eb05bd 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -909,6 +909,92 @@ namespace BinaryNinja class Function; class BasicBlock; + class NameList + { + protected: + std::string m_join; + std::vector<std::string> m_name; + public: + NameList(const std::string& join); + 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); + + virtual NameList& operator=(const std::string& name); + virtual NameList& operator=(const std::vector<std::string>& name); + virtual NameList& operator=(const NameList& name); + + virtual bool operator==(const NameList& other) const; + virtual bool operator!=(const NameList& other) const; + virtual bool operator<(const NameList& other) const; + + virtual NameList operator+(const NameList& other) const; + + virtual std::string& operator[](size_t i); + virtual const std::string& operator[](size_t i) const; + virtual std::vector<std::string>::iterator begin(); + virtual std::vector<std::string>::iterator end(); + virtual std::vector<std::string>::const_iterator begin() const; + virtual std::vector<std::string>::const_iterator end() const; + virtual std::string& front(); + virtual const std::string& front() const; + virtual std::string& back(); + virtual const std::string& back() const; + virtual void insert(std::vector<std::string>::iterator loc, const std::string& name); + virtual void insert(std::vector<std::string>::iterator loc, std::vector<std::string>::iterator b, + std::vector<std::string>::iterator e); + virtual void erase(std::vector<std::string>::iterator i); + virtual void clear(); + virtual void push_back(const std::string& name); + virtual size_t size() const; + virtual size_t StringSize() const; + + virtual std::string GetString() const; + virtual std::string GetJoinString() const { return m_join; } + virtual bool IsEmpty() const { return m_name.size() == 0; } + + BNNameList GetAPIObject() const; + static void FreeAPIObject(BNNameList* name); + static NameList FromAPIObject(BNNameList* name); + }; + + class QualifiedName: public NameList + { + public: + QualifiedName(); + QualifiedName(const std::string& name); + QualifiedName(const std::vector<std::string>& name); + QualifiedName(const QualifiedName& name); + + virtual QualifiedName& operator=(const std::string& name); + virtual QualifiedName& operator=(const std::vector<std::string>& name); + virtual QualifiedName& operator=(const QualifiedName& name); + virtual QualifiedName operator+(const QualifiedName& other) const; + + BNQualifiedName GetAPIObject() const; + static void FreeAPIObject(BNQualifiedName* name); + static QualifiedName FromAPIObject(BNQualifiedName* name); + }; + + class NameSpace: public NameList + { + public: + NameSpace(); + NameSpace(const std::string& name); + NameSpace(const std::vector<std::string>& name); + NameSpace(const NameSpace& name); + + virtual NameSpace& operator=(const std::string& name); + virtual NameSpace& operator=(const std::vector<std::string>& name); + virtual NameSpace& operator=(const NameSpace& name); + virtual NameSpace operator+(const NameSpace& other) const; + + virtual bool IsDefaultNameSpace() const; + BNNameSpace GetAPIObject() const; + static void FreeAPIObject(BNNameSpace* name); + static NameSpace FromAPIObject(const BNNameSpace* name); + }; + class Symbol: public CoreRefCountObject<BNSymbol, BNNewSymbolReference, BNFreeSymbol> { public: @@ -922,6 +1008,7 @@ namespace BinaryNinja std::string GetRawName() const; uint64_t GetAddress() const; bool IsAutoDefined() const; + NameSpace GetNameSpace() const; static Ref<Symbol> ImportedFunctionFromImportAddressSymbol(Symbol* sym, uint64_t addr); }; @@ -1275,7 +1362,7 @@ namespace BinaryNinja std::vector<Ref<Symbol>> GetSymbolsOfType(BNSymbolType type); std::vector<Ref<Symbol>> GetSymbolsOfType(BNSymbolType type, uint64_t start, uint64_t len); - void DefineAutoSymbol(Ref<Symbol> sym); + void DefineAutoSymbol(Ref<Symbol> sym, const NameSpace& nameSpace=NameSpace()); void DefineAutoSymbolAndVariableOrFunction(Ref<Platform> platform, Ref<Symbol> sym, Ref<Type> type); void UndefineAutoSymbol(Ref<Symbol> sym); @@ -2079,89 +2166,6 @@ namespace BinaryNinja Variable location; }; - class NameList - { - protected: - std::string m_join; - std::vector<std::string> m_name; - public: - NameList(const std::string& join); - 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); - - virtual NameList& operator=(const std::string& name); - virtual NameList& operator=(const std::vector<std::string>& name); - virtual NameList& operator=(const NameList& name); - - virtual bool operator==(const NameList& other) const; - virtual bool operator!=(const NameList& other) const; - virtual bool operator<(const NameList& other) const; - - virtual NameList operator+(const NameList& other) const; - - virtual std::string& operator[](size_t i); - virtual const std::string& operator[](size_t i) const; - virtual std::vector<std::string>::iterator begin(); - virtual std::vector<std::string>::iterator end(); - virtual std::vector<std::string>::const_iterator begin() const; - virtual std::vector<std::string>::const_iterator end() const; - virtual std::string& front(); - virtual const std::string& front() const; - virtual std::string& back(); - virtual const std::string& back() const; - virtual void insert(std::vector<std::string>::iterator loc, const std::string& name); - virtual void insert(std::vector<std::string>::iterator loc, std::vector<std::string>::iterator b, - std::vector<std::string>::iterator e); - virtual void erase(std::vector<std::string>::iterator i); - virtual void clear(); - virtual void push_back(const std::string& name); - virtual size_t size() const; - virtual size_t StringSize() const; - - virtual std::string GetString() const; - - BNNameList GetAPIObject() const; - static void FreeAPIObject(BNNameList* name); - static NameList FromAPIObject(BNNameList* name); - }; - - class QualifiedName: public NameList - { - public: - QualifiedName(); - QualifiedName(const std::string& name); - QualifiedName(const std::vector<std::string>& name); - QualifiedName(const QualifiedName& name); - - virtual QualifiedName& operator=(const std::string& name); - virtual QualifiedName& operator=(const std::vector<std::string>& name); - virtual QualifiedName& operator=(const QualifiedName& name); - virtual QualifiedName operator+(const QualifiedName& other) const; - - BNQualifiedName GetAPIObject() const; - static void FreeAPIObject(BNQualifiedName* name); - static QualifiedName FromAPIObject(BNQualifiedName* name); - }; - - class NameSpace: public NameList - { - public: - NameSpace(); - NameSpace(const std::string& name); - NameSpace(const std::vector<std::string>& name); - NameSpace(const NameSpace& name); - - virtual NameSpace& operator=(const std::string& name); - virtual NameSpace& operator=(const std::vector<std::string>& name); - virtual NameSpace& operator=(const NameSpace& name); - virtual NameSpace operator+(const NameSpace& other) const; - - BNNameSpace GetAPIObject() const; - static void FreeAPIObject(BNNameSpace* name); - static NameSpace FromAPIObject(BNNameSpace* name); - }; - struct QualifiedNameAndType { QualifiedName name; |
