xref: /AOO41X/main/autodoc/source/parser_i/inc/s2_luidl/pe_selem.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_SELEM_HXX
25 #define LUIDL_PE_SELEM_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 #include <ary/idl/i_gate.hxx>
36 
37 
38 namespace udm {
39 class Agent_Struct;
40 }   // namespace udm
41 
42 
43 namespace csi
44 {
45 namespace uidl
46 {
47 
48 class PE_Type;
49 class StructElement;
50 class Struct;
51 
52 class PE_StructElement : public UnoIDL_PE,
53                          public ParseEnvState
54 {
55   public:
56     typedef ary::idl::Ce_id       RStructElement;
57     typedef ary::idl::Ce_id       RStruct;
58 
59                         PE_StructElement(       /// Use for Struct-elements
60                             RStructElement &    o_rResult,
61                             const RStruct &     i_rCurStruct,
62                             const String &      i_rCurStructTemplateParam );
63                         PE_StructElement(       /// Use for Exception-elements
64                             RStructElement &    o_rResult,
65                             const RStruct &     i_rCurExc );
66     virtual void        EstablishContacts(
67                             UnoIDL_PE *         io_pParentPE,
68                             ary::Repository &   io_rRepository,
69                             TokenProcessing_Result &
70                                                 o_rResult );
71                         ~PE_StructElement();
72 
73     virtual void        ProcessToken(
74                             const Token &       i_rToken );
75 
76     virtual void        Process_Default();
77     virtual void        Process_Identifier(
78                             const TokIdentifier &
79                                                 i_rToken );
80     virtual void        Process_Punctuation(
81                             const TokPunctuation &
82                                                 i_rToken );
83 
84   private:
85     enum E_State
86     {
87         e_none,
88         expect_type,
89         expect_name,
90         expect_finish
91     };
92 
93     virtual void        InitData();
94     virtual void        TransferData();
95     virtual UnoIDL_PE & MyPE();
96 
97     ary::idl::Type_id   lhf_FindTemplateParamType() const;
98 
99     // DATA
100     E_State             eState;
101     RStructElement *    pResult;
102     const RStruct *     pCurStruct;
103     bool                bIsExceptionElement;
104 
105     Dyn<PE_Type>        pPE_Type;
106     ary::idl::Type_id   nType;
107     String              sName;
108     const String *      pCurStructTemplateParam;
109 };
110 
111 
112 
113 }   // namespace uidl
114 }   // namespace csi
115 
116 
117 #endif
118