diff options
Diffstat (limited to 'cpp/src')
-rwxr-xr-x | cpp/src/Slice/CsUtil.cpp | 35 | ||||
-rw-r--r-- | cpp/src/Slice/Parser.cpp | 9 | ||||
-rwxr-xr-x | cpp/src/Slice/VbUtil.cpp | 35 | ||||
-rwxr-xr-x | cpp/src/slice2cs/Gen.cpp | 24 | ||||
-rwxr-xr-x | cpp/src/slice2vb/Gen.cpp | 24 |
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"; |