xref: /AOO41X/main/autodoc/source/parser_i/inc/s2_luidl/pe_file2.hxx (revision 1c78a5d6c0093dece4c096ba53051800fbad6e33)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef LUIDL_PE_FILE2_HXX
25 #define LUIDL_PE_FILE2_HXX
26 
27 
28 
29 // USED SERVICES
30     // BASE CLASSES
31 #include <s2_luidl/parsenv2.hxx>
32 #include <s2_luidl/pestate.hxx>
33     // COMPONENTS
34     // PARAMETERS
35 
36 
37 namespace ary
38 {
39 namespace idl
40 {
41 class Module;
42 }   // namespace idl
43 }   // namespace ary
44 
45 
46 namespace csi
47 {
48 namespace uidl
49 {
50 
51 class TokenDistributor;
52 class PE_Service;
53 class PE_Singleton;
54 class PE_Interface;
55 class PE_Struct;
56 class PE_Exception;
57 class PE_Constant;
58 class PE_Enum;
59 class PE_Typedef;
60 
61 
62 class PE_File : public UnoIDL_PE,
63                 public ParseEnvState
64 {
65   public:
66                         PE_File(
67                             TokenDistributor &  i_rTokenAdmin,
68                             const ParserInfo &  i_parseInfo );
69     virtual void        EstablishContacts(
70                             UnoIDL_PE *         io_pParentPE,
71                             ary::Repository &   io_rRepository,
72                             TokenProcessing_Result &
73                                                 o_rResult );
74                         ~PE_File();
75 
76     virtual void        ProcessToken(
77                             const Token &       i_rToken );
78 
79     virtual void        Process_Identifier(
80                             const TokIdentifier &
81                                                 i_rToken );
82     virtual void        Process_Punctuation(
83                             const TokPunctuation &
84                                                 i_rToken );
85     virtual void        Process_MetaType(
86                             const TokMetaType & i_rToken );
87     virtual void        Process_Stereotype(
88                             const TokStereotype &
89                                                 i_rToken );
90     virtual void        Process_Default();
91 
92   private:
93     enum E_State
94     {
95         e_none,
96         e_std,
97         wait_for_module,
98         wait_for_module_bracket,
99         wait_for_module_semicolon,
100         in_sub_pe,
101         on_default
102     };
103 
104     virtual void        InitData();
105     virtual void        TransferData();
106     virtual void        ReceiveData();
107     virtual UnoIDL_PE & MyPE();
108     virtual const ary::idl::Module &
109                         CurNamespace() const;
110     virtual const ParserInfo &
111                         ParseInfo() const;
112     // DATA
113     TokenDistributor *  pTokenAdmin;
114     Dyn<PE_Service>     pPE_Service;
115     Dyn<PE_Singleton>   pPE_Singleton;
116     Dyn<PE_Interface>   pPE_Interface;
117     Dyn<PE_Struct>      pPE_Struct;
118     Dyn<PE_Exception>   pPE_Exception;
119     Dyn<PE_Constant>    pPE_Constant;
120     Dyn<PE_Enum>        pPE_Enum;
121     Dyn<PE_Typedef>     pPE_Typedef;
122 
123     const ary::idl::Module *
124                         pCurNamespace;
125     const ParserInfo *  pParseInfo;
126 
127     E_State             eState;
128     uintt               nBracketCount_inDefMode;
129 };
130 
131 
132 }   // namespace uidl
133 }   // namespace csi
134 
135 #endif
136 
137