summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cpp/Main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2cpp/Main.cpp')
-rw-r--r--cpp/src/slice2cpp/Main.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/cpp/src/slice2cpp/Main.cpp b/cpp/src/slice2cpp/Main.cpp
index 7378da1b118..ebc2d08b8f3 100644
--- a/cpp/src/slice2cpp/Main.cpp
+++ b/cpp/src/slice2cpp/Main.cpp
@@ -266,6 +266,17 @@ compile(const vector<string>& argv)
UnitPtr u = Unit::createUnit(false, false, ice, underscore);
int parseStatus = u->parse(*i, cppHandle, debug);
+
+ string ext = headerExtension;
+ static const string headerExtPrefix = "cpp:header-ext:";
+ DefinitionContextPtr dc = u->findDefinitionContext(u->topLevelFile());
+ assert(dc);
+ string meta = dc->findMetaData(headerExtPrefix);
+ if(meta.size() > headerExtPrefix.size())
+ {
+ ext = meta.substr(headerExtPrefix.size());
+ }
+
u->destroy();
if(parseStatus == EXIT_FAILURE)
@@ -274,7 +285,7 @@ compile(const vector<string>& argv)
}
if(!icecpp->printMakefileDependencies(os, depend ? Preprocessor::CPlusPlus : Preprocessor::SliceXML,
- includePaths, "-D__SLICE2CPP__", sourceExtension, headerExtension))
+ includePaths, "-D__SLICE2CPP__", sourceExtension, ext))
{
return EXIT_FAILURE;
}