diff --git a/src/shared/cplusplus/Scope.cpp b/src/shared/cplusplus/Scope.cpp index db05d1bdc93774c2c3465378115adfc8aeeb9457..efb6a369aec6d0984c4b2c8701aee37687081310 100644 --- a/src/shared/cplusplus/Scope.cpp +++ b/src/shared/cplusplus/Scope.cpp @@ -148,27 +148,45 @@ Scope *Scope::enclosingBlockScope() const } bool Scope::isNamespaceScope() const -{ return dynamic_cast<const Namespace *>(_owner) != 0; } +{ + if (_owner) + return _owner->isNamespace(); + return false; +} bool Scope::isClassScope() const -{ return dynamic_cast<const Class *>(_owner) != 0; } +{ + if (_owner) + return _owner->isClass(); + return false; +} bool Scope::isEnumScope() const -{ return dynamic_cast<const Enum *>(_owner) != 0; } +{ + if (_owner) + return _owner->isEnum(); + return false; +} bool Scope::isBlockScope() const -{ return dynamic_cast<const Block *>(_owner) != 0; } +{ + if (_owner) + return _owner->isBlock(); + return false; +} bool Scope::isPrototypeScope() const { - if (const Function *f = dynamic_cast<const Function *>(_owner)) + Function *f = 0; + if (_owner && 0 != (f = _owner->asFunction())) return f->arguments() == this; return false; } bool Scope::isFunctionScope() const { - if (const Function *f = dynamic_cast<const Function *>(_owner)) + Function *f = 0; + if (_owner && 0 != (f = _owner->asFunction())) return f->arguments() != this; return false; }