178bc99aaSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
378bc99aaSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
478bc99aaSAndrew Rist * or more contributor license agreements. See the NOTICE file
578bc99aaSAndrew Rist * distributed with this work for additional information
678bc99aaSAndrew Rist * regarding copyright ownership. The ASF licenses this file
778bc99aaSAndrew Rist * to you under the Apache License, Version 2.0 (the
878bc99aaSAndrew Rist * "License"); you may not use this file except in compliance
978bc99aaSAndrew Rist * with the License. You may obtain a copy of the License at
1078bc99aaSAndrew Rist *
1178bc99aaSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
1278bc99aaSAndrew Rist *
1378bc99aaSAndrew Rist * Unless required by applicable law or agreed to in writing,
1478bc99aaSAndrew Rist * software distributed under the License is distributed on an
1578bc99aaSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1678bc99aaSAndrew Rist * KIND, either express or implied. See the License for the
1778bc99aaSAndrew Rist * specific language governing permissions and limitations
1878bc99aaSAndrew Rist * under the License.
1978bc99aaSAndrew Rist *
2078bc99aaSAndrew Rist *************************************************************/
21cdf0e10cSrcweir
22cdf0e10cSrcweir #include <precomp.h>
23cdf0e10cSrcweir #include <s2_luidl/pe_iface.hxx>
24cdf0e10cSrcweir
25cdf0e10cSrcweir
26cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES
27cdf0e10cSrcweir #include <ary/idl/i_interface.hxx>
28cdf0e10cSrcweir #include <ary/idl/i_gate.hxx>
29cdf0e10cSrcweir #include <ary/idl/ip_ce.hxx>
30cdf0e10cSrcweir #include <ary/doc/d_oldidldocu.hxx>
31cdf0e10cSrcweir #include <s2_luidl/pe_func2.hxx>
32cdf0e10cSrcweir #include <s2_luidl/pe_attri.hxx>
33cdf0e10cSrcweir #include <s2_luidl/pe_type2.hxx>
34cdf0e10cSrcweir #include <s2_luidl/tk_keyw.hxx>
35cdf0e10cSrcweir #include <s2_luidl/tk_ident.hxx>
36cdf0e10cSrcweir #include <s2_luidl/tk_punct.hxx>
37cdf0e10cSrcweir #include <adc_cl.hxx>
38cdf0e10cSrcweir
39cdf0e10cSrcweir
40cdf0e10cSrcweir
41cdf0e10cSrcweir namespace csi
42cdf0e10cSrcweir {
43cdf0e10cSrcweir namespace uidl
44cdf0e10cSrcweir {
45cdf0e10cSrcweir
46cdf0e10cSrcweir #ifdef DF
47cdf0e10cSrcweir #undef DF
48cdf0e10cSrcweir #endif
49cdf0e10cSrcweir #define DF &PE_Interface::On_Default
50cdf0e10cSrcweir
51cdf0e10cSrcweir PE_Interface::F_TOK
52cdf0e10cSrcweir PE_Interface::aDispatcher[PE_Interface::e_STATES_MAX][PE_Interface::tt_MAX] =
53cdf0e10cSrcweir { { DF, DF, DF, DF, DF }, // e_none
54cdf0e10cSrcweir { &PE_Interface::On_need_uik_MetaType,
55cdf0e10cSrcweir DF, DF, DF, DF }, // need_uik
56cdf0e10cSrcweir { DF, &PE_Interface::On_uik_Identifier,
57cdf0e10cSrcweir &PE_Interface::On_uik_Punctuation,
58cdf0e10cSrcweir DF, DF }, // uik
59cdf0e10cSrcweir { &PE_Interface::On_need_ident_MetaType,
60cdf0e10cSrcweir DF, DF, DF, DF }, // need_ident
61cdf0e10cSrcweir { DF, &PE_Interface::On_ident_Identifier,
62cdf0e10cSrcweir &PE_Interface::On_ident_Punctuation,
63cdf0e10cSrcweir DF, DF }, // ident
64cdf0e10cSrcweir { &PE_Interface::On_need_interface_MetaType,
65cdf0e10cSrcweir DF, DF, DF, DF }, // need_interface
66cdf0e10cSrcweir { DF, &PE_Interface::On_need_name_Identifer,
67cdf0e10cSrcweir DF, DF, DF }, // need_name
68cdf0e10cSrcweir { DF, DF, &PE_Interface::On_wait_for_base_Punctuation,
69cdf0e10cSrcweir DF, DF }, // wait_for_base
70cdf0e10cSrcweir { DF, DF, DF, DF, DF }, // in_base
71cdf0e10cSrcweir { DF, DF, &PE_Interface::On_need_curlbr_open_Punctuation,
72cdf0e10cSrcweir DF, DF }, // need_curlbr_open
73cdf0e10cSrcweir { &PE_Interface::On_std_Metatype,
74cdf0e10cSrcweir &PE_Interface::On_std_GotoFunction,
75cdf0e10cSrcweir &PE_Interface::On_std_Punctuation,
76cdf0e10cSrcweir &PE_Interface::On_std_GotoFunction,
77cdf0e10cSrcweir &PE_Interface::On_std_Stereotype }, // e_std
78cdf0e10cSrcweir { DF, DF, DF, DF, DF }, // in_function
79cdf0e10cSrcweir { DF, DF, DF, DF, DF }, // in_attribute
80cdf0e10cSrcweir { DF, DF, &PE_Interface::On_need_finish_Punctuation,
81cdf0e10cSrcweir DF, DF }, // need_finish
82cdf0e10cSrcweir { DF, DF, DF, DF, DF } // in_base_interface
83cdf0e10cSrcweir };
84cdf0e10cSrcweir
85cdf0e10cSrcweir
86cdf0e10cSrcweir
87cdf0e10cSrcweir inline void
CallHandler(const char * i_sTokenText,E_TokenType i_eTokenType)88cdf0e10cSrcweir PE_Interface::CallHandler( const char * i_sTokenText,
89cdf0e10cSrcweir E_TokenType i_eTokenType )
90cdf0e10cSrcweir { (this->*aDispatcher[eState][i_eTokenType])(i_sTokenText); }
91cdf0e10cSrcweir
92cdf0e10cSrcweir
93cdf0e10cSrcweir
PE_Interface()94cdf0e10cSrcweir PE_Interface::PE_Interface()
95cdf0e10cSrcweir : eState(e_none),
96cdf0e10cSrcweir sData_Name(),
97cdf0e10cSrcweir bIsPreDeclaration(false),
98cdf0e10cSrcweir pCurInterface(0),
99cdf0e10cSrcweir nCurInterface(0),
100cdf0e10cSrcweir pPE_Function(0),
101cdf0e10cSrcweir pPE_Attribute(0),
102cdf0e10cSrcweir pPE_Type(0),
103cdf0e10cSrcweir nCurParsed_Base(0),
104cdf0e10cSrcweir bOptionalMember(false)
105cdf0e10cSrcweir {
106cdf0e10cSrcweir pPE_Function = new PE_Function(nCurInterface);
107cdf0e10cSrcweir pPE_Type = new PE_Type(nCurParsed_Base);
108cdf0e10cSrcweir pPE_Attribute = new PE_Attribute(nCurInterface);
109cdf0e10cSrcweir }
110cdf0e10cSrcweir
111cdf0e10cSrcweir void
EstablishContacts(UnoIDL_PE * io_pParentPE,ary::Repository & io_rRepository,TokenProcessing_Result & o_rResult)112cdf0e10cSrcweir PE_Interface::EstablishContacts( UnoIDL_PE * io_pParentPE,
113cdf0e10cSrcweir ary::Repository & io_rRepository,
114cdf0e10cSrcweir TokenProcessing_Result & o_rResult )
115cdf0e10cSrcweir {
116cdf0e10cSrcweir UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
117cdf0e10cSrcweir pPE_Function->EstablishContacts(this,io_rRepository,o_rResult);
118cdf0e10cSrcweir pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
119cdf0e10cSrcweir pPE_Attribute->EstablishContacts(this,io_rRepository,o_rResult);
120cdf0e10cSrcweir }
121cdf0e10cSrcweir
~PE_Interface()122cdf0e10cSrcweir PE_Interface::~PE_Interface()
123cdf0e10cSrcweir {
124cdf0e10cSrcweir }
125cdf0e10cSrcweir
126cdf0e10cSrcweir void
ProcessToken(const Token & i_rToken)127cdf0e10cSrcweir PE_Interface::ProcessToken( const Token & i_rToken )
128cdf0e10cSrcweir {
129cdf0e10cSrcweir i_rToken.Trigger(*this);
130cdf0e10cSrcweir }
131cdf0e10cSrcweir
132cdf0e10cSrcweir
133cdf0e10cSrcweir void
Process_MetaType(const TokMetaType & i_rToken)134cdf0e10cSrcweir PE_Interface::Process_MetaType( const TokMetaType & i_rToken )
135cdf0e10cSrcweir {
136cdf0e10cSrcweir CallHandler( i_rToken.Text(), tt_metatype );
137cdf0e10cSrcweir }
138cdf0e10cSrcweir
139cdf0e10cSrcweir void
Process_Identifier(const TokIdentifier & i_rToken)140cdf0e10cSrcweir PE_Interface::Process_Identifier( const TokIdentifier & i_rToken )
141cdf0e10cSrcweir {
142cdf0e10cSrcweir CallHandler( i_rToken.Text(), tt_identifier );
143cdf0e10cSrcweir }
144cdf0e10cSrcweir
145cdf0e10cSrcweir void
Process_Punctuation(const TokPunctuation & i_rToken)146cdf0e10cSrcweir PE_Interface::Process_Punctuation( const TokPunctuation & i_rToken )
147cdf0e10cSrcweir {
148cdf0e10cSrcweir CallHandler( i_rToken.Text(), tt_punctuation );
149cdf0e10cSrcweir }
150cdf0e10cSrcweir
151cdf0e10cSrcweir void
Process_NameSeparator()152cdf0e10cSrcweir PE_Interface::Process_NameSeparator()
153cdf0e10cSrcweir {
154cdf0e10cSrcweir CallHandler( "", tt_startoftype );
155cdf0e10cSrcweir }
156cdf0e10cSrcweir
157cdf0e10cSrcweir void
Process_BuiltInType(const TokBuiltInType & i_rToken)158cdf0e10cSrcweir PE_Interface::Process_BuiltInType( const TokBuiltInType & i_rToken )
159cdf0e10cSrcweir {
160cdf0e10cSrcweir CallHandler( i_rToken.Text(), tt_startoftype );
161cdf0e10cSrcweir }
162cdf0e10cSrcweir
163cdf0e10cSrcweir void
Process_TypeModifier(const TokTypeModifier & i_rToken)164cdf0e10cSrcweir PE_Interface::Process_TypeModifier( const TokTypeModifier & i_rToken )
165cdf0e10cSrcweir {
166cdf0e10cSrcweir CallHandler( i_rToken.Text(), tt_startoftype );
167cdf0e10cSrcweir }
168cdf0e10cSrcweir
169cdf0e10cSrcweir void
Process_Stereotype(const TokStereotype & i_rToken)170cdf0e10cSrcweir PE_Interface::Process_Stereotype( const TokStereotype & i_rToken )
171cdf0e10cSrcweir {
172cdf0e10cSrcweir CallHandler( i_rToken.Text(), tt_stereotype );
173cdf0e10cSrcweir }
174cdf0e10cSrcweir
175cdf0e10cSrcweir void
Process_Default()176cdf0e10cSrcweir PE_Interface::Process_Default()
177cdf0e10cSrcweir {
178cdf0e10cSrcweir SetResult(done, stay);
179cdf0e10cSrcweir }
180cdf0e10cSrcweir
181cdf0e10cSrcweir
182cdf0e10cSrcweir void
On_need_uik_MetaType(const char *)183cdf0e10cSrcweir PE_Interface::On_need_uik_MetaType(const char *)
184cdf0e10cSrcweir {
185cdf0e10cSrcweir // Deprecated, data will be ignored
186cdf0e10cSrcweir SetResult(done, stay);
187cdf0e10cSrcweir eState = uik;
188cdf0e10cSrcweir }
189cdf0e10cSrcweir
190cdf0e10cSrcweir void
On_uik_Identifier(const char *)191cdf0e10cSrcweir PE_Interface::On_uik_Identifier(const char *)
192cdf0e10cSrcweir {
193cdf0e10cSrcweir // Deprecated, data will be ignored
194cdf0e10cSrcweir SetResult(done, stay);
195cdf0e10cSrcweir }
196cdf0e10cSrcweir
197cdf0e10cSrcweir void
On_uik_Punctuation(const char * i_sText)198cdf0e10cSrcweir PE_Interface::On_uik_Punctuation(const char * i_sText)
199cdf0e10cSrcweir {
200cdf0e10cSrcweir // Deprecated, data will be ignored
201cdf0e10cSrcweir SetResult(done, stay);
202cdf0e10cSrcweir if (strcmp(",",i_sText) == 0)
203cdf0e10cSrcweir {
204cdf0e10cSrcweir eState = need_ident;
205cdf0e10cSrcweir }
206cdf0e10cSrcweir }
207cdf0e10cSrcweir
208cdf0e10cSrcweir void
On_need_ident_MetaType(const char *)209cdf0e10cSrcweir PE_Interface::On_need_ident_MetaType(const char *)
210cdf0e10cSrcweir {
211cdf0e10cSrcweir SetResult(done, stay);
212cdf0e10cSrcweir eState = ident;
213cdf0e10cSrcweir }
214cdf0e10cSrcweir
215cdf0e10cSrcweir void
On_ident_Identifier(const char *)216cdf0e10cSrcweir PE_Interface::On_ident_Identifier(const char *)
217cdf0e10cSrcweir {
218cdf0e10cSrcweir SetResult(done, stay);
219cdf0e10cSrcweir }
220cdf0e10cSrcweir
221cdf0e10cSrcweir void
On_ident_Punctuation(const char * i_sText)222cdf0e10cSrcweir PE_Interface::On_ident_Punctuation(const char * i_sText)
223cdf0e10cSrcweir {
224cdf0e10cSrcweir SetResult(done, stay);
225cdf0e10cSrcweir if (strcmp(")",i_sText) == 0)
226cdf0e10cSrcweir {
227cdf0e10cSrcweir eState = need_interface;
228cdf0e10cSrcweir }
229cdf0e10cSrcweir }
230cdf0e10cSrcweir
231cdf0e10cSrcweir void
On_need_interface_MetaType(const char *)232cdf0e10cSrcweir PE_Interface::On_need_interface_MetaType(const char *)
233cdf0e10cSrcweir {
234cdf0e10cSrcweir SetResult(done, stay);
235cdf0e10cSrcweir eState = need_name;
236cdf0e10cSrcweir }
237cdf0e10cSrcweir
238cdf0e10cSrcweir void
On_need_name_Identifer(const char * i_sText)239cdf0e10cSrcweir PE_Interface::On_need_name_Identifer(const char * i_sText)
240cdf0e10cSrcweir {
241cdf0e10cSrcweir SetResult(done, stay);
242cdf0e10cSrcweir sData_Name = i_sText;
243cdf0e10cSrcweir eState = wait_for_base;
244cdf0e10cSrcweir }
245cdf0e10cSrcweir
246cdf0e10cSrcweir void
On_wait_for_base_Punctuation(const char * i_sText)247cdf0e10cSrcweir PE_Interface::On_wait_for_base_Punctuation(const char * i_sText)
248cdf0e10cSrcweir {
249cdf0e10cSrcweir if (i_sText[0] != ';')
250cdf0e10cSrcweir {
251cdf0e10cSrcweir switch (i_sText[0])
252cdf0e10cSrcweir {
253cdf0e10cSrcweir case ':':
254cdf0e10cSrcweir SetResult(done, push_sure, pPE_Type.Ptr());
255cdf0e10cSrcweir eState = in_base;
256cdf0e10cSrcweir break;
257cdf0e10cSrcweir case '{':
258cdf0e10cSrcweir store_Interface();
259cdf0e10cSrcweir
260cdf0e10cSrcweir SetResult(done,stay);
261cdf0e10cSrcweir eState = e_std;
262cdf0e10cSrcweir break;
263cdf0e10cSrcweir default:
264cdf0e10cSrcweir SetResult(not_done, pop_failure);
265cdf0e10cSrcweir eState = e_none;
266cdf0e10cSrcweir } // end switch
267cdf0e10cSrcweir }
268cdf0e10cSrcweir else
269cdf0e10cSrcweir {
270cdf0e10cSrcweir bIsPreDeclaration = true;
271cdf0e10cSrcweir SetResult(done, pop_success);
272cdf0e10cSrcweir eState = e_none;
273cdf0e10cSrcweir }
274cdf0e10cSrcweir }
275cdf0e10cSrcweir
276cdf0e10cSrcweir void
On_need_curlbr_open_Punctuation(const char * i_sText)277cdf0e10cSrcweir PE_Interface::On_need_curlbr_open_Punctuation(const char * i_sText)
278cdf0e10cSrcweir {
279cdf0e10cSrcweir if (i_sText[0] == '{')
280cdf0e10cSrcweir {
281cdf0e10cSrcweir store_Interface();
282cdf0e10cSrcweir
283cdf0e10cSrcweir SetResult(done, stay);
284cdf0e10cSrcweir eState = e_std;
285cdf0e10cSrcweir }
286cdf0e10cSrcweir else {
287cdf0e10cSrcweir csv_assert(false);
288cdf0e10cSrcweir }
289cdf0e10cSrcweir }
290cdf0e10cSrcweir
291cdf0e10cSrcweir
292cdf0e10cSrcweir void
On_std_Metatype(const char * i_sText)293cdf0e10cSrcweir PE_Interface::On_std_Metatype(const char * i_sText)
294cdf0e10cSrcweir {
295cdf0e10cSrcweir if (strcmp(i_sText,"attribute") == 0)
296cdf0e10cSrcweir On_std_GotoAttribute(i_sText);
297cdf0e10cSrcweir else if (strcmp(i_sText,"interface") == 0)
298cdf0e10cSrcweir On_std_GotoBaseInterface(i_sText);
299cdf0e10cSrcweir else
300cdf0e10cSrcweir On_std_GotoFunction(i_sText);
301cdf0e10cSrcweir }
302cdf0e10cSrcweir
303cdf0e10cSrcweir void
On_std_Punctuation(const char * i_sText)304cdf0e10cSrcweir PE_Interface::On_std_Punctuation(const char * i_sText)
305cdf0e10cSrcweir {
306cdf0e10cSrcweir switch (i_sText[0])
307cdf0e10cSrcweir {
308cdf0e10cSrcweir case '}':
309cdf0e10cSrcweir SetResult(done, stay);
310cdf0e10cSrcweir eState = need_finish;
311cdf0e10cSrcweir break;
312cdf0e10cSrcweir case ';': // Appears after base interface declarations.
313cdf0e10cSrcweir SetResult(done, stay);
314cdf0e10cSrcweir break;
315cdf0e10cSrcweir default:
316cdf0e10cSrcweir SetResult(not_done, pop_failure);
317cdf0e10cSrcweir eState = e_none;
318cdf0e10cSrcweir } // end switch
319cdf0e10cSrcweir }
320cdf0e10cSrcweir
321cdf0e10cSrcweir void
On_std_Stereotype(const char * i_sText)322cdf0e10cSrcweir PE_Interface::On_std_Stereotype(const char * i_sText)
323cdf0e10cSrcweir {
324cdf0e10cSrcweir if (strcmp(i_sText,"oneway") == 0)
325cdf0e10cSrcweir On_std_GotoFunction(i_sText);
326cdf0e10cSrcweir else if ( strcmp(i_sText,"readonly") == 0
327cdf0e10cSrcweir OR strcmp(i_sText,"bound") == 0 )
328cdf0e10cSrcweir On_std_GotoAttribute(i_sText);
329cdf0e10cSrcweir else if (strcmp(i_sText,"optional") == 0)
330cdf0e10cSrcweir {
331cdf0e10cSrcweir bOptionalMember = true;
332cdf0e10cSrcweir SetResult(done, stay);
333cdf0e10cSrcweir }
334cdf0e10cSrcweir else
335cdf0e10cSrcweir SetResult(not_done, pop_failure);
336cdf0e10cSrcweir }
337cdf0e10cSrcweir
338cdf0e10cSrcweir void
On_std_GotoFunction(const char *)339cdf0e10cSrcweir PE_Interface::On_std_GotoFunction(const char * )
340cdf0e10cSrcweir {
341cdf0e10cSrcweir SetResult(not_done, push_sure, pPE_Function.Ptr());
342cdf0e10cSrcweir eState = in_function;
343cdf0e10cSrcweir }
344cdf0e10cSrcweir
345cdf0e10cSrcweir void
On_std_GotoAttribute(const char *)346cdf0e10cSrcweir PE_Interface::On_std_GotoAttribute(const char * )
347cdf0e10cSrcweir {
348cdf0e10cSrcweir SetResult(not_done, push_sure, pPE_Attribute.Ptr());
349cdf0e10cSrcweir eState = in_attribute;
350cdf0e10cSrcweir }
351cdf0e10cSrcweir
352cdf0e10cSrcweir void
On_std_GotoBaseInterface(const char *)353cdf0e10cSrcweir PE_Interface::On_std_GotoBaseInterface(const char * )
354cdf0e10cSrcweir {
355cdf0e10cSrcweir SetResult(done, push_sure, pPE_Type.Ptr());
356cdf0e10cSrcweir eState = in_base_interface;
357cdf0e10cSrcweir }
358cdf0e10cSrcweir
359cdf0e10cSrcweir void
On_need_finish_Punctuation(const char * i_sText)360cdf0e10cSrcweir PE_Interface::On_need_finish_Punctuation(const char * i_sText)
361cdf0e10cSrcweir {
362cdf0e10cSrcweir switch (i_sText[0])
363cdf0e10cSrcweir {
364cdf0e10cSrcweir case ';':
365cdf0e10cSrcweir SetResult(done, pop_success);
366cdf0e10cSrcweir eState = e_none;
367cdf0e10cSrcweir break;
368cdf0e10cSrcweir default:
369cdf0e10cSrcweir SetResult(not_done, pop_failure);
370cdf0e10cSrcweir eState = e_none;
371cdf0e10cSrcweir } // end switch
372cdf0e10cSrcweir }
373cdf0e10cSrcweir
374cdf0e10cSrcweir void
On_Default(const char *)375cdf0e10cSrcweir PE_Interface::On_Default(const char *)
376cdf0e10cSrcweir {
377cdf0e10cSrcweir SetResult(not_done, pop_failure);
378cdf0e10cSrcweir }
379cdf0e10cSrcweir
380cdf0e10cSrcweir void
InitData()381cdf0e10cSrcweir PE_Interface::InitData()
382cdf0e10cSrcweir {
383cdf0e10cSrcweir eState = need_interface;
384cdf0e10cSrcweir
385cdf0e10cSrcweir sData_Name.clear();
386cdf0e10cSrcweir bIsPreDeclaration = false;
387cdf0e10cSrcweir pCurInterface = 0;
388cdf0e10cSrcweir nCurInterface = 0;
389cdf0e10cSrcweir nCurParsed_Base = 0;
390cdf0e10cSrcweir bOptionalMember = false;
391cdf0e10cSrcweir }
392cdf0e10cSrcweir
393cdf0e10cSrcweir void
TransferData()394cdf0e10cSrcweir PE_Interface::TransferData()
395cdf0e10cSrcweir {
396cdf0e10cSrcweir if (NOT bIsPreDeclaration)
397cdf0e10cSrcweir {
398*a0d53b35SJürgen Schmidt csv_assert(!sData_Name.empty());
399cdf0e10cSrcweir csv_assert(nCurInterface.IsValid());
400cdf0e10cSrcweir }
401cdf0e10cSrcweir else
402cdf0e10cSrcweir {
403cdf0e10cSrcweir sData_Name.clear();
404cdf0e10cSrcweir pCurInterface = 0;
405cdf0e10cSrcweir nCurInterface = 0;
406cdf0e10cSrcweir }
407cdf0e10cSrcweir
408cdf0e10cSrcweir eState = e_none;
409cdf0e10cSrcweir }
410cdf0e10cSrcweir
411cdf0e10cSrcweir void
ReceiveData()412cdf0e10cSrcweir PE_Interface::ReceiveData()
413cdf0e10cSrcweir {
414cdf0e10cSrcweir switch (eState)
415cdf0e10cSrcweir {
416cdf0e10cSrcweir case in_base:
417cdf0e10cSrcweir eState = need_curlbr_open;
418cdf0e10cSrcweir break;
419cdf0e10cSrcweir case in_function:
420cdf0e10cSrcweir eState = e_std;
421cdf0e10cSrcweir break;
422cdf0e10cSrcweir case in_attribute:
423cdf0e10cSrcweir eState = e_std;
424cdf0e10cSrcweir break;
425cdf0e10cSrcweir case in_base_interface:
426cdf0e10cSrcweir if (bOptionalMember)
427cdf0e10cSrcweir {
428cdf0e10cSrcweir pPE_Type->SetOptional();
429cdf0e10cSrcweir bOptionalMember = false;
430cdf0e10cSrcweir }
431cdf0e10cSrcweir pCurInterface->Add_Base(
432cdf0e10cSrcweir nCurParsed_Base,
433cdf0e10cSrcweir pPE_Type->ReleaseDocu());
434cdf0e10cSrcweir nCurParsed_Base = 0;
435cdf0e10cSrcweir eState = e_std;
436cdf0e10cSrcweir break;
437cdf0e10cSrcweir default:
438cdf0e10cSrcweir csv_assert(false);
439cdf0e10cSrcweir }
440cdf0e10cSrcweir }
441cdf0e10cSrcweir
442cdf0e10cSrcweir UnoIDL_PE &
MyPE()443cdf0e10cSrcweir PE_Interface::MyPE()
444cdf0e10cSrcweir {
445cdf0e10cSrcweir return *this;
446cdf0e10cSrcweir }
447cdf0e10cSrcweir
448cdf0e10cSrcweir void
store_Interface()449cdf0e10cSrcweir PE_Interface::store_Interface()
450cdf0e10cSrcweir {
451cdf0e10cSrcweir pCurInterface = & Gate().Ces().Store_Interface(
452cdf0e10cSrcweir CurNamespace().CeId(),
453cdf0e10cSrcweir sData_Name,
454cdf0e10cSrcweir nCurParsed_Base );
455cdf0e10cSrcweir nCurInterface = pCurInterface->CeId();
456cdf0e10cSrcweir PassDocuAt(*pCurInterface);
457cdf0e10cSrcweir }
458cdf0e10cSrcweir
459cdf0e10cSrcweir
460cdf0e10cSrcweir } // namespace uidl
461cdf0e10cSrcweir } // namespace csi
462