summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Preprocessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Slice/Preprocessor.cpp')
-rw-r--r--cpp/src/Slice/Preprocessor.cpp59
1 files changed, 42 insertions, 17 deletions
diff --git a/cpp/src/Slice/Preprocessor.cpp b/cpp/src/Slice/Preprocessor.cpp
index 68072500ece..352cdf4147a 100644
--- a/cpp/src/Slice/Preprocessor.cpp
+++ b/cpp/src/Slice/Preprocessor.cpp
@@ -136,18 +136,12 @@ Slice::Preprocessor::normalizeIncludePath(const string& path)
return result;
}
-FILE*
-Slice::Preprocessor::preprocess(bool keepComments)
+namespace
{
- if(!checkInputFile())
- {
- return 0;
- }
- //
- // Build arguments list.
- //
- vector<string> args = _args;
+vector<string>
+baseArgs(vector<string> args, bool keepComments, const string& extraArgs, const string& fileName)
+{
if(keepComments)
{
args.push_back("-C");
@@ -157,7 +151,41 @@ Slice::Preprocessor::preprocess(bool keepComments)
ostringstream version;
version << "-DICE_VERSION=" << ICE_INT_VERSION;
args.push_back(version.str());
- args.push_back(_fileName);
+
+ args.push_back("-DICE_SLICE2CPP=1");
+ args.push_back("-DICE_SLICE2CS=2");
+ args.push_back("-DICE_SLICE2FREEZE=3");
+ args.push_back("-DICE_SLICE2FREEZEJ=4");
+ args.push_back("-DICE_SLICE2HTML=5");
+ args.push_back("-DICE_SLICE2JAVA=6");
+ args.push_back("-DICE_SLICE2PHP=7");
+ args.push_back("-DICE_SLICE2PY=8");
+ args.push_back("-DICE_SLICE2RB=9");
+ args.push_back("-DICE_TRANSFORMDB=10");
+ args.push_back("-DICE_DUMPDB=11");
+
+ if(!extraArgs.empty())
+ {
+ args.push_back(extraArgs);
+ }
+ args.push_back(fileName);
+ return args;
+}
+
+}
+
+FILE*
+Slice::Preprocessor::preprocess(bool keepComments, const string& extraArgs)
+{
+ if(!checkInputFile())
+ {
+ return 0;
+ }
+
+ //
+ // Build arguments list.
+ //
+ vector<string> args = baseArgs(_args, keepComments, extraArgs, _fileName);
const char** argv = new const char*[args.size() + 1];
argv[0] = "mcpp";
for(unsigned int i = 0; i < args.size(); ++i)
@@ -251,7 +279,8 @@ Slice::Preprocessor::preprocess(bool keepComments)
bool
Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<string>& includePaths,
- const string& cppSourceExt, const string& optValue)
+ const std::string& extraArgs, const string& cppSourceExt,
+ const string& optValue)
{
if(!checkInputFile())
{
@@ -272,11 +301,7 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
//
// Build arguments list.
//
- vector<string> args = _args;
- args.push_back("-M");
- args.push_back("-e");
- args.push_back("en_us.utf8");
- args.push_back(_fileName);
+ vector<string> args = baseArgs(_args, false, extraArgs, _fileName);
const char** argv = new const char*[args.size() + 1];
for(unsigned int i = 0; i < args.size(); ++i)