summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/include/Slice/FileTracker.h3
-rw-r--r--cpp/src/Slice/FileTracker.cpp19
-rw-r--r--cpp/src/slice2java/Main.cpp10
3 files changed, 19 insertions, 13 deletions
diff --git a/cpp/include/Slice/FileTracker.h b/cpp/include/Slice/FileTracker.h
index aa3041b4f42..81261f361d3 100644
--- a/cpp/include/Slice/FileTracker.h
+++ b/cpp/include/Slice/FileTracker.h
@@ -47,7 +47,8 @@ public:
static FileTrackerPtr instance();
- void setSource(const std::string&, const std::string&, bool);
+ void setSource(const std::string&);
+ void setOutput(const std::string&, bool);
void addFile(const std::string&);
void addDirectory(const std::string&);
diff --git a/cpp/src/Slice/FileTracker.cpp b/cpp/src/Slice/FileTracker.cpp
index 5c8bb1be161..2d4ce2293e4 100644
--- a/cpp/src/Slice/FileTracker.cpp
+++ b/cpp/src/Slice/FileTracker.cpp
@@ -90,20 +90,23 @@ Slice::FileTracker::instance()
}
void
-Slice::FileTracker::setSource(const string& source, const string& output, bool error)
+Slice::FileTracker::setSource(const string& source)
{
_source = source;
- _errors.insert(make_pair(source, output));
+ pair<map<string, list<string> >::iterator, bool> p = _generated.insert(make_pair(source, list<string>()));
+ assert(p.second);
+ _curr = p.first;
+}
+
+void
+Slice::FileTracker::setOutput(const string& output, bool error)
+{
+ assert(!_source.empty());
+ _errors.insert(make_pair(_source, output));
if(error)
{
_curr = _generated.end();
}
- else
- {
- pair<map<string, list<string> >::iterator, bool> p = _generated.insert(make_pair(source, list<string>()));
- assert(p.second);
- _curr = p.first;
- }
}
void
diff --git a/cpp/src/slice2java/Main.cpp b/cpp/src/slice2java/Main.cpp
index e8428077d58..0ed57b5d415 100644
--- a/cpp/src/slice2java/Main.cpp
+++ b/cpp/src/slice2java/Main.cpp
@@ -224,12 +224,14 @@ main(int argc, char* argv[])
Slice::setErrorStream(os);
}
+ FileTracker::instance()->setSource(*i);
+
Preprocessor icecpp(argv[0], *i, cppArgs);
FILE* cppHandle = icecpp.preprocess(false);
if(cppHandle == 0)
{
- FileTracker::instance()->setSource(*i, os.str(), true);
+ FileTracker::instance()->setOutput(os.str(), true);
status = EXIT_FAILURE;
break;
}
@@ -263,7 +265,7 @@ main(int argc, char* argv[])
if(parseStatus == EXIT_FAILURE)
{
p->destroy();
- FileTracker::instance()->setSource(*i, os.str(), true);
+ FileTracker::instance()->setOutput(os.str(), true);
status = EXIT_FAILURE;
}
else
@@ -292,7 +294,7 @@ main(int argc, char* argv[])
ChecksumMap m = createChecksums(p);
copy(m.begin(), m.end(), inserter(checksums, checksums.begin()));
}
- FileTracker::instance()->setSource(*i, os.str(), false);
+ FileTracker::instance()->setOutput(os.str(), false);
}
catch(const Slice::FileException& ex)
{
@@ -302,7 +304,7 @@ main(int argc, char* argv[])
FileTracker::instance()->cleanup();
p->destroy();
os << argv[0] << ": error: " << ex.reason() << endl;
- FileTracker::instance()->setSource(*i, os.str(), true);
+ FileTracker::instance()->setOutput(os.str(), true);
status = EXIT_FAILURE;
break;
}