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