summaryrefslogtreecommitdiff
path: root/architecture.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-08-17 02:04:50 -0400
committerRusty Wagner <rusty@vector35.com>2017-08-17 02:04:50 -0400
commit5e25409d02479285d1f16d6cc55df1b267e9ba06 (patch)
treeca7a800c57bb907e04e916d5c90f72c601544679 /architecture.cpp
parentec2d882e1a165b703e8fedaa81246dcdd91f50f3 (diff)
Support custom calling conventions in the type parser and type objects
Diffstat (limited to 'architecture.cpp')
-rw-r--r--architecture.cpp85
1 files changed, 0 insertions, 85 deletions
diff --git a/architecture.cpp b/architecture.cpp
index 8fd38de2..eb588394 100644
--- a/architecture.cpp
+++ b/architecture.cpp
@@ -787,91 +787,6 @@ void Architecture::SetBinaryViewTypeConstant(const string& type, const string& n
}
-bool Architecture::ParseTypesFromSource(const string& source, const string& fileName,
- map<QualifiedName, Ref<Type>>& types, map<QualifiedName, Ref<Type>>& variables,
- map<QualifiedName, Ref<Type>>& functions, string& errors, const vector<string>& includeDirs,
- const string& autoTypeSource)
-{
- 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(m_object, source.c_str(), fileName.c_str(), &result,
- &errorStr, includeDirList, includeDirs.size(), autoTypeSource.c_str());
- errors = errorStr;
- BNFreeString(errorStr);
- if (!ok)
- return false;
-
- for (size_t i = 0; i < result.typeCount; i++)
- {
- QualifiedName name = QualifiedName::FromAPIObject(&result.types[i].name);
- types[name] = new Type(BNNewTypeReference(result.types[i].type));
- }
- for (size_t i = 0; i < result.variableCount; i++)
- {
- QualifiedName name = QualifiedName::FromAPIObject(&result.variables[i].name);
- types[name] = new Type(BNNewTypeReference(result.variables[i].type));
- }
- for (size_t i = 0; i < result.functionCount; i++)
- {
- QualifiedName name = QualifiedName::FromAPIObject(&result.functions[i].name);
- types[name] = new Type(BNNewTypeReference(result.functions[i].type));
- }
- BNFreeTypeParserResult(&result);
- return true;
-}
-
-
-bool Architecture::ParseTypesFromSourceFile(const string& fileName, map<QualifiedName, Ref<Type>>& types,
- map<QualifiedName, Ref<Type>>& variables, map<QualifiedName, Ref<Type>>& functions,
- string& errors, const vector<string>& includeDirs, const string& autoTypeSource)
-{
- 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(m_object, fileName.c_str(), &result, &errorStr,
- includeDirList, includeDirs.size(), autoTypeSource.c_str());
- errors = errorStr;
- BNFreeString(errorStr);
- if (!ok)
- return false;
-
- for (size_t i = 0; i < result.typeCount; i++)
- {
- QualifiedName name = QualifiedName::FromAPIObject(&result.types[i].name);
- types[name] = new Type(BNNewTypeReference(result.types[i].type));
- }
- for (size_t i = 0; i < result.variableCount; i++)
- {
- QualifiedName name = QualifiedName::FromAPIObject(&result.variables[i].name);
- variables[name] = new Type(BNNewTypeReference(result.variables[i].type));
- }
- for (size_t i = 0; i < result.functionCount; i++)
- {
- QualifiedName name = QualifiedName::FromAPIObject(&result.functions[i].name);
- functions[name] = new Type(BNNewTypeReference(result.functions[i].type));
- }
- BNFreeTypeParserResult(&result);
- return true;
-}
-
-
void Architecture::RegisterCallingConvention(CallingConvention* cc)
{
BNRegisterCallingConvention(m_object, cc->GetObject());