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 51 UnoIDL_PE::~UnoIDL_PE() 52 { 53 } 54 55 void 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 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 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 116 UnoIDL_PE::SetDocu( DYN ary::doc::OldIdlDocu * let_dpDocu ) 117 { 118 pDocu = let_dpDocu; 119 } 120 121 void 122 UnoIDL_PE::SetPublished() 123 { 124 if (NOT pDocu) 125 { 126 pDocu = new ary::doc::OldIdlDocu; 127 } 128 pDocu->SetPublished(); 129 } 130 131 void 132 UnoIDL_PE::SetOptional() 133 { 134 if (NOT pDocu) 135 { 136 pDocu = new ary::doc::OldIdlDocu; 137 } 138 pDocu->SetOptional(); 139 } 140 141 void 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 162 UnoIDL_PE::InitData() 163 { 164 // Needs not anything to do. 165 } 166 167 void 168 UnoIDL_PE::ReceiveData() 169 { 170 // Needs not anything to do. 171 } 172 173 const ary::idl::Module & 174 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 & 186 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 197 UnoIDL_PE::UnoIDL_PE() 198 : aMyNode(), 199 pDocu(), 200 pRepository(0) 201 { 202 } 203 204 205 } // namespace uidl 206 } // namespace csi 207