diff options
| author | Rusty Wagner <rusty@vector35.com> | 2015-09-04 20:12:16 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2015-09-04 20:12:16 -0400 |
| commit | 78ffcbed6e9153efccb85564a911e4ed90ffb634 (patch) | |
| tree | ed95d97e1016a59471aba0b6841e295d57501c9e /type.cpp | |
| parent | fd5865d110b484e7841713a679024c78ca4105c9 (diff) | |
Add type classes to Python API
Diffstat (limited to 'type.cpp')
| -rw-r--r-- | type.cpp | 74 |
1 files changed, 6 insertions, 68 deletions
@@ -60,6 +60,12 @@ Ref<Type> Type::GetChildType() const } +BNCallingConvention Type::GetCallingConvention() const +{ + return BNGetTypeCallingConvention(m_type); +} + + vector<NameAndType> Type::GetParameters() const { size_t count; @@ -386,71 +392,3 @@ bool BinaryNinja::PreprocessSource(const string& source, const string& fileName, delete[] includeDirList; return result; } - - -bool BinaryNinja::ParseTypesFromSource(Architecture* arch, const string& source, const string& fileName, - map<string, Ref<Type>>& types, map<string, Ref<Type>>& variables, - map<string, Ref<Type>>& functions, string& errors, - const vector<string>& includeDirs) -{ - BNTypeParserResult result; - char* errorStr; - const char** includeDirList = new const char*[includeDirs.size()]; - - for (size_t i = 0; i < includeDirs.size(); i++) - includeDirList[i] = includeDirs[i].c_str(); - - types.clear(); - variables.clear(); - functions.clear(); - - bool ok = BNParseTypesFromSource(arch->GetArchitectureObject(), source.c_str(), fileName.c_str(), &result, - &errorStr, includeDirList, includeDirs.size()); - errors = errorStr; - BNFreeString(errorStr); - if (!ok) - return false; - - for (size_t i = 0; i < result.typeCount; i++) - types[result.types[i].name] = new Type(BNNewTypeReference(result.types[i].type)); - for (size_t i = 0; i < result.variableCount; i++) - types[result.variables[i].name] = new Type(BNNewTypeReference(result.variables[i].type)); - for (size_t i = 0; i < result.functionCount; i++) - types[result.functions[i].name] = new Type(BNNewTypeReference(result.functions[i].type)); - BNFreeTypeParserResult(&result); - return true; -} - - -bool BinaryNinja::ParseTypesFromSourceFile(Architecture* arch, const string& fileName, - map<string, Ref<Type>>& types, map<string, Ref<Type>>& variables, - map<string, Ref<Type>>& functions, string& errors, - const vector<string>& includeDirs) -{ - BNTypeParserResult result; - char* errorStr; - const char** includeDirList = new const char*[includeDirs.size()]; - - for (size_t i = 0; i < includeDirs.size(); i++) - includeDirList[i] = includeDirs[i].c_str(); - - types.clear(); - variables.clear(); - functions.clear(); - - bool ok = BNParseTypesFromSourceFile(arch->GetArchitectureObject(), fileName.c_str(), &result, - &errorStr, includeDirList, includeDirs.size()); - errors = errorStr; - BNFreeString(errorStr); - if (!ok) - return false; - - for (size_t i = 0; i < result.typeCount; i++) - types[result.types[i].name] = new Type(BNNewTypeReference(result.types[i].type)); - for (size_t i = 0; i < result.variableCount; i++) - variables[result.variables[i].name] = new Type(BNNewTypeReference(result.variables[i].type)); - for (size_t i = 0; i < result.functionCount; i++) - functions[result.functions[i].name] = new Type(BNNewTypeReference(result.functions[i].type)); - BNFreeTypeParserResult(&result); - return true; -} |
