xref: /trunk/main/autodoc/source/parser_i/inc/s2_luidl/pe_func2.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_FUNC2_HXX
29 #define ADC_UIDL_PE_FUNC2_HXX
30 
31 
32 
33 // USED SERVICES
34     // BASE CLASSES
35 // #include <ary/idl/i_gate.hxx>
36 // #include <ary/idl/ip_ce.hxx>
37 #include <s2_luidl/parsenv2.hxx>
38 #include <s2_luidl/pestate.hxx>
39     // COMPONENTS
40 #include <ary/idl/i_param.hxx>
41     // PARAMETERS
42 
43 namespace ary
44 {
45     namespace idl
46     {
47         class Function;
48     }
49 }
50 
51 
52 namespace csi
53 {
54 namespace uidl
55 {
56 
57 class PE_Type;
58 class PE_Variable;
59 
60 class PE_Function : public UnoIDL_PE,
61                     public ParseEnvState
62 {
63   public:
64     typedef ary::idl::Ce_id     RParent;
65     typedef ary::idl::Ce_id     RFunction;
66 
67     enum E_Constructor { constructor };
68 
69     /// Constructor for interfaces.
70                         PE_Function(
71                             const RParent &     i_rCurInterface );
72 
73     /// Constructor for single interface based services.
74                         PE_Function(
75                             const RParent &     i_rCurService,
76                             E_Constructor       i_eCtorMarker );
77 
78     virtual void        EstablishContacts(
79                             UnoIDL_PE *         io_pParentPE,
80                             ary::Repository &   io_rRepository,
81                             TokenProcessing_Result &
82                                                 o_rResult );
83     virtual             ~PE_Function();
84 
85     virtual void        ProcessToken(
86                             const Token &       i_rToken );
87 
88     virtual void        Process_Stereotype(
89                             const TokStereotype &
90                                                 i_rToken );
91     virtual void        Process_Identifier(
92                             const TokIdentifier &
93                                                 i_rToken );
94     virtual void        Process_Punctuation(
95                             const TokPunctuation &
96                                                 i_rToken );
97     virtual void        Process_BuiltInType(
98                             const TokBuiltInType &
99                                                 i_rToken );
100     virtual void        Process_ParameterHandling(
101                             const TokParameterHandling &
102                                                 i_rToken );
103     virtual void        Process_Raises();
104     virtual void        Process_Default();
105 
106   private:
107     enum E_State
108     {
109         e_none,
110         e_start,
111         in_return_type,
112         expect_name,
113         expect_params_list,
114         expect_parameter,
115         expect_parameter_variable,
116         in_parameter_variable,
117         expect_parameter_separator,
118         params_finished,
119         expect_exceptions_list,
120         expect_exception,
121         in_exception,
122         expect_exception_separator,
123         exceptions_finished
124     };
125 
126     void                GoIntoReturnType();
127     void                GoIntoParameterVariable();
128     void                GoIntoException();
129     void                OnDefault();
130 
131     virtual void        InitData();
132     virtual void        ReceiveData();
133     virtual void        TransferData();
134     virtual UnoIDL_PE & MyPE();
135 
136     // DATA
137     E_State             eState;
138 
139     String              sData_Name;
140     ary::idl::Type_id   nData_ReturnType;
141     bool                bData_Oneway;
142     ary::idl::Function *
143                         pCurFunction;
144 
145     const RParent *     pCurParent;
146 
147     Dyn<PE_Type>        pPE_Type;
148     ary::idl::Type_id   nCurParsedType;     // ReturnType or Exception
149 
150     String              sName;
151 
152     Dyn<PE_Variable>    pPE_Variable;
153     ary::idl::E_ParameterDirection
154                         eCurParsedParam_Direction;
155     ary::idl::Type_id   nCurParsedParam_Type;
156     String              sCurParsedParam_Name;
157     bool                bIsForConstructors;
158 };
159 
160 
161 
162 }   // namespace uidl
163 }   // namespace csi
164 
165 
166 #endif
167 
168