summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rwxr-xr-xcpp/src/Slice/CsUtil.cpp35
-rw-r--r--cpp/src/Slice/Parser.cpp9
-rwxr-xr-xcpp/src/Slice/VbUtil.cpp35
-rwxr-xr-xcpp/src/slice2cs/Gen.cpp24
-rwxr-xr-xcpp/src/slice2vb/Gen.cpp24
5 files changed, 93 insertions, 34 deletions
diff --git a/cpp/src/Slice/CsUtil.cpp b/cpp/src/Slice/CsUtil.cpp
index b956e983d24..8edd505d628 100755
--- a/cpp/src/Slice/CsUtil.cpp
+++ b/cpp/src/Slice/CsUtil.cpp
@@ -165,7 +165,7 @@ Slice::CsGenerator::typeToString(const TypePtr& type)
}
SequencePtr seq = SequencePtr::dynamicCast(type);
- if(seq && !seq->hasMetaData("cs:collection"))
+ if(seq && !seq->hasMetaData("clr:collection"))
{
return typeToString(seq->type()) + "[]";
}
@@ -205,7 +205,7 @@ Slice::CsGenerator::isValueType(const TypePtr& type)
StructPtr s = StructPtr::dynamicCast(type);
if(s)
{
- return !s->hasMetaData("cs:class");
+ return !s->hasMetaData("clr:class");
}
if(EnumPtr::dynamicCast(type))
{
@@ -533,7 +533,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
TypePtr type = seq->type();
string typeS = typeToString(type);
- bool isArray = !seq->hasMetaData("cs:collection");
+ bool isArray = !seq->hasMetaData("clr:collection");
string limitID = isArray ? "Length" : "Count";
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
@@ -777,7 +777,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
out << sb;
if(isArray)
{
- if(st->hasMetaData("cs:class"))
+ if(st->hasMetaData("clr:class"))
{
out << nl << param << "[__ix] = new " << typeS << "();";
}
@@ -1073,7 +1073,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
StringList localMetaData = cont->getMetaData();
StringList::const_iterator p;
- static const string prefix = "cs:";
+ static const string prefix = "clr:";
for(p = globalMetaData.begin(); p != globalMetaData.end(); ++p)
{
@@ -1091,6 +1091,31 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
for(p = localMetaData.begin(); p != localMetaData.end(); ++p)
{
string s = *p;
+ if(s.find("cs:") == 0) // TODO: remove this statement once "cs:" is a hard error.
+ {
+ if(SequencePtr::dynamicCast(cont))
+ {
+ if(s.substr(3) == "collection")
+ {
+ cout << file << ":" << cont->line() << ": warning: `cs:' metadata prefix is deprecated; "
+ << "use `clr:' instead" << endl;
+ cont->addMetaData("clr:collection");
+ }
+ }
+ else if(StructPtr::dynamicCast(cont))
+ {
+ if(s.substr(3) == "class")
+ {
+ cout << file << ":" << cont->line() << ": warning: `cs:' metadata prefix is deprecated; "
+ << "use `clr:' instead" << endl;
+ }
+ cont->addMetaData("clr:class");
+ }
+ else
+ {
+ cout << file << ":" << cont->line() << ": warning: ignoring invalid metadata `" << s << "'" << endl;
+ }
+ } // End TODO
if(_history.count(s) == 0)
{
if(s.find(prefix) == 0)
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index 3434d8bbf1a..a19bea957d3 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -386,6 +386,15 @@ Slice::Contained::setMetaData(const list<string>& metaData)
_metaData = metaData;
}
+//
+// TODO: remove this method once "cs:" and "vb:" prefix are hard errors.
+//
+void
+Slice::Contained::addMetaData(const string& s)
+{
+ _metaData.push_back(s);
+}
+
bool
Slice::Contained::operator<(const Contained& rhs) const
{
diff --git a/cpp/src/Slice/VbUtil.cpp b/cpp/src/Slice/VbUtil.cpp
index 40e973fba18..30c5342eff0 100755
--- a/cpp/src/Slice/VbUtil.cpp
+++ b/cpp/src/Slice/VbUtil.cpp
@@ -173,7 +173,7 @@ Slice::VbGenerator::typeToString(const TypePtr& type)
}
SequencePtr seq = SequencePtr::dynamicCast(type);
- if(seq && !seq->hasMetaData("vb:collection"))
+ if(seq && !seq->hasMetaData("clr:collection"))
{
return typeToString(seq->type()) + "()";
}
@@ -213,7 +213,7 @@ Slice::VbGenerator::isValueType(const TypePtr& type)
StructPtr s = StructPtr::dynamicCast(type);
if(s)
{
- return !s->hasMetaData("vb:class");
+ return !s->hasMetaData("clr:class");
}
if(EnumPtr::dynamicCast(type))
{
@@ -552,7 +552,7 @@ Slice::VbGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
TypePtr type = seq->type();
string typeS = typeToString(type);
- bool isArray = !seq->hasMetaData("vb:collection");
+ bool isArray = !seq->hasMetaData("clr:collection");
string limitID = isArray ? "Length" : "Count";
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
@@ -815,7 +815,7 @@ Slice::VbGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
out.inc();
if(isArray)
{
- if(st->hasMetaData("vb:class"))
+ if(st->hasMetaData("clr:class"))
{
out << nl << param << "(__ix) = New " << typeS;
}
@@ -1122,7 +1122,7 @@ Slice::VbGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
StringList localMetaData = cont->getMetaData();
StringList::const_iterator p;
- static const string prefix = "vb:";
+ static const string prefix = "clr:";
for(p = globalMetaData.begin(); p != globalMetaData.end(); ++p)
{
@@ -1140,6 +1140,31 @@ Slice::VbGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
for(p = localMetaData.begin(); p != localMetaData.end(); ++p)
{
string s = *p;
+ if(s.find("vb:") == 0) // TODO: remove this statement once "vb:" is a hard error.
+ {
+ if(SequencePtr::dynamicCast(cont))
+ {
+ if(s.substr(3) == "collection")
+ {
+ cout << file << ":" << cont->line() << ": warning: `vb:' metadata prefix is deprecated; "
+ << "use `clr:' instead" << endl;
+ cont->addMetaData("clr:collection");
+ }
+ }
+ else if(StructPtr::dynamicCast(cont))
+ {
+ if(s.substr(3) == "class")
+ {
+ cout << file << ":" << cont->line() << ": warning: `vb:' metadata prefix is deprecated; "
+ << "use `clr:' instead" << endl;
+ }
+ cont->addMetaData("clr:class");
+ }
+ else
+ {
+ cout << file << ":" << cont->line() << ": warning: ignoring invalid metadata `" << s << "'" << endl;
+ }
+ } // End TODO
if(_history.count(s) == 0)
{
if(s.find(prefix) == 0)
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index 85b9091c726..37ea7119aa4 100755
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -376,7 +376,7 @@ Slice::CsVisitor::writeDispatch(const ClassDefPtr& p)
for(q = inParams.begin(); q != inParams.end(); ++q)
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("cs:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << fixId(q->second) << ".__patch();";
@@ -505,7 +505,7 @@ Slice::CsVisitor::writeDispatch(const ClassDefPtr& p)
for(q = inParams.begin(); q != inParams.end(); ++q)
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("cs:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << fixId(q->second) << ".__patch();";
@@ -1541,7 +1541,7 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p)
//
// No need to generate anything if the sequence is mapped as an array.
//
- if(!p->hasMetaData("cs:collection"))
+ if(!p->hasMetaData("clr:collection"))
{
return;
}
@@ -2148,7 +2148,7 @@ Slice::Gen::TypesVisitor::visitStructStart(const StructPtr& p)
_out << eb;
}
- if(p->hasMetaData("cs:class"))
+ if(p->hasMetaData("clr:class"))
{
_out << sp << nl << "public class " << name << " : _System.ICloneable";
}
@@ -2174,7 +2174,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
_out << sp << nl << "#endregion"; // Slice data members
- bool isClass = p->hasMetaData("cs:class");
+ bool isClass = p->hasMetaData("clr:class");
_out << sp << nl << "#region Constructor";
if(isClass)
@@ -2669,7 +2669,7 @@ Slice::Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p)
_out << eb;
_out << eb;
SequencePtr seq = SequencePtr::dynamicCast(p->valueType());
- bool valueIsArray = seq && !seq->hasMetaData("cs:collection");
+ bool valueIsArray = seq && !seq->hasMetaData("clr:collection");
if(valueIsArray)
{
_out << nl << vs << "[] __vlhs = new " << toArrayAlloc(vs + "[]", "Count") << ';';
@@ -2849,7 +2849,7 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
bool isClass = false;
ContainedPtr cont = ContainedPtr::dynamicCast(p->container());
assert(cont);
- if(StructPtr::dynamicCast(cont) && cont->hasMetaData("cs:class"))
+ if(StructPtr::dynamicCast(cont) && cont->hasMetaData("clr:class"))
{
baseTypes = DotNet::ICloneable;
}
@@ -3828,7 +3828,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("cs:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << param << ".__patch();";
@@ -3846,7 +3846,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(ret);
- bool patchStruct = st && !st->hasMetaData("cs:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << "__ret.__patch();";
@@ -4266,7 +4266,7 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("cs:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << param << ".__patch();";
@@ -4284,7 +4284,7 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(ret);
- bool patchStruct = st && !st->hasMetaData("cs:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << "__ret.__patch();";
@@ -4822,7 +4822,7 @@ Slice::Gen::BaseImplVisitor::writeValue(const TypePtr& type)
StructPtr st = StructPtr::dynamicCast(type);
if(st)
{
- return st->hasMetaData("cs:class") ? "null" : "new " + fixId(st->scoped()) + "()";
+ return st->hasMetaData("clr:class") ? "null" : "new " + fixId(st->scoped()) + "()";
}
return "null";
diff --git a/cpp/src/slice2vb/Gen.cpp b/cpp/src/slice2vb/Gen.cpp
index e805c67b8ed..fc8bc3ba589 100755
--- a/cpp/src/slice2vb/Gen.cpp
+++ b/cpp/src/slice2vb/Gen.cpp
@@ -375,7 +375,7 @@ Slice::VbVisitor::writeDispatch(const ClassDefPtr& p)
for(q = inParams.begin(); q != inParams.end(); ++q)
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("vb:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << fixId(q->second) << ".__patch()";
@@ -503,7 +503,7 @@ Slice::VbVisitor::writeDispatch(const ClassDefPtr& p)
for(q = inParams.begin(); q != inParams.end(); ++q)
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("vb:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << fixId(q->second) << ".__patch()";
@@ -1571,7 +1571,7 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p)
//
// No need to generate anything if the sequence is mapped as an array.
//
- if(!p->hasMetaData("vb:collection"))
+ if(!p->hasMetaData("clr:collection"))
{
return;
}
@@ -2314,7 +2314,7 @@ Slice::Gen::TypesVisitor::visitStructStart(const StructPtr& p)
_out << nl << "End Class";
}
- if(p->hasMetaData("vb:class"))
+ if(p->hasMetaData("clr:class"))
{
_out << sp << nl << "Public Class " << name << " Implements _System.ICloneable";
}
@@ -2343,7 +2343,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
_out.zeroIndent();
_out << sp << nl << "#End Region"; // Slice data members
- bool isClass = p->hasMetaData("vb:class");
+ bool isClass = p->hasMetaData("clr:class");
_out << sp << nl << "#Region \"Constructor";
if(isClass)
@@ -2958,7 +2958,7 @@ Slice::Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p)
_out.dec();
_out << nl << "Next";
SequencePtr seq = SequencePtr::dynamicCast(p->valueType());
- bool valueIsArray = seq && !seq->hasMetaData("vb:collection");
+ bool valueIsArray = seq && !seq->hasMetaData("clr:collection");
if(valueIsArray)
{
_out << nl << "Dim __vlhs As " << vs << "() = New " << toArrayAlloc(vs + "()", "Count - 1") << " {}";
@@ -3207,7 +3207,7 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
bool isClass = false;
ContainedPtr cont = ContainedPtr::dynamicCast(p->container());
assert(cont);
- if(StructPtr::dynamicCast(cont) && cont->hasMetaData("vb:class"))
+ if(StructPtr::dynamicCast(cont) && cont->hasMetaData("clr:class"))
{
baseTypes = DotNet::ICloneable;
}
@@ -4317,7 +4317,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("vb:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << param << ".__patch()";
@@ -4335,7 +4335,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(ret);
- bool patchStruct = st && !st->hasMetaData("vb:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << "__ret.__patch()";
@@ -4800,7 +4800,7 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(q->first);
- bool patchStruct = st && !st->hasMetaData("vb:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << param << ".__patch()";
@@ -4818,7 +4818,7 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
else
{
StructPtr st = StructPtr::dynamicCast(ret);
- bool patchStruct = st && !st->hasMetaData("vb:class") && st->classDataMembers().size() != 0;
+ bool patchStruct = st && !st->hasMetaData("clr:class") && st->classDataMembers().size() != 0;
if(patchStruct)
{
_out << nl << "__ret.__patch()";
@@ -5423,7 +5423,7 @@ Slice::Gen::BaseImplVisitor::writeValue(const TypePtr& type)
StructPtr st = StructPtr::dynamicCast(type);
if(st)
{
- return st->hasMetaData("vb:class") ? "Nothing" : "New " + fixId(st->scoped()) + "()";
+ return st->hasMetaData("clr:class") ? "Nothing" : "New " + fixId(st->scoped()) + "()";
}
return "Nothing";