diff options
author | Mark Spruiell <mes@zeroc.com> | 2006-05-23 23:23:07 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2006-05-23 23:23:07 +0000 |
commit | 098b4c0a8aef0fca51eb08d4d46cf6c06a7c6d84 (patch) | |
tree | d709c4d965e7ffd87f170ea05e73a2690ea090df /cpp/src/Slice/Parser.cpp | |
parent | adding Java5 mapping; bug 848; bug 863 (diff) | |
download | ice-098b4c0a8aef0fca51eb08d4d46cf6c06a7c6d84.tar.bz2 ice-098b4c0a8aef0fca51eb08d4d46cf6c06a7c6d84.tar.xz ice-098b4c0a8aef0fca51eb08d4d46cf6c06a7c6d84.zip |
global metadata fixes
Diffstat (limited to 'cpp/src/Slice/Parser.cpp')
-rw-r--r-- | cpp/src/Slice/Parser.cpp | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp index 54e09acdd37..09a0217ab7f 100644 --- a/cpp/src/Slice/Parser.cpp +++ b/cpp/src/Slice/Parser.cpp @@ -38,8 +38,8 @@ toLower(string& s) // DefinitionContext // ---------------------------------------------------------------------- -Slice::DefinitionContext::DefinitionContext(int includeLevel) : - _includeLevel(includeLevel), _seenDefinition(false) +Slice::DefinitionContext::DefinitionContext(int includeLevel, const StringList& metaData) : + _includeLevel(includeLevel), _metaData(metaData), _seenDefinition(false) { } @@ -82,7 +82,7 @@ Slice::DefinitionContext::hasMetaData() const void Slice::DefinitionContext::setMetaData(const StringList& metaData) { - _metaData= metaData; + _metaData = metaData; } string @@ -4693,9 +4693,10 @@ Slice::DataMember::DataMember(const ContainerPtr& container, const string& name, // ---------------------------------------------------------------------- UnitPtr -Slice::Unit::createUnit(bool ignRedefs, bool all, bool allowIcePrefix, bool caseSensitive) +Slice::Unit::createUnit(bool ignRedefs, bool all, bool allowIcePrefix, bool caseSensitive, + const StringList& defaultGlobalMetadata) { - return new Unit(ignRedefs, all, allowIcePrefix, caseSensitive); + return new Unit(ignRedefs, all, allowIcePrefix, caseSensitive, defaultGlobalMetadata); } bool @@ -4902,21 +4903,19 @@ Slice::Unit::currentIncludeLevel() const } void -Slice::Unit::setGlobalMetaData(const StringList& metaData) +Slice::Unit::addGlobalMetaData(const StringList& metaData) { DefinitionContextPtr dc = currentDefinitionContext(); assert(dc); - if(dc->hasMetaData()) - { - error("global metadata can only be set once per file"); - } - else if(dc->seenDefinition()) + if(dc->seenDefinition()) { error("global metadata must appear before any definitions"); } else { - dc->setMetaData(metaData); + StringList l = dc->getMetaData(); + copy(metaData.begin(), metaData.end(), back_inserter(l)); + dc->setMetaData(l); } } @@ -4997,7 +4996,7 @@ Slice::Unit::currentDefinitionContext() const void Slice::Unit::pushDefinitionContext() { - _definitionContextStack.push(new DefinitionContext(_currentIncludeLevel)); + _definitionContextStack.push(new DefinitionContext(_currentIncludeLevel, _defaultGlobalMetadata)); } void @@ -5293,13 +5292,15 @@ Slice::Unit::builtin(Builtin::Kind kind) return builtin; } -Slice::Unit::Unit(bool ignRedefs, bool all, bool allowIcePrefix, bool caseSensitive) : +Slice::Unit::Unit(bool ignRedefs, bool all, bool allowIcePrefix, bool caseSensitive, + const StringList& defaultGlobalMetadata) : SyntaxTreeBase(0), Container(0), _ignRedefs(ignRedefs), _all(all), _allowIcePrefix(allowIcePrefix), _caseSensitive(caseSensitive), + _defaultGlobalMetadata(defaultGlobalMetadata), _errors(0) { _unit = this; |