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 #include <precomp.h>
23 #include <s2_luidl/parsenv2.hxx>
24
25
26 // NOT FULLY DEFINED SERVICES
27 #include <ary/ary.hxx>
28 #include <ary/getncast.hxx>
29 #include <ary/qualiname.hxx>
30 #include <ary/doc/d_oldidldocu.hxx>
31 #include <ary/idl/i_gate.hxx>
32 #include <ary/idl/i_ce.hxx>
33 #include <ary/idl/i_enum.hxx>
34 #include <ary/idl/i_enumvalue.hxx>
35 #include <ary/idl/i_module.hxx>
36 #include <ary/idl/ip_ce.hxx>
37 #include <parser/parserinfo.hxx>
38 #include <adc_msg.hxx>
39 #include <s2_luidl/uidl_tok.hxx>
40 #include <x_parse2.hxx>
41
42
43
44
45 namespace csi
46 {
47 namespace uidl
48 {
49
50
~UnoIDL_PE()51 UnoIDL_PE::~UnoIDL_PE()
52 {
53 }
54
55 void
EstablishContacts(UnoIDL_PE * io_pParentPE,ary::Repository & io_rRepository,TokenProcessing_Result & o_rResult)56 UnoIDL_PE::EstablishContacts( UnoIDL_PE * io_pParentPE,
57 ary::Repository & io_rRepository,
58 TokenProcessing_Result & o_rResult )
59 {
60 pRepository = &io_rRepository;
61 aMyNode.EstablishContacts(io_pParentPE, io_rRepository.Gate_Idl(), o_rResult);
62 }
63
64 //void
65 //UnoIDL_PE::EstablishContacts( UnoIDL_PE * io_pParentPE,
66 // ary::idl::Gate & io_rGate,
67 // TokenProcessing_Result & o_rResult )
68 //{
69 // aMyNode.EstablishContacts(io_pParentPE, io_rGate, o_rResult);
70 //}
71
72 void
Enter(E_EnvStackAction i_eWayOfEntering)73 UnoIDL_PE::Enter( E_EnvStackAction i_eWayOfEntering )
74 {
75 switch (i_eWayOfEntering)
76 {
77 case push_sure:
78 InitData();
79 break;
80 case push_try:
81 csv_assert(false);
82 break;
83 case pop_success:
84 ReceiveData();
85 break;
86 case pop_failure:
87 throw X_AutodocParser(X_AutodocParser::x_Any);
88 // no break because of throw
89 default:
90 csv_assert(false);
91 } // end switch
92 }
93
94 void
Leave(E_EnvStackAction i_eWayOfLeaving)95 UnoIDL_PE::Leave( E_EnvStackAction i_eWayOfLeaving )
96 {
97 switch (i_eWayOfLeaving)
98 {
99 case push_sure:
100 break;
101 case push_try:
102 csv_assert(false);
103 break;
104 case pop_success:
105 TransferData();
106 break;
107 case pop_failure:
108 throw X_AutodocParser(X_AutodocParser::x_Any);
109 // no break because of throw
110 default:
111 csv_assert(false);
112 } // end switch
113 }
114
115 void
SetDocu(DYN ary::doc::OldIdlDocu * let_dpDocu)116 UnoIDL_PE::SetDocu( DYN ary::doc::OldIdlDocu * let_dpDocu )
117 {
118 pDocu = let_dpDocu;
119 }
120
121 void
SetPublished()122 UnoIDL_PE::SetPublished()
123 {
124 if (NOT pDocu)
125 {
126 pDocu = new ary::doc::OldIdlDocu;
127 }
128 pDocu->SetPublished();
129 }
130
131 void
SetOptional()132 UnoIDL_PE::SetOptional()
133 {
134 if (NOT pDocu)
135 {
136 pDocu = new ary::doc::OldIdlDocu;
137 }
138 pDocu->SetOptional();
139 }
140
141 void
PassDocuAt(ary::idl::CodeEntity & io_rCe)142 UnoIDL_PE::PassDocuAt( ary::idl::CodeEntity & io_rCe )
143 {
144 if (pDocu)
145 {
146 io_rCe.Set_Docu(*pDocu.Release());
147 }
148 else if // KORR_FUTURE
149 // Re-enable doc-warning for Enum Values, as soon as there is a
150 // @option -no-doc-for-enumvalues.
151 ( NOT ary::is_type<ary::idl::Module>(io_rCe)
152 AND NOT ary::is_type<ary::idl::Enum>(io_rCe) )
153 {
154 TheMessages().Out_MissingDoc(
155 io_rCe.LocalName(),
156 ParseInfo().CurFile(),
157 ParseInfo().CurLine() );
158 }
159 }
160
161 void
InitData()162 UnoIDL_PE::InitData()
163 {
164 // Needs not anything to do.
165 }
166
167 void
ReceiveData()168 UnoIDL_PE::ReceiveData()
169 {
170 // Needs not anything to do.
171 }
172
173 const ary::idl::Module &
CurNamespace() const174 UnoIDL_PE::CurNamespace() const
175 {
176 if ( Parent() != 0 )
177 return Parent()->CurNamespace();
178 else
179 {
180 csv_assert(false);
181 return *(const ary::idl::Module*)0;
182 }
183 }
184
185 const ParserInfo &
ParseInfo() const186 UnoIDL_PE::ParseInfo() const
187 {
188 if ( Parent() != 0 )
189 return Parent()->ParseInfo();
190 else
191 {
192 csv_assert(false);
193 return *(const ParserInfo*)0;
194 }
195 }
196
UnoIDL_PE()197 UnoIDL_PE::UnoIDL_PE()
198 : aMyNode(),
199 pDocu(),
200 pRepository(0)
201 {
202 }
203
204
205 } // namespace uidl
206 } // namespace csi
207