1*1c78a5d6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*1c78a5d6SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*1c78a5d6SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*1c78a5d6SAndrew Rist  * distributed with this work for additional information
6*1c78a5d6SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*1c78a5d6SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*1c78a5d6SAndrew Rist  * "License"); you may not use this file except in compliance
9*1c78a5d6SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*1c78a5d6SAndrew Rist  *
11*1c78a5d6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*1c78a5d6SAndrew Rist  *
13*1c78a5d6SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*1c78a5d6SAndrew Rist  * software distributed under the License is distributed on an
15*1c78a5d6SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*1c78a5d6SAndrew Rist  * KIND, either express or implied.  See the License for the
17*1c78a5d6SAndrew Rist  * specific language governing permissions and limitations
18*1c78a5d6SAndrew Rist  * under the License.
19*1c78a5d6SAndrew Rist  *
20*1c78a5d6SAndrew Rist  *************************************************************/
21*1c78a5d6SAndrew Rist 
22*1c78a5d6SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef ADC_DISPLAY_HTML_PAGEMAKE_HXX
25cdf0e10cSrcweir #define ADC_DISPLAY_HTML_PAGEMAKE_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir 
29cdf0e10cSrcweir // USED SERVICES
30cdf0e10cSrcweir 	// BASE CLASSES
31cdf0e10cSrcweir #include <ary/ary_disp.hxx>
32cdf0e10cSrcweir #include <cosv/tpl/processor.hxx>
33cdf0e10cSrcweir #include "hdimpl.hxx"
34cdf0e10cSrcweir 	// COMPONENTS
35cdf0e10cSrcweir 	// PARAMETERS
36cdf0e10cSrcweir #include <ary/cpp/c_namesp.hxx>
37cdf0e10cSrcweir 
38cdf0e10cSrcweir namespace ary
39cdf0e10cSrcweir {
40cdf0e10cSrcweir     namespace cpp
41cdf0e10cSrcweir     {
42cdf0e10cSrcweir         class Namespace;
43cdf0e10cSrcweir         class Class;
44cdf0e10cSrcweir         class Enum;
45cdf0e10cSrcweir         class Typedef;
46cdf0e10cSrcweir     }
47cdf0e10cSrcweir     namespace loc
48cdf0e10cSrcweir     {
49cdf0e10cSrcweir         class File;
50cdf0e10cSrcweir     }
51cdf0e10cSrcweir }
52cdf0e10cSrcweir 
53cdf0e10cSrcweir 
54cdf0e10cSrcweir class OuputPage_Environment;
55cdf0e10cSrcweir class HtmlDocuFile;
56cdf0e10cSrcweir 
57cdf0e10cSrcweir 
58cdf0e10cSrcweir 
59cdf0e10cSrcweir class PageDisplay : public ary::Display,
60cdf0e10cSrcweir                     public csv::ConstProcessor<ary::cpp::Class>,
61cdf0e10cSrcweir                     public csv::ConstProcessor<ary::cpp::Enum>,
62cdf0e10cSrcweir                     public csv::ConstProcessor<ary::cpp::Typedef>,
63cdf0e10cSrcweir                     public HtmlDisplay_Impl
64cdf0e10cSrcweir {
65cdf0e10cSrcweir   public:
66cdf0e10cSrcweir 						PageDisplay(
67cdf0e10cSrcweir                             OuputPage_Environment &
68cdf0e10cSrcweir                                                 io_rEnv );
69cdf0e10cSrcweir 	virtual				~PageDisplay();
70cdf0e10cSrcweir 
71cdf0e10cSrcweir     void                Create_OverviewFile();
72cdf0e10cSrcweir     void                Create_AllDefsFile();
73cdf0e10cSrcweir     void                Create_IndexFiles();
74cdf0e10cSrcweir     void                Create_HelpFile();
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     void                Create_NamespaceFile();
77cdf0e10cSrcweir 
78cdf0e10cSrcweir     void                Setup_OperationsFile_for(
79cdf0e10cSrcweir                             const ary::loc::File &
80cdf0e10cSrcweir                                                 i_rFile );
81cdf0e10cSrcweir     void                Setup_OperationsFile_for(
82cdf0e10cSrcweir                             const ary::cpp::Class &
83cdf0e10cSrcweir                                                 i_rClass );
84cdf0e10cSrcweir     void                Setup_DataFile_for(
85cdf0e10cSrcweir                             const ary::loc::File &
86cdf0e10cSrcweir                                                 i_rFile );
87cdf0e10cSrcweir     void                Setup_DataFile_for(
88cdf0e10cSrcweir                             const ary::cpp::Class &
89cdf0e10cSrcweir                                                 i_rClass );
90cdf0e10cSrcweir     /// Used with Setup_OperatonsFile_for().
91cdf0e10cSrcweir     void                Create_File();
92cdf0e10cSrcweir 
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     // Interface for Children of SpecializedPageMaker:
95cdf0e10cSrcweir     void                Write_NameChainWithLinks(
96cdf0e10cSrcweir                             const ary::cpp::CodeEntity &
97cdf0e10cSrcweir                                                 i_rCe );
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     // Necessary, to call Process() on this class.
100cdf0e10cSrcweir     using csv::ConstProcessor<ary::cpp::Class>::Process;
101cdf0e10cSrcweir     using csv::ConstProcessor<ary::cpp::Enum>::Process;
102cdf0e10cSrcweir     using csv::ConstProcessor<ary::cpp::Typedef>::Process;
103cdf0e10cSrcweir 
104cdf0e10cSrcweir  private:
105cdf0e10cSrcweir     // Interface csv::ConstProcessor<>:
106cdf0e10cSrcweir 	virtual void	  	do_Process(
107cdf0e10cSrcweir 							const ary::cpp::Class &
108cdf0e10cSrcweir 												i_rData );
109cdf0e10cSrcweir 	virtual void	  	do_Process(
110cdf0e10cSrcweir 							const ary::cpp::Enum &
111cdf0e10cSrcweir 												i_rData );
112cdf0e10cSrcweir 	virtual void	  	do_Process(
113cdf0e10cSrcweir 							const ary::cpp::Typedef &
114cdf0e10cSrcweir 												i_rData );
115cdf0e10cSrcweir     // Interface ary::cpp::Display:
116cdf0e10cSrcweir     virtual const ary::cpp::Gate *
117cdf0e10cSrcweir                         inq_Get_ReFinder() const;
118cdf0e10cSrcweir     // Locals
File()119cdf0e10cSrcweir     HtmlDocuFile &      File()                  { return *pMyFile; }
120cdf0e10cSrcweir     void                RecursiveWrite_NamespaceLink(
121cdf0e10cSrcweir                             const ary::cpp::Namespace *
122cdf0e10cSrcweir                                                 i_pNamespace );
123cdf0e10cSrcweir     void                RecursiveWrite_ClassLink(
124cdf0e10cSrcweir                             const ary::cpp::Class *
125cdf0e10cSrcweir                                                 i_pClass,
126cdf0e10cSrcweir                             uintt               i_nLevelDistance );
127cdf0e10cSrcweir     void                SetupFileOnCurEnv(
128cdf0e10cSrcweir                             const char *        i_sTitle );
129cdf0e10cSrcweir     void                Write_NavBar_Enum(
130cdf0e10cSrcweir                             const ary::cpp::Enum &
131cdf0e10cSrcweir                                                 i_rData );
132cdf0e10cSrcweir     void                Write_TopArea_Enum(
133cdf0e10cSrcweir                             const ary::cpp::Enum &
134cdf0e10cSrcweir                                                 i_rData );
135cdf0e10cSrcweir     void                Write_DocuArea_Enum(
136cdf0e10cSrcweir                             const ary::cpp::Enum &
137cdf0e10cSrcweir                                                 i_rData );
138cdf0e10cSrcweir     void                Write_ChildList_Enum(
139cdf0e10cSrcweir                             const ary::cpp::Enum &
140cdf0e10cSrcweir                                                 i_rData );
141cdf0e10cSrcweir     void                Write_NavBar_Typedef(
142cdf0e10cSrcweir                             const ary::cpp::Typedef &
143cdf0e10cSrcweir                                                 i_rData );
144cdf0e10cSrcweir     void                Write_TopArea_Typedef(
145cdf0e10cSrcweir                             const ary::cpp::Typedef &
146cdf0e10cSrcweir                                                 i_rData );
147cdf0e10cSrcweir     void                Write_DocuArea_Typedef(
148cdf0e10cSrcweir                             const ary::cpp::Typedef &
149cdf0e10cSrcweir                                                 i_rData );
150cdf0e10cSrcweir     void                Create_IndexFile(
151cdf0e10cSrcweir                             int                 i_nLetter );
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 	// DATA
154cdf0e10cSrcweir 	Dyn<HtmlDocuFile>	pMyFile;
155cdf0e10cSrcweir };
156cdf0e10cSrcweir 
157cdf0e10cSrcweir 
158cdf0e10cSrcweir 
159cdf0e10cSrcweir 
160cdf0e10cSrcweir #endif
161