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