Revert "Revert "Remove AidlImport::GetDocument""
This reverts commit c819f23804c191174c8d3f70b3e592ebd210a876.
The original commit only needed to be reverted in order to revert a
dependency.
Change-Id: I7a7d08e8bfeaa97dac1122a202544884b10254b8
diff --git a/aidl.cpp b/aidl.cpp
index 8fc9d78..cae1e81 100644
--- a/aidl.cpp
+++ b/aidl.cpp
@@ -163,17 +163,6 @@
return success;
}
-char* rfind(char* str, char c) {
- char* p = str + strlen(str) - 1;
- while (p >= str) {
- if (*p == c) {
- return p;
- }
- p--;
- }
- return NULL;
-}
-
bool gather_types(const std::string& filename,
const AidlDocumentItem* all_items,
TypeNamespace* types) {
@@ -382,7 +371,7 @@
sscanf(line, "%s %[^; \r\n\t];", type, fullname);
char* packagename;
- char* classname = rfind(fullname, '.');
+ char* classname = strrchr(fullname, '.');
if (classname != NULL) {
*classname = '\0';
classname++;
@@ -498,6 +487,8 @@
std::vector<std::unique_ptr<AidlImport>>* returned_imports) {
int err = 0;
+ std::map<AidlImport*,std::unique_ptr<AidlDocumentItem>> docs;
+
// import the preprocessed file
for (const string& s : preprocessed_files) {
err |= parse_preprocessed_file(s, types);
@@ -556,9 +547,10 @@
continue;
}
- import->SetDocument(p.GetDocument());
- if (!check_filenames(import->GetFilename(), import->GetDocument()))
+ AidlDocumentItem* document = p.GetDocument();
+ if (!check_filenames(import->GetFilename(), document))
err |= 1;
+ docs[import.get()] = std::unique_ptr<AidlDocumentItem>(document);
}
if (err != 0) {
return err;
@@ -569,7 +561,7 @@
err |= 1;
}
for (const auto& import : p.GetImports()) {
- if (!gather_types(import->GetFilename(), import->GetDocument(), types)) {
+ if (!gather_types(import->GetFilename(), docs[import.get()].get(), types)) {
err |= 1;
}
}