xref: /trunk/main/autodoc/source/ary/idl/ia_ce.hxx (revision 1c78a5d6)
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 ARY_IDL_IA_CE_HXX
25 #define ARY_IDL_IA_CE_HXX
26 
27 
28 // USED SERVICES
29     // BASE CLASSES
30 #include <ary/idl/ip_ce.hxx>
31     // COMPONENTS
32     // PARAMETERS
33 
34 
35 namespace ary
36 {
37 namespace idl
38 {
39 
40 class Ce_Storage;
41 class TypeAdmin;
42 
43 
44 /** @resp
45     Implements ::ary::idl::CePilot. Provides the access logic for all
46     IDL code entities.
47 
48     @collab Ce_Storage
49     @collab TypeAdmin
50 
51     @see CodeEntity
52 */
53 class CeAdmin : public CePilot
54 {
55   public:
56     // LIFECYCLE
57                         CeAdmin(
58                             NameLookup &        io_rNameDictionary,
59                             TypeAdmin &         io_rTypePilot );
60     virtual             ~CeAdmin();
61 
62     // OPERATIONS
63 
64     // INQUIRY
65     const Ce_Storage &  Storage() const;
66 
67     // ACCESS
68     Ce_Storage &        Storage();
69 
70     // INHERITED
71         // Interface ::ary::idl::CePilot:
72     virtual Module &    CheckIn_Module(
73                             Ce_id               i_nParentId,
74                             const String &      i_sName );
75     virtual Service &   Store_Service(
76                             Ce_id               i_nOwner,
77                             const String &      i_sName );
78     virtual SglIfcService &
79                         Store_SglIfcService(
80                             Ce_id               i_nOwner,
81                             const String &      i_sName,
82                             Type_id             i_nBaseInterface );
83     virtual Interface & Store_Interface(
84                             Ce_id               i_nOwner,
85                             const String &      i_sName,
86                             Type_id             i_nBase );
87     virtual Struct &    Store_Struct(
88                             Ce_id               i_nOwner,
89                             const String &      i_sName,
90                             Type_id             i_nBase,
91                             const String &      i_sTemplateParam );
92     virtual Exception & Store_Exception(
93                             Ce_id               i_nOwner,
94                             const String &      i_sName,
95                             Type_id             i_nBase );
96     virtual Enum &      Store_Enum(
97                             Ce_id               i_nOwner,
98                             const String &      i_sName );
99     virtual Typedef &   Store_Typedef(
100                             Ce_id               i_nOwner,
101                             const String &      i_sName,
102                             Type_id             i_nDefiningType );
103     virtual ConstantsGroup &
104                         Store_ConstantsGroup(
105                             Ce_id               i_nOwner,
106                             const String &      i_sName );
107     virtual Singleton & Store_Singleton(
108                             Ce_id               i_nOwner,
109                             const String &      i_sName );
110     virtual SglIfcSingleton &
111                         Store_SglIfcSingleton(
112                             Ce_id               i_nOwner,
113                             const String &      i_sName,
114                             Type_id             i_nBaseInterface );
115 
116     virtual Constant &  Store_Constant(
117                             Ce_id               i_nOwner,
118                             const String &      i_sName,
119                             Type_id             i_nType,
120                             const String &      i_sValue );
121     virtual Property &  Store_Property(
122                             Ce_id               i_nOwner,
123                             const String &      i_sName,
124                             Type_id             i_nType,
125                             Property::Stereotypes
126                                                 i_stereotypes );
127     virtual Function &  Store_Function(
128                             Ce_id               i_nOwner,
129                             const String &      i_sName,
130                             Type_id             i_nReturnType,
131                             bool                i_bOneWay );
132     virtual Function &  Store_ServiceConstructor(
133                             Ce_id               i_nOwner,
134                             const String &      i_sName );
135     virtual StructElement &
136                         Store_StructMember(
137                             Ce_id               i_nOwner,
138                             const String &      i_sName,
139                             Type_id             i_nType );
140     virtual StructElement &
141                         Store_ExceptionMember(
142                             Ce_id               i_nOwner,
143                             const String &      i_sName,
144                             Type_id             i_nType );
145     virtual EnumValue & Store_EnumValue(
146                             Ce_id               i_nOwner,
147                             const String &      i_sName,
148                             const String &      i_sValue );
149     virtual Attribute & Store_Attribute(
150                             Ce_id               i_nOwner,
151                             const String &      i_sName,
152                             Type_id             i_nType,
153                             bool                i_bReadOnly,
154                             bool                i_bBound );
155 
156     virtual const Module &
157                         GlobalNamespace() const;
158     virtual const CodeEntity &
159                         Find_Ce(
160                             Ce_id               i_nId ) const;
161     virtual const Module &
162                         Find_Module(
163                             Ce_id               i_nId ) const;
164     virtual const Module *
165                         Search_Module(
166                             Ce_id               i_nId ) const;
167     virtual const Function &
168                         Find_Function(
169                             Ce_id               i_nId ) const;
170     virtual const Property &
171                         Find_Property(
172                             Ce_id               i_nId ) const;
173     virtual const EnumValue &
174                         Find_EnumValue(
175                             Ce_id               i_nId ) const;
176     virtual const Constant &
177                         Find_Constant(
178                             Ce_id               i_nId ) const;
179     virtual const StructElement &
180                         Find_StructElement(
181                             Ce_id               i_nId ) const;
182     virtual void        Get_Text(
183                             StringVector &      o_module,
184                             String &            o_ce,
185                             String &            o_member,
186                             const CodeEntity &  i_ce ) const;
187     virtual const NameLookup &
188                         NameDictionary() const;
189     virtual void        Get_AlphabeticalIndex(
190                             std::vector<Ce_id> &
191                                                 o_rResult,
192                             alphabetical_index::E_Letter
193                                                 i_cLetter) const;
194     // ACCESS
195     virtual Module &    GlobalNamespace();
196     virtual CodeEntity &
197                         Find_Ce(
198                             Ce_id               i_nId );
199   private:
200     // Locals
201     Module &            lhf_Access_Module(
202                             Ce_id               i_nId );
203     void                lhf_Put2Storage_and_AssignId(
204                             CodeEntity &        pass_io_rCe );
205     void                lhf_Store_NewEntity(
206                             DYN CodeEntity &    pass_io_rCe,
207                             Module &            i_rOwner );
208     void                lhf_Store_NewEntity(
209                             DYN CodeEntity &    pass_io_rCe,
210                             Ce_id               i_nOwnerModule );
211     void                get_ModuleText(
212                             StringVector &      o_module,
213                             const CodeEntity &  i_ce ) const;
214     Struct &            lhf_Store_TplStruct(
215                             Ce_id               i_nOwner,
216                             const String &      i_sName,
217                             Type_id             i_nBase,
218                             const String &      i_sTemplateParam );
219 
220     const Ce_Storage &  my_Storage() const;
221     Ce_Storage &        my_Storage();
my_NameDictionary()222     NameLookup &        my_NameDictionary()     { return *pNameDictionary; }
223 
224     // DATA
225     Dyn<Ce_Storage>     pStorage;           /// @inv pStorage != 0;
226     Module *            pGlobalNamespace;
227     NameLookup *        pNameDictionary;
228     TypeAdmin *         pTypePilot;
229 };
230 
231 
232 // IMPLEMENTATION
233 inline const Ce_Storage &
Storage() const234 CeAdmin::Storage() const
235 {
236     return *pStorage;
237 }
238 
239 inline Ce_Storage &
Storage()240 CeAdmin::Storage()
241 {
242     return *pStorage;
243 }
244 
245 
246 
247 }   // namespace idl
248 }   // namespace ary
249 #endif
250