xref: /trunk/main/autodoc/source/parser_i/inc/s2_luidl/pe_property.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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 
28 #ifndef ADC_UIDL_PE_PROPERTY_HXX
29 #define ADC_UIDL_PE_PROPERTY_HXX
30 
31 
32 
33 // USED SERVICES
34     // BASE CLASSES
35 
36 #include <s2_luidl/parsenv2.hxx>
37 #include <s2_luidl/pestate.hxx>
38     // COMPONENTS
39 #include <ary/idl/i_property.hxx>
40     // PARAMETERS
41 #include <ary/idl/i_gate.hxx>
42 
43 
44 namespace csi
45 {
46 namespace uidl
47 {
48 
49 
50 class PE_Variable;
51 
52 class PE_Property : public UnoIDL_PE,
53                     public ParseEnvState
54 {
55   public:
56     typedef ary::idl::Ce_id                     Ce_id;
57     typedef ary::idl::Type_id                   Type_id;
58     typedef ary::idl::Property::Stereotypes     Stereotypes;
59 
60 
61                         PE_Property(
62                             const Ce_id &       i_rCurOwner );
63 
64     virtual void        EstablishContacts(
65                             UnoIDL_PE *         io_pParentPE,
66                             ary::Repository &
67                                                 io_rRepository,
68                             TokenProcessing_Result &
69                                                 o_rResult );
70     virtual             ~PE_Property();
71 
72     virtual void        ProcessToken(
73                             const Token &       i_rToken );
74 
75     virtual void        Process_Stereotype(
76                             const TokStereotype &
77                                                 i_rToken );
78     virtual void        Process_MetaType(
79                             const TokMetaType & i_rToken );
80     virtual void        Process_Punctuation(
81                             const TokPunctuation &
82                                                 i_rToken );
83     virtual void        Process_Default();
84 
85     void                PresetOptional()        { bIsOptional = true; }
86     void                PresetStereotypes(
87                             Stereotypes::E_Flags
88                                                 i_eFlag )
89                                                 { aStereotypes.Set_Flag(i_eFlag); }
90   private:
91     enum E_State
92     {
93         e_none,
94         e_start,
95         expect_variable,
96         in_variable
97     };
98 
99     virtual void        InitData();
100     virtual void        ReceiveData();
101     virtual void        TransferData();
102     virtual UnoIDL_PE & MyPE();
103 
104     // DATA
105     E_State             eState;
106     const Ce_id *       pCurOwner;
107 
108     Dyn<PE_Variable>    pPE_Variable;
109 
110         // object-data
111     Type_id             nCurParsedType;
112     String              sCurParsedName;
113     bool                bIsOptional;
114     Stereotypes         aStereotypes;
115 };
116 
117 
118 }   // namespace uidl
119 }   // namespace csi
120 
121 
122 #endif
123 
124