diff options
Diffstat (limited to 'cpp/src/slice2cpp')
-rw-r--r-- | cpp/src/slice2cpp/Main.cpp | 13 |
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; } |