diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-09-20 11:36:45 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-09 19:10:09 -0300 |
commit | 5179bca73955373e087d6b51edcabf038c964ac8 (patch) | |
tree | 255a4ca87763fb6c203ee31aa91815a6c0d8f548 /parser | |
parent | c182be3e4c89fe81c15722708d8b712598a528b8 (diff) |
Anonymous enums now supported.
Diffstat (limited to 'parser')
-rw-r--r-- | parser/binder.cpp | 4 | ||||
-rw-r--r-- | parser/codemodel.cpp | 10 | ||||
-rw-r--r-- | parser/codemodel.h | 3 |
3 files changed, 16 insertions, 1 deletions
diff --git a/parser/binder.cpp b/parser/binder.cpp index 8b6c4c024..faace02ca 100644 --- a/parser/binder.cpp +++ b/parser/binder.cpp @@ -657,7 +657,8 @@ void Binder::visitEnumSpecifier(EnumSpecifierAST *node) name_cc.run(node->name); QString name = name_cc.name(); - if (name.isEmpty()) { + bool isAnonymous = name.isEmpty(); + if (isAnonymous) { // anonymous enum QString key = _M_context.join("::"); int current = ++_M_anonymous_enums[key]; @@ -669,6 +670,7 @@ void Binder::visitEnumSpecifier(EnumSpecifierAST *node) _M_current_enum->setAccessPolicy(_M_current_access); updateItemPosition(_M_current_enum->toItem(), node); _M_current_enum->setName(name); + _M_current_enum->setAnonymous(isAnonymous); _M_current_enum->setScope(enumScope->qualifiedName()); _M_qualified_types[_M_current_enum->qualifiedName().join(".")] = QString(); diff --git a/parser/codemodel.cpp b/parser/codemodel.cpp index 419471505..0cc14fcce 100644 --- a/parser/codemodel.cpp +++ b/parser/codemodel.cpp @@ -727,6 +727,16 @@ void _EnumModelItem::removeEnumerator(EnumeratorModelItem item) _M_enumerators.removeAt(_M_enumerators.indexOf(item)); } +bool _EnumModelItem::isAnonymous() const +{ + return _M_anonymous; +} + +void _EnumModelItem::setAnonymous(bool anonymous) +{ + _M_anonymous = anonymous; +} + // --------------------------------------------------------------------------- QString _EnumeratorModelItem::value() const { diff --git a/parser/codemodel.h b/parser/codemodel.h index 3ea94480f..f87f57a35 100644 --- a/parser/codemodel.h +++ b/parser/codemodel.h @@ -736,6 +736,8 @@ public: EnumeratorList enumerators() const; void addEnumerator(EnumeratorModelItem item); void removeEnumerator(EnumeratorModelItem item); + bool isAnonymous() const; + void setAnonymous(bool anonymous); protected: _EnumModelItem(CodeModel *model, int kind = __node_kind) @@ -745,6 +747,7 @@ protected: private: CodeModel::AccessPolicy _M_accessPolicy; EnumeratorList _M_enumerators; + bool _M_anonymous; private: _EnumModelItem(const _EnumModelItem &other); |