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_HDIMPL_HXX
25 #define ADC_DISPLAY_HDIMPL_HXX
26
27 // BASE CLASSES
28 #include <udm/html/htmlitem.hxx>
29 // USED SERVICES
30 #include "easywri.hxx"
31 #include <cosv/bstream.hxx>
32 #include <ary/ary_disp.hxx>
33 #include <ary/cpp/c_namesp.hxx>
34 #include <ary/cpp/c_ce.hxx>
35 #include "aryattrs.hxx" // For compatibility with earlier times, when those funtions were in this header.
36
37
38 namespace ary
39 {
40 namespace cpp
41 {
42 class CodeEntity;
43 class Class;
44 class DisplayGate;
45 class Function;
46 class DefineEntity;
47 class OperationSignature;
48 }
49
50 class QualifiedName;
51 }
52 namespace csi
53 {
54 namespace xml
55 {
56 class Element;
57 }
58 namespace html
59 {
60 class Table;
61 }
62 }
63
64 namespace adcdisp
65 {
66 class ParameterTable;
67 }
68
69 class OuputPage_Environment;
70 class Docu_Display;
71
72 class HtmlDisplay_Impl
73 {
74 public:
75 ~HtmlDisplay_Impl();
76
77 const OuputPage_Environment &
Env() const78 Env() const { return *pEnv; }
79
80 // ACCESS
81 OuputPage_Environment &
Env()82 Env() { return *pEnv; }
Easy()83 EasyWriter & Easy() { return aWriteHelper; }
CurOut()84 csi::xml::Element & CurOut() { return aWriteHelper.Out(); }
85
86 protected:
87 HtmlDisplay_Impl(
88 OuputPage_Environment &
89 io_rEnv );
90 private:
91 // DATA
92 OuputPage_Environment *
93 pEnv;
94 EasyWriter aWriteHelper;
95 };
96
97
98 namespace dshelp
99 {
100
101 void DisplaySlot(
102 ary::Display & o_rDisplay,
103 const ary::AryGroup &
104 i_rGroup,
105 ary::SlotAccessId i_nSlot );
106
107
108 const char * PathUp(
109 uintt i_nLevels );
110 const char * PathPerLevelsUp(
111 uintt i_nLevels,
112 const char * i_nPathBelowDestinationLevel );
113
114 const char * PathPerRoot(
115 const OuputPage_Environment &
116 i_rEnv,
117 const char * i_sPathFromRootDir );
118 const char * PathPerNamespace(
119 const OuputPage_Environment &
120 i_rEnv,
121 const char * i_sPathFromNamespaceDir );
122
123 void Create_ChildListLabel(
124 csi::xml::Element & o_rParentElement,
125 const char * i_sLabel );
126 DYN csi::html::Table &
127 Create_ChildListTable(
128 const char * i_sTitle );
129
130 const char * HtmlFileName(
131 const char * i_sPrefix,
132 const char * i_sEntityName );
133
134 inline const char *
ClassFileName(const char * i_sClassLocalName)135 ClassFileName( const char * i_sClassLocalName )
136 { return HtmlFileName( "c-", i_sClassLocalName); }
137 inline const char *
EnumFileName(const char * i_sEnumLocalName)138 EnumFileName( const char * i_sEnumLocalName )
139 { return HtmlFileName( "e-", i_sEnumLocalName); }
140 inline const char *
TypedefFileName(const char * i_sTypedefLocalName)141 TypedefFileName( const char * i_sTypedefLocalName )
142 { return HtmlFileName( "t-", i_sTypedefLocalName); }
143 inline const char *
FileFileName(const char * i_sFileLocalName)144 FileFileName( const char * i_sFileLocalName )
145 { return HtmlFileName( "f-", i_sFileLocalName); }
146
147 const char * Path2Class(
148 uintt i_nLevelsUp,
149 const char * i_sClassLocalName );
150
151 const char * Path2Child(
152 const char * i_sFileName,
153 const char * i_sSubDir = 0 );
154
155 const char * Path2ChildNamespace(
156 const char * i_sLocalName );
157
158 String OperationLink(
159 const ary::cpp::Gate & i_gate,
160 const String & i_sOpName,
161 ary::cpp::Ce_id i_nOpId,
162 const char * i_sPrePath = "" );
163 const char * DataLink(
164 const String & i_sLocalName,
165 const char * i_sPrePath = "" );
166
167 inline String
OperationLabel(const String & i_sOpName,ary::cpp::Ce_id i_nOpId,const ary::cpp::Gate & i_gate)168 OperationLabel( const String & i_sOpName,
169 ary::cpp::Ce_id i_nOpId,
170 const ary::cpp::Gate & i_gate )
171 { return String(OperationLink(i_gate, i_sOpName, i_nOpId) + 1); } // Skip '#' in front.
172 inline const char *
DataLabel(const String & i_sLocalName)173 DataLabel( const String & i_sLocalName )
174 { return DataLink(i_sLocalName) + 1; } // Skip '#' in front.
175
176
177 void Get_LinkedTypeText(
178 csi::xml::Element & o_rOut,
179 const OuputPage_Environment &
180 i_rEnv,
181 ary::cpp::Type_id i_nId,
182 bool i_bWithAbsolutifier = true );
183
184
185 const char * Link2Ce(
186 const OuputPage_Environment &
187 i_rEnv,
188 const ary::cpp::CodeEntity &
189 i_rCe );
190
191 const char * Link2CppDefinition(
192 const OuputPage_Environment &
193 i_rEnv,
194 const ary::cpp::DefineEntity &
195 i_rDef );
196
197 const ary::cpp::CodeEntity *
198 FindUnambiguousCe(
199 const OuputPage_Environment &
200 i_rEnv,
201 const ary::QualifiedName &
202 i_rQuName,
203 const ary::cpp::Class * i_pJustDocumentedClass );
204
205 void ShowDocu_On(
206 csi::xml::Element & o_rOut,
207 Docu_Display & io_rDisplay,
208 const ary::cpp::CppEntity &
209 i_rRE );
210
211 void WriteOut_TokenList(
212 csi::xml::Element & o_rOut,
213 const StringVector & i_rTokens,
214 const char * i_sSeparator );
215
216 void EraseLeadingSpace(
217 String & io_rStr );
218
219 /** @param o_bIsConst
220 *o_bIsConst will be set to true, if o_bIsConst != 0 and function is const.
221 If the function is not const, *o_bIsConst remains unchanged!
222
223 @param o_bIsVirtual
224 The same as o_bIsConst.
225 */
226 void WriteOut_LinkedFunctionText(
227 csi::xml::Element & o_rTitleOut,
228 adcdisp::ParameterTable &
229 o_rParameters,
230 const ary::cpp::Function &
231 i_rFunction,
232 const OuputPage_Environment &
233 i_rEnv,
234 bool * o_bIsConst = 0,
235 bool * o_bIsVirtual = 0 );
236
237
238
239 } // namespace dshelp
240
241 using namespace dshelp;
242
243 #endif
244