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