summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2018-09-20 16:51:14 -0400
committerPeter LaFosse <peter@vector35.com>2018-09-20 16:51:14 -0400
commitf48203de0acafb1d981d56c79d0edff921102065 (patch)
tree04e3a94f4756fc4c00e64346ceec660bf25fa4b0 /binaryninjaapi.h
parent74a8547853dd66fe62d2e75b93c1b723eb6f69cf (diff)
Adding NameSpace tokens and plumbing through some namespce apis
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h172
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;