summaryrefslogtreecommitdiff
path: root/cpp/src/slice2objc/ObjCUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2objc/ObjCUtil.cpp')
-rw-r--r--cpp/src/slice2objc/ObjCUtil.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/cpp/src/slice2objc/ObjCUtil.cpp b/cpp/src/slice2objc/ObjCUtil.cpp
index 8247915d841..852af9ba2af 100644
--- a/cpp/src/slice2objc/ObjCUtil.cpp
+++ b/cpp/src/slice2objc/ObjCUtil.cpp
@@ -1058,6 +1058,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
assert(dc);
StringList globalMetaData = dc->getMetaData();
int headerDir = 0;
+ int dllExport = 0;
for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end(); ++r)
{
string s = *r;
@@ -1066,6 +1067,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
if(s.find(_objcPrefix) == 0)
{
static const string objcHeaderDirPrefix = "objc:header-dir:";
+ static const string objcDllExportPrefix = "objc:dll-export:";
if(s.find(objcHeaderDirPrefix) == 0 && s.size() > objcHeaderDirPrefix.size())
{
headerDir++;
@@ -1079,6 +1081,19 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
}
continue;
}
+ else if(s.find(objcDllExportPrefix) == 0 && s.size() > objcDllExportPrefix.size())
+ {
+ dllExport++;
+ if(dllExport > 1)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s
+ << "': directive can appear only once per file";
+ emitWarning(file, -1, ostr.str());
+ _history.insert(s);
+ }
+ continue;
+ }
ostringstream ostr;
ostr << "ignoring invalid global metadata `" << s << "'";
emitWarning(file, -1, ostr.str());