summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cpp/Gen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r--cpp/src/slice2cpp/Gen.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 37d0a42a8b8..eab9a81b8cb 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -978,6 +978,7 @@ Slice::Gen::generate(const UnitPtr& p)
{
string md = *q++;
static const string includePrefix = "cpp:include:";
+ static const string sourceIncludePrefix = "cpp:source-include:";
if(md.find(includePrefix) == 0)
{
if(md.size() > includePrefix.size())
@@ -992,6 +993,20 @@ Slice::Gen::generate(const UnitPtr& p)
globalMetaData.remove(md);
}
}
+ else if(md.find(sourceIncludePrefix) == 0)
+ {
+ if(md.size() > sourceIncludePrefix.size())
+ {
+ C << nl << "#include <" << md.substr(sourceIncludePrefix.size()) << ">";
+ }
+ else
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << md << "'";
+ dc->warning(InvalidMetaData, file, -1, ostr.str());
+ globalMetaData.remove(md);
+ }
+ }
}
dc->setMetaData(globalMetaData);
}
@@ -5371,6 +5386,7 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
if(s.find(prefix) == 0)
{
static const string cppIncludePrefix = "cpp:include:";
+ static const string cppSourceIncludePrefix = "cpp:source-include";
static const string cppHeaderExtPrefix = "cpp:header-ext:";
static const string cppSourceExtPrefix = "cpp:source-ext:";
static const string cppDllExportPrefix = "cpp:dll-export:";
@@ -5380,6 +5396,10 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
continue;
}
+ else if(s.find(cppSourceIncludePrefix) == 0 && s.size() > cppSourceIncludePrefix.size())
+ {
+ continue;
+ }
else if(s.find(cppHeaderExtPrefix) == 0 && s.size() > cppHeaderExtPrefix.size())
{
headerExtension++;