1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef _IDLC_ASTSCOPE_HXX_ 28 #define _IDLC_ASTSCOPE_HXX_ 29 30 #include <idlc/idlc.hxx> 31 32 class AstExpression; 33 #include <idlc/astdeclaration.hxx> 34 #include <idlc/astexpression.hxx> 35 36 class AstScope 37 { 38 public: 39 AstScope(NodeType nodeType); 40 virtual ~AstScope(); 41 42 NodeType getScopeNodeType() const 43 { return m_nodeType; } 44 45 virtual AstDeclaration* addDeclaration(AstDeclaration* pDecl); 46 47 sal_uInt32 nMembers() const 48 { return (sal_uInt32)(m_declarations.size()); } 49 DeclList::const_iterator getIteratorBegin() const 50 { return m_declarations.begin(); } 51 DeclList::const_iterator getIteratorEnd() const 52 { return m_declarations.end(); } 53 sal_uInt16 getNodeCount(NodeType nType); 54 55 // Name look up mechanism 56 AstDeclaration* lookupByName(const ::rtl::OString& scopedName); 57 // Look up the identifier 'name' specified only in the local scope 58 AstDeclaration* lookupByNameLocal(const ::rtl::OString& name) const; 59 60 AstDeclaration* lookupInForwarded(const ::rtl::OString& scopedName); 61 AstDeclaration* lookupInInherited(const ::rtl::OString& scopedName) const; 62 63 // Look up a predefined type by its ExprType 64 AstDeclaration* lookupPrimitiveType(ExprType type); 65 66 AstDeclaration* lookupForAdd(AstDeclaration* pDecl); 67 68 protected: 69 inline AstDeclaration const * getLast() const 70 { return m_declarations.back(); } 71 72 private: 73 DeclList m_declarations; 74 NodeType m_nodeType; 75 }; 76 77 #endif // _IDLC_ASTSCOPE_HXX_ 78 79