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 
23 
24 #ifndef ADC_DISPLAY_HTML_PM_CLASS_HXX
25 #define ADC_DISPLAY_HTML_PM_CLASS_HXX
26 
27 
28 
29 // USED SERVICES
30 	// BASE CLASSES
31 #include "pm_base.hxx"
32 	// COMPONENTS
33 	// PARAMETERS
34 
35 
36 namespace ary
37 {
38  	namespace cpp
39     {
40      	class Class;
41     }
42 }
43 
44 class ChildList_Display;
45 class NavigationBar;
46 
47 
48 class PageMaker_Class : public SpecializedPageMaker
49 {
50   public:
51     enum E_ChidList
52     {
53         cl_NestedClasses = 0,
54         cl_NestedStructs,
55         cl_NestedUnions,
56         cl_Enums,
57         cl_Typedefs,
58         cl_Operations,
59         cl_StaticOperations,
60         cl_Data,
61         cl_StaticData,
62         cl_MAX
63     };
64 						PageMaker_Class(
65                             PageDisplay &       io_rPage,
66                             const ary::cpp::Class &
67                                                 i_rClass );
68 
69 	virtual				~PageMaker_Class();
70 
71     virtual void        MakePage();
72 
73   private:
74     enum E_MemberProtection { mp_public = 0, mp_protected, mp_private, mp_MAX };
75 
76     virtual void        Write_NavBar();
77     virtual void        Write_TopArea();
78     virtual void        Write_DocuArea();
79     virtual void        Write_ChildList(
80                             ary::SlotAccessId   i_nSlot,
81                             E_ChidList          i_eChildListIndex,
82                             const char *        i_sLabel,
83                             const char *        i_sListTitle,
84                             csi::xml::Element & o_rPublic,
85                             csi::xml::Element & o_rProtected,
86                             csi::xml::Element & o_rPrivate );
87     void                Write_ChildList_forClasses(
88                             csi::xml::Element & o_rPublic,
89                             csi::xml::Element & o_rProtected,
90                             csi::xml::Element & o_rPrivate,
91                             const char *        i_sLabel,
92                             const char *        i_sListTitle,
93                             ary::cpp::E_ClassKey
94                                                 i_eFilter  );
95     void                Write_ChildLists();
96     static const char * ChildListLabel(
97                             const char *        i_sLabel,
98                             E_MemberProtection  i_eMpr );
99     csi::html::DefListDefinition &
100                         Setup_MemberSegment_Out(
101                             E_MemberProtection  i_eMpr );
102     void                Create_NaviSubRow(
103                             E_MemberProtection  i_eMpr );
104     void                Write_BaseHierarchy();
105     void                Write_DerivedList();
106 
107     const ary::cpp::Class &
Me() const108                         Me() const              { return *pMe; }
109     // DATA
110     const ary::cpp::Class *
111                         pMe;
112     Dyn<ChildList_Display>
113                         pChildDisplay;
114     Dyn<NavigationBar>  pNavi;
115 
116     Dyn<csi::xml::Element>
117                         pProtectionArea[mp_MAX];
118 
119     bool                bChildLists_Exist[3*cl_MAX];
120 };
121 
122 
123 
124 
125 
126 #endif
127 
128