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 "hi_main.hxx" 24 25 26 // NOT FULLY DEFINED SERVICES 27 #include <algorithm> 28 #include <cosv/ploc.hxx> 29 #include <cosv/file.hxx> 30 #include <ary/idl/i_ce.hxx> 31 #include <ary/idl/ik_ce.hxx> 32 #include <ary/idl/ik_enum.hxx> 33 #include <ary/idl/ik_typedef.hxx> 34 #include <ary/idl/ik_interface.hxx> 35 #include <ary/idl/ik_struct.hxx> 36 #include <ary/idl/ik_exception.hxx> 37 #include <ary/idl/i_constant.hxx> 38 #include <ary/idl/i_constgroup.hxx> 39 #include <ary/idl/i_enum.hxx> 40 #include <ary/idl/i_singleton.hxx> 41 #include <ary/idl/i_sisingleton.hxx> 42 #include <ary/idl/i_exception.hxx> 43 #include <ary/idl/i_interface.hxx> 44 #include <ary/idl/i_service.hxx> 45 #include <ary/idl/i_siservice.hxx> 46 #include <ary/idl/i_struct.hxx> 47 #include <ary/idl/i_typedef.hxx> 48 #include <ary/idl/i_module.hxx> 49 #include <cfrstd.hxx> 50 #include <toolkit/htmlfile.hxx> 51 #include <toolkit/out_position.hxx> 52 #include <toolkit/out_tree.hxx> 53 #include "hfi_constgroup.hxx" 54 #include "hfi_enum.hxx" 55 #include "hfi_globalindex.hxx" 56 #include "hfi_interface.hxx" 57 #include "hfi_module.hxx" 58 #include "hfi_struct.hxx" 59 #include "hfi_service.hxx" 60 #include "hfi_singleton.hxx" 61 #include "hfi_siservice.hxx" 62 #include "hfi_typedef.hxx" 63 #include "hfi_xrefpage.hxx" 64 #include "hi_env.hxx" 65 #include "hi_linkhelper.hxx" 66 67 68 using ::ary::idl::Ce_id; 69 using ::ary::idl::Type_id; 70 using ::ary::idl::ifc_ce::Dyn_CeIterator; 71 72 73 74 extern const String C_sCssFilename_Idl("idl.css"); 75 76 /* 77 typedef ::ary::Dyn_StdConstIterator< ::ary::idl::CommentedRelation> 78 Dyn_ComRefIterator; 79 namespace read_module = ::ary::idl::ifc_module; 80 namespace read_interface = ::ary::idl::ifc_interface; 81 namespace read_service = ::ary::idl::ifc_service; 82 namespace read_struct = ::ary::idl::ifc_struct; 83 namespace read_exception = ::ary::idl::ifc_exception; 84 namespace read_enum = ::ary::idl::ifc_enum; 85 namespace read_typedef = ::ary::idl::ifc_typedef; 86 namespace read_constgroup = ::ary::idl::ifc_constantsgroup; 87 */ 88 89 namespace 90 { 91 92 /** @resp 93 Inits (constructor) and creates (destructor) the current 94 html documentation file ( MainDisplay_Idl.pMyFile ). 95 */ 96 class Guard_CurFile 97 { 98 public: 99 Guard_CurFile( /// For CodeEntities 100 DocuFile_Html & io_client, 101 HtmlEnvironment_Idl & 102 io_env, 103 const ary::idl::CodeEntity & 104 i_ce, 105 const String & i_titlePrefix ); 106 Guard_CurFile( /// For Use pages 107 DocuFile_Html & io_client, 108 HtmlEnvironment_Idl & 109 io_env, 110 const String & i_fileName, 111 const String & i_titlePrefix ); 112 Guard_CurFile( /// For Modules 113 DocuFile_Html & io_client, 114 HtmlEnvironment_Idl & 115 io_env, 116 const ary::idl::CodeEntity & 117 i_ce ); 118 Guard_CurFile( /// For Indices 119 DocuFile_Html & io_client, 120 HtmlEnvironment_Idl & 121 io_env, 122 char i_letter ); 123 ~Guard_CurFile(); 124 private: 125 DocuFile_Html & rClient; 126 HtmlEnvironment_Idl & 127 rEnv; 128 129 }; 130 131 /** @resp 132 Sets and releases the current factory pointer 133 ( MainDisplay_Idl.pCurFactory ). 134 */ 135 class Guard_CurFactoryPtr 136 { 137 public: 138 Guard_CurFactoryPtr( 139 HtmlFactory_Idl *& io_client, 140 HtmlFactory_Idl & i_factory ) 141 : rpClient(io_client) 142 { rpClient = &i_factory; } 143 144 ~Guard_CurFactoryPtr() 145 { rpClient = 0; } 146 147 private: 148 HtmlFactory_Idl *& rpClient; 149 150 }; 151 152 153 Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client, 154 HtmlEnvironment_Idl & io_env, 155 const ary::idl::CodeEntity & i_ce, 156 const String & i_titlePrefix ) 157 : rClient(io_client), 158 rEnv(io_env) 159 { // For Ces 160 StreamLock sl(300); 161 io_env.Set_CurFile( sl() << i_ce.LocalName() 162 << ".html" 163 << c_str ); 164 StreamLock aCurFilePath(700); 165 io_env.Get_CurFilePath(aCurFilePath()); 166 167 rClient.EmptyBody(); 168 csv::ploc::Path 169 aLocation(aCurFilePath().c_str()); 170 rClient.SetLocation(aLocation); 171 sl().reset(); 172 rClient.SetTitle( sl() << i_titlePrefix 173 << " " 174 << i_ce.LocalName() 175 << c_str ); 176 sl().reset(); 177 rClient.SetRelativeCssPath( 178 sl() << io_env.CurPosition().LinkToRoot() 179 << C_sCssFilename_Idl 180 << c_str ); 181 182 io_env.Set_CurPageCe(&i_ce); 183 } 184 185 Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client, 186 HtmlEnvironment_Idl & io_env, 187 const String & i_fileName, 188 const String & i_titlePrefix ) 189 : rClient(io_client), 190 rEnv(io_env) 191 { // For Use pages 192 StreamLock sl(300); 193 io_env.Set_CurFile( sl() << i_fileName 194 << ".html" 195 << c_str ); 196 StreamLock aCurFilePath(700); 197 io_env.Get_CurFilePath(aCurFilePath()); 198 csv::ploc::Path 199 aLocation(aCurFilePath().c_str()); 200 201 rClient.EmptyBody(); 202 rClient.SetLocation(aLocation); 203 sl().reset(); 204 rClient.SetTitle( sl() << i_titlePrefix << " " << i_fileName << c_str ); 205 sl().reset(); 206 rClient.SetRelativeCssPath( 207 sl() << io_env.CurPosition().LinkToRoot() 208 << C_sCssFilename_Idl 209 << c_str ); 210 211 io_env.Set_CurPageCe(0); 212 } 213 214 Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client, 215 HtmlEnvironment_Idl & io_env, 216 const ary::idl::CodeEntity & i_ce ) 217 : rClient(io_client), 218 rEnv(io_env) 219 { // For Modules 220 io_env.Set_CurFile( output::ModuleFileName() ); 221 StreamLock aCurFilePath(700); 222 io_env.Get_CurFilePath(aCurFilePath()); 223 csv::ploc::Path 224 aLocation(aCurFilePath().c_str()); 225 226 rClient.EmptyBody(); 227 rClient.SetLocation(aLocation); 228 StreamLock sl(300); 229 rClient.SetTitle( sl() << "Module " << io_env.CurPosition().Name() << c_str ); 230 sl().reset(); 231 rClient.SetRelativeCssPath( 232 sl() << io_env.CurPosition().LinkToRoot() 233 << C_sCssFilename_Idl 234 << c_str ); 235 236 io_env.Set_CurPageCe(&i_ce); 237 } 238 239 Guard_CurFile::Guard_CurFile( DocuFile_Html & io_client, 240 HtmlEnvironment_Idl & io_env, 241 char i_letter ) 242 : rClient(io_client), 243 rEnv(io_env) 244 { // For Index pages 245 StreamLock sl(300); 246 io_env.Set_CurFile( sl() << "index-" 247 << ( i_letter != '_' 248 ? int(i_letter)-'a'+1 249 : 27 ) 250 << ".html" 251 << c_str ); 252 StreamLock aCurFilePath(700); 253 io_env.Get_CurFilePath(aCurFilePath()); 254 csv::ploc::Path 255 aLocation(aCurFilePath().c_str()); 256 257 rClient.EmptyBody(); 258 rClient.SetLocation(aLocation); 259 sl().reset(); 260 rClient.SetTitle( sl() << "Global Index " 261 << ( i_letter != '_' 262 ? char(i_letter-'a'+'A') 263 : '_' ) 264 << c_str ); 265 sl().reset(); 266 rClient.SetRelativeCssPath( 267 sl() << "../" 268 << C_sCssFilename_Idl 269 << c_str ); 270 } 271 272 Guard_CurFile::~Guard_CurFile() 273 { 274 rClient.CreateFile(); 275 rEnv.Set_CurPageCe(0); 276 } 277 278 279 } // anonymous namespace 280 281 282 283 284 MainDisplay_Idl::MainDisplay_Idl( HtmlEnvironment_Idl & io_rEnv ) 285 : pEnv(&io_rEnv), 286 pMyFile(new DocuFile_Html), 287 pCurFactory(0) 288 { 289 // pMyFile->SetStyle( Env().Layout().CssStyle() ); 290 pMyFile->SetCopyright( Env().Layout().CopyrightText() ); 291 } 292 293 MainDisplay_Idl::~MainDisplay_Idl() 294 { 295 } 296 297 298 void 299 MainDisplay_Idl::WriteGlobalIndices() 300 { 301 for ( const char * pLetter = "abcdefghijklmnopqrstuvwxyz_X"; *pLetter != 'X'; ++pLetter ) 302 { 303 Guard_CurFile gFile( *pMyFile, Env(), *pLetter ); 304 305 HF_IdlGlobalIndex aFactory( *pEnv, pMyFile->Body() ); 306 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 307 308 aFactory.Produce_Page( ary::idl::alphabetical_index::E_Letter(*pLetter) ); 309 } // end for 310 } 311 312 313 void 314 MainDisplay_Idl::do_Process( const ary::idl::Module & i_ce ) 315 { 316 Guard_CurFile gFile( *pMyFile, 317 Env(), 318 i_ce ); 319 HF_IdlModule aFactory( *pEnv, pMyFile->Body() ); 320 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 321 322 aFactory.Produce_byData(i_ce); 323 } 324 325 void 326 MainDisplay_Idl::do_Process( const ary::idl::Interface & i_ce ) 327 { 328 do_InterfaceDescr(i_ce); 329 do_Interface2s(i_ce); 330 } 331 332 void 333 MainDisplay_Idl::do_Process( const ary::idl::Service & i_ce ) 334 { 335 do_ServiceDescr(i_ce); 336 do_Service2s(i_ce); 337 } 338 339 void 340 MainDisplay_Idl::do_Process( const ary::idl::SglIfcService & i_ce ) 341 { 342 do_SglIfcServiceDescr(i_ce); 343 } 344 345 void 346 MainDisplay_Idl::do_Process( const ary::idl::Struct & i_ce ) 347 { 348 do_StructDescr(i_ce); 349 do_Struct2s(i_ce); 350 } 351 352 void 353 MainDisplay_Idl::do_Process( const ary::idl::Exception & i_ce ) 354 { 355 do_ExceptionDescr(i_ce); 356 do_Exception2s(i_ce); 357 } 358 359 void 360 MainDisplay_Idl::do_Process( const ary::idl::Enum & i_ce ) 361 { 362 do_EnumDescr(i_ce); 363 do_Enum2s(i_ce); 364 } 365 366 void 367 MainDisplay_Idl::do_Process( const ary::idl::Typedef & i_ce ) 368 { 369 do_TypedefDescr(i_ce); 370 do_Typedef2s(i_ce); 371 } 372 373 void 374 MainDisplay_Idl::do_Process( const ary::idl::ConstantsGroup & i_ce ) 375 { 376 Guard_CurFile gFile( *pMyFile, 377 Env(), 378 i_ce, 379 "Constants' Group" ); 380 HF_IdlConstGroup aFactory( *pEnv, pMyFile->Body() ); 381 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 382 383 aFactory.Produce_byData(i_ce); 384 } 385 386 void 387 MainDisplay_Idl::do_Process( const ary::idl::Singleton & i_ce ) 388 { 389 Guard_CurFile gFile( *pMyFile, 390 Env(), 391 i_ce, 392 "Singleton" ); 393 HF_IdlSingleton aFactory( *pEnv, pMyFile->Body() ); 394 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 395 396 aFactory.Produce_byData_ServiceBased(i_ce); 397 } 398 399 void 400 MainDisplay_Idl::do_Process( const ary::idl::SglIfcSingleton & i_ce ) 401 { 402 Guard_CurFile gFile( *pMyFile, 403 Env(), 404 i_ce, 405 "Singleton" ); 406 HF_IdlSingleton aFactory( *pEnv, pMyFile->Body() ); 407 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 408 409 aFactory.Produce_byData_InterfaceBased(i_ce); 410 } 411 412 void 413 MainDisplay_Idl::do_InterfaceDescr( const ary::idl::CodeEntity & i_ce ) 414 { 415 Guard_CurFile gFile( *pMyFile, 416 Env(), 417 i_ce, 418 "Interface" ); 419 HF_IdlInterface aInterface( *pEnv, pMyFile->Body() ); 420 Guard_CurFactoryPtr gFactory(pCurFactory,aInterface); 421 422 aInterface.Produce_byData(i_ce); 423 } 424 425 void 426 MainDisplay_Idl::do_ServiceDescr( const ary::idl::CodeEntity & i_ce ) 427 { 428 Guard_CurFile gFile( *pMyFile, 429 Env(), 430 i_ce, 431 "Service" ); 432 HF_IdlService aFactory( *pEnv, pMyFile->Body() ); 433 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 434 435 aFactory.Produce_byData(i_ce); 436 } 437 438 void 439 MainDisplay_Idl::do_SglIfcServiceDescr( const ary::idl::CodeEntity & i_ce ) 440 { 441 Guard_CurFile gFile( *pMyFile, 442 Env(), 443 i_ce, 444 "Service" ); 445 HF_IdlSglIfcService aFactory( *pEnv, pMyFile->Body() ); 446 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 447 448 aFactory.Produce_byData(i_ce); 449 } 450 451 void 452 MainDisplay_Idl::do_StructDescr( const ary::idl::CodeEntity & i_ce ) 453 { 454 Guard_CurFile gFile( *pMyFile, 455 Env(), 456 i_ce, 457 "Struct" ); 458 HF_IdlStruct aFactory( *pEnv, pMyFile->Body(), false ); 459 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 460 461 aFactory.Produce_byData(i_ce); 462 } 463 464 void 465 MainDisplay_Idl::do_ExceptionDescr( const ary::idl::CodeEntity & i_ce ) 466 { 467 Guard_CurFile gFile( *pMyFile, 468 Env(), 469 i_ce, 470 "Exception" ); 471 HF_IdlStruct aFactory( *pEnv, pMyFile->Body(), true ); 472 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 473 474 aFactory.Produce_byData(i_ce); 475 } 476 477 void 478 MainDisplay_Idl::do_EnumDescr( const ary::idl::CodeEntity & i_ce ) 479 { 480 Guard_CurFile gFile( *pMyFile, 481 Env(), 482 i_ce, 483 "Enum" ); 484 HF_IdlEnum aFactory( *pEnv, pMyFile->Body() ); 485 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 486 487 aFactory.Produce_byData(i_ce); 488 } 489 490 void 491 MainDisplay_Idl::do_TypedefDescr( const ary::idl::CodeEntity & i_ce ) 492 { 493 Guard_CurFile gFile( *pMyFile, 494 Env(), 495 i_ce, 496 "Typedef" ); 497 HF_IdlTypedef aFactory( *pEnv, pMyFile->Body() ); 498 Guard_CurFactoryPtr gFactory(pCurFactory,aFactory); 499 500 aFactory.Produce_byData(i_ce); 501 } 502 503 void 504 MainDisplay_Idl::do_Interface2s( const ary::idl::CodeEntity & i_ce ) 505 { 506 StreamLock sl(100); 507 String sUsesFileName( 508 sl() 509 << i_ce.LocalName() 510 << Env().Linker().XrefsSuffix() 511 << c_str ); 512 Guard_CurFile gFile( *pMyFile, 513 Env(), 514 sUsesFileName, 515 "Uses of Interface" ); 516 HF_IdlXrefs aUses( *pEnv, 517 pMyFile->Body(), 518 C_sCePrefix_Interface, 519 i_ce ); 520 521 522 aUses.Produce_Tree( 523 "Derived Interfaces", 524 "#Deriveds", 525 i_ce, 526 &ary::idl::ifc_interface::xref::Get_Derivations ); 527 528 Dyn_CeIterator pXrefList; 529 530 ary::idl::ifc_interface::xref::Get_SynonymTypedefs(pXrefList,i_ce); 531 aUses.Produce_List( 532 "Synonym Typedefs", 533 "#Synonyms", 534 *pXrefList ); 535 ary::idl::ifc_interface::xref::Get_ExportingServices(pXrefList,i_ce); 536 aUses.Produce_List( 537 "Services which Support this Interface", 538 "#SupportingServices", 539 *pXrefList ); 540 ary::idl::ifc_interface::xref::Get_ExportingSingletons(pXrefList,i_ce); 541 aUses.Produce_List( 542 "Singletons which Support this Interface", 543 "#SupportingSingletons", 544 *pXrefList ); 545 ary::idl::ifc_interface::xref::Get_AsReturns(pXrefList,i_ce); 546 aUses.Produce_List( 547 "Uses as Return Type", 548 "#Returns", 549 *pXrefList ); 550 ary::idl::ifc_interface::xref::Get_AsParameters(pXrefList,i_ce); 551 aUses.Produce_List( 552 "Uses as Parameter", 553 "#Parameters", 554 *pXrefList ); 555 ary::idl::ifc_interface::xref::Get_AsDataTypes(pXrefList,i_ce); 556 aUses.Produce_List( 557 "Uses as Data Type", 558 "#DataTypes", 559 *pXrefList ); 560 aUses.Write_ManualLinks(i_ce); 561 } 562 563 void 564 MainDisplay_Idl::do_Service2s( const ary::idl::CodeEntity & i_ce ) 565 { 566 StreamLock sl(100); 567 String sUsesFileName( 568 sl() 569 << i_ce.LocalName() 570 << Env().Linker().XrefsSuffix() 571 << c_str ); 572 Guard_CurFile gFile( *pMyFile, 573 Env(), 574 sUsesFileName, 575 "Uses of Service" ); 576 HF_IdlXrefs aUses( *pEnv, 577 pMyFile->Body(), 578 C_sCePrefix_Service, 579 i_ce ); 580 Dyn_CeIterator pXrefList; 581 ary::idl::ifc_service::xref::Get_IncludingServices(pXrefList,i_ce); 582 aUses.Produce_List( 583 "Services which Include this Service", 584 "#IncludingServices", 585 *pXrefList ); 586 587 ary::idl::ifc_service::xref::Get_InstantiatingSingletons(pXrefList,i_ce); 588 aUses.Produce_List( 589 "Singletons which Instantiate this Service", 590 "#Singletons", 591 *pXrefList ); 592 aUses.Write_ManualLinks(i_ce); 593 } 594 595 void 596 MainDisplay_Idl::do_Struct2s( const ary::idl::CodeEntity & i_ce ) 597 { 598 StreamLock sl(100); 599 String sUsesFileName( 600 sl() 601 << i_ce.LocalName() 602 << Env().Linker().XrefsSuffix() 603 << c_str ); 604 Guard_CurFile gFile( *pMyFile, 605 Env(), 606 sUsesFileName, 607 "Uses of Struct" ); 608 HF_IdlXrefs aUses( *pEnv, 609 pMyFile->Body(), 610 C_sCePrefix_Struct, 611 i_ce ); 612 613 aUses.Produce_Tree( 614 "Derived Structs", 615 "#Deriveds", 616 i_ce, 617 &ary::idl::ifc_struct::xref::Get_Derivations ); 618 619 Dyn_CeIterator pXrefList; 620 621 ary::idl::ifc_struct::xref::Get_SynonymTypedefs(pXrefList,i_ce); 622 aUses.Produce_List( 623 "Synonym Typedefs", 624 "#Synonyms", 625 *pXrefList ); 626 ary::idl::ifc_struct::xref::Get_AsReturns(pXrefList,i_ce); 627 aUses.Produce_List( 628 "Uses as Return Type", 629 "#Returns", 630 *pXrefList ); 631 ary::idl::ifc_struct::xref::Get_AsParameters(pXrefList,i_ce); 632 aUses.Produce_List( 633 "Uses as Parameter", 634 "#Parameters", 635 *pXrefList ); 636 ary::idl::ifc_struct::xref::Get_AsDataTypes(pXrefList,i_ce); 637 aUses.Produce_List( 638 "Uses as Data Type", 639 "#DataTypes", 640 *pXrefList ); 641 aUses.Write_ManualLinks(i_ce); 642 } 643 644 void 645 MainDisplay_Idl::do_Exception2s( const ary::idl::CodeEntity & i_ce ) 646 { 647 StreamLock sl(100); 648 String sUsesFileName( 649 sl() 650 << i_ce.LocalName() 651 << Env().Linker().XrefsSuffix() 652 << c_str ); 653 Guard_CurFile gFile( *pMyFile, 654 Env(), 655 sUsesFileName, 656 "Uses of Exception" ); 657 HF_IdlXrefs aUses( *pEnv, 658 pMyFile->Body(), 659 C_sCePrefix_Exception, 660 i_ce ); 661 662 aUses.Produce_Tree( 663 "Derived Exceptions", 664 "#Deriveds", 665 i_ce, 666 &ary::idl::ifc_exception::xref::Get_Derivations ); 667 668 Dyn_CeIterator pXrefList; 669 670 ary::idl::ifc_exception::xref::Get_RaisingFunctions(pXrefList,i_ce); 671 aUses.Produce_List( 672 "Raising Functions", 673 "#Raisers", 674 *pXrefList ); 675 aUses.Write_ManualLinks(i_ce); 676 } 677 678 void 679 MainDisplay_Idl::do_Enum2s( const ary::idl::CodeEntity & i_ce ) 680 { 681 StreamLock sl(100); 682 String sUsesFileName( 683 sl() 684 << i_ce.LocalName() 685 << Env().Linker().XrefsSuffix() 686 << c_str ); 687 Guard_CurFile gFile( *pMyFile, 688 Env(), 689 sUsesFileName, 690 "Uses of Enum" ); 691 HF_IdlXrefs aUses( *pEnv, 692 pMyFile->Body(), 693 C_sCePrefix_Enum, 694 i_ce ); 695 Dyn_CeIterator pXrefList; 696 ary::idl::ifc_enum::xref::Get_SynonymTypedefs(pXrefList,i_ce); 697 aUses.Produce_List( 698 "Synonym Typedefs", 699 "#Synonyms", 700 *pXrefList ); 701 ary::idl::ifc_enum::xref::Get_AsReturns(pXrefList,i_ce); 702 aUses.Produce_List( 703 "Uses as Return Type", 704 "#Returns", 705 *pXrefList ); 706 ary::idl::ifc_enum::xref::Get_AsParameters(pXrefList,i_ce); 707 aUses.Produce_List( 708 "Uses as Parameter", 709 "#Parameters", 710 *pXrefList ); 711 ary::idl::ifc_enum::xref::Get_AsDataTypes(pXrefList,i_ce); 712 aUses.Produce_List( 713 "Uses as Data Type", 714 "#DataTypes", 715 *pXrefList ); 716 aUses.Write_ManualLinks(i_ce); 717 } 718 719 void 720 MainDisplay_Idl::do_Typedef2s( const ary::idl::CodeEntity & i_ce ) 721 { 722 StreamLock sl(100); 723 String sUsesFileName( 724 sl() << i_ce.LocalName() 725 << Env().Linker().XrefsSuffix() 726 << c_str ); 727 Guard_CurFile gFile( *pMyFile, 728 Env(), 729 sUsesFileName, 730 "Uses of Typedef" ); 731 HF_IdlXrefs aUses( *pEnv, 732 pMyFile->Body(), 733 C_sCePrefix_Typedef, 734 i_ce ); 735 Dyn_CeIterator pXrefList; 736 ary::idl::ifc_typedef::xref::Get_SynonymTypedefs(pXrefList,i_ce); 737 aUses.Produce_List( 738 "Synonym Typedefs", 739 "#Synonyms", 740 *pXrefList ); 741 ary::idl::ifc_typedef::xref::Get_AsReturns(pXrefList,i_ce); 742 aUses.Produce_List( 743 "Uses as Return Type", 744 "#Returns", 745 *pXrefList ); 746 ary::idl::ifc_typedef::xref::Get_AsParameters(pXrefList,i_ce); 747 aUses.Produce_List( 748 "Uses as Parameter", 749 "#Parameters", 750 *pXrefList ); 751 ary::idl::ifc_typedef::xref::Get_AsDataTypes(pXrefList,i_ce); 752 aUses.Produce_List( 753 "Uses as Data Type", 754 "#DataTypes", 755 *pXrefList ); 756 aUses.Write_ManualLinks(i_ce); 757 } 758 759