1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: pe_enum.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef ADC_CPP_PE_ENUM_HXX
32 #define ADC_CPP_PE_ENUM_HXX
41 #include <semantic/callf.hxx>
42 #include <semantic/sub_peu.hxx>
44 // #include "all_toks.hxx"
52 class PE_Enum
: public cpp::Cpp_PE
57 expectName
, /// after "enum"
58 gotName
, /// after name, before : or {
60 afterBlock
, /// after ending }
66 is_declaration
, // normal
67 is_implicit_declaration
, // like in: enum Abc { rot, gelb, blau } aAbc;
68 is_qualified_typename
// like in: enum Abc * fx();
75 virtual void Call_Handler(
76 const cpp::Token
& i_rTok
);
78 E_KindOfResult
Result_KindOf() const;
79 const String
& Result_LocalName() const;
80 const String
& Result_FirstNameSegment() const;
83 typedef SubPe
< PE_Enum
, PE_EnumValue
> SP_EnumValue
;
84 typedef SubPeUse
< PE_Enum
, PE_EnumValue
> SPU_EnumValue
;
86 void Setup_StatusFunctions();
87 virtual void InitData();
88 virtual void TransferData();
89 void Hdl_SyntaxError( const char *);
91 void On_expectName_Identifier( const char * );
92 void On_expectName_SwBracket_Left( const char * );
94 void On_gotName_SwBracket_Left( const char * );
95 void On_gotName_Return2Type( const char * );
97 void On_bodyStd_Identifier( const char * );
98 void On_bodyStd_SwBracket_Right( const char * );
100 void On_afterBlock_Semicolon( const char * );
101 void On_afterBlock_Return2Type( const char * );
104 Dyn
< PeStatusArray
<PE_Enum
> >
106 Dyn
<SP_EnumValue
> pSpValue
;
107 Dyn
<SPU_EnumValue
> pSpuValue
;
110 ary::cpp::Enum
* pCurObject
;
112 E_KindOfResult eResult_KindOf
;
118 inline PE_Enum::E_KindOfResult
119 PE_Enum::Result_KindOf() const
121 return eResult_KindOf
;
124 inline const String
&
125 PE_Enum::Result_LocalName() const
130 inline const String
&
131 PE_Enum::Result_FirstNameSegment() const