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 #include <precomp.h>
23*b1cdbd2cSJim Jagielski #include "opageenv.hxx"
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski // NOT FULLY DEFINED SERVICES
27*b1cdbd2cSJim Jagielski #include <cosv/ploc_dir.hxx>
28*b1cdbd2cSJim Jagielski #include <ary/cpp/c_ce.hxx>
29*b1cdbd2cSJim Jagielski #include <ary/cpp/c_class.hxx>
30*b1cdbd2cSJim Jagielski #include <ary/cpp/c_enum.hxx>
31*b1cdbd2cSJim Jagielski #include <ary/cpp/c_gate.hxx>
32*b1cdbd2cSJim Jagielski #include <ary/cpp/c_namesp.hxx>
33*b1cdbd2cSJim Jagielski #include <ary/cpp/c_tydef.hxx>
34*b1cdbd2cSJim Jagielski #include <ary/cpp/cp_ce.hxx>
35*b1cdbd2cSJim Jagielski #include <ary/loc/loc_file.hxx>
36*b1cdbd2cSJim Jagielski #include <udm/html/htmlitem.hxx>
37*b1cdbd2cSJim Jagielski #include <estack.hxx>
38*b1cdbd2cSJim Jagielski #include "hdimpl.hxx"
39*b1cdbd2cSJim Jagielski #include "strconst.hxx"
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski const String C_sCppDir( "names" );
43*b1cdbd2cSJim Jagielski const String C_sIndexDir( "ix" );
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski //************************ Implementation ********************//
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski namespace
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski void CreateDirectory( const csv::ploc::Path & i_rPath );
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski void
CreateDirectory(const csv::ploc::Path & i_rPath)54*b1cdbd2cSJim Jagielski CreateDirectory( const csv::ploc::Path & i_rPath )
55*b1cdbd2cSJim Jagielski {
56*b1cdbd2cSJim Jagielski csv::ploc::Directory aDirectory(i_rPath);
57*b1cdbd2cSJim Jagielski if (NOT aDirectory.Exists())
58*b1cdbd2cSJim Jagielski aDirectory.PhysicalCreate();
59*b1cdbd2cSJim Jagielski }
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski //************************ CheshireCat ********************//
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski struct InNamespaceTree
64*b1cdbd2cSJim Jagielski {
65*b1cdbd2cSJim Jagielski enum E_Type
66*b1cdbd2cSJim Jagielski {
67*b1cdbd2cSJim Jagielski t_unknown,
68*b1cdbd2cSJim Jagielski t_namespace,
69*b1cdbd2cSJim Jagielski t_type,
70*b1cdbd2cSJim Jagielski t_operations,
71*b1cdbd2cSJim Jagielski t_data
72*b1cdbd2cSJim Jagielski };
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski EStack< const ary::cpp::Namespace * >
75*b1cdbd2cSJim Jagielski aNamespaces; /// never empty.
76*b1cdbd2cSJim Jagielski EStack< const ary::cpp::Class * >
77*b1cdbd2cSJim Jagielski aClasses; /// maybe empty.
78*b1cdbd2cSJim Jagielski const ary::cpp::CodeEntity *
79*b1cdbd2cSJim Jagielski pCe; /// CurFileCe, maybe 0
80*b1cdbd2cSJim Jagielski E_Type eType;
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski InNamespaceTree(
83*b1cdbd2cSJim Jagielski const ary::cpp::Namespace &
84*b1cdbd2cSJim Jagielski i_rNsp );
85*b1cdbd2cSJim Jagielski ~InNamespaceTree();
86*b1cdbd2cSJim Jagielski void GoDown(
87*b1cdbd2cSJim Jagielski const ary::cpp::Namespace &
88*b1cdbd2cSJim Jagielski i_rNsp );
89*b1cdbd2cSJim Jagielski void GoDown(
90*b1cdbd2cSJim Jagielski const ary::cpp::Class &
91*b1cdbd2cSJim Jagielski i_rClass );
92*b1cdbd2cSJim Jagielski void GoUp();
93*b1cdbd2cSJim Jagielski };
94*b1cdbd2cSJim Jagielski
InNamespaceTree(const ary::cpp::Namespace & i_rNsp)95*b1cdbd2cSJim Jagielski InNamespaceTree::InNamespaceTree( const ary::cpp::Namespace & i_rNsp )
96*b1cdbd2cSJim Jagielski : // aNamespaces,
97*b1cdbd2cSJim Jagielski // aClasses,
98*b1cdbd2cSJim Jagielski pCe(0),
99*b1cdbd2cSJim Jagielski eType(t_unknown)
100*b1cdbd2cSJim Jagielski {
101*b1cdbd2cSJim Jagielski aNamespaces.push( &i_rNsp );
102*b1cdbd2cSJim Jagielski }
103*b1cdbd2cSJim Jagielski
~InNamespaceTree()104*b1cdbd2cSJim Jagielski InNamespaceTree::~InNamespaceTree()
105*b1cdbd2cSJim Jagielski {
106*b1cdbd2cSJim Jagielski }
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski void
GoDown(const ary::cpp::Namespace & i_rNsp)109*b1cdbd2cSJim Jagielski InNamespaceTree::GoDown( const ary::cpp::Namespace & i_rNsp )
110*b1cdbd2cSJim Jagielski {
111*b1cdbd2cSJim Jagielski aNamespaces.push(&i_rNsp);
112*b1cdbd2cSJim Jagielski aClasses.erase_all();
113*b1cdbd2cSJim Jagielski pCe = 0;
114*b1cdbd2cSJim Jagielski eType = t_unknown;
115*b1cdbd2cSJim Jagielski }
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski void
GoDown(const ary::cpp::Class & i_rClass)118*b1cdbd2cSJim Jagielski InNamespaceTree::GoDown( const ary::cpp::Class & i_rClass )
119*b1cdbd2cSJim Jagielski {
120*b1cdbd2cSJim Jagielski aClasses.push(&i_rClass);
121*b1cdbd2cSJim Jagielski pCe = 0;
122*b1cdbd2cSJim Jagielski eType = t_unknown;
123*b1cdbd2cSJim Jagielski }
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski void
GoUp()126*b1cdbd2cSJim Jagielski InNamespaceTree::GoUp()
127*b1cdbd2cSJim Jagielski {
128*b1cdbd2cSJim Jagielski if ( NOT aClasses.empty() )
129*b1cdbd2cSJim Jagielski aClasses.pop();
130*b1cdbd2cSJim Jagielski else
131*b1cdbd2cSJim Jagielski aNamespaces.pop();
132*b1cdbd2cSJim Jagielski pCe = 0;
133*b1cdbd2cSJim Jagielski eType = t_unknown;
134*b1cdbd2cSJim Jagielski }
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski struct InIndex
137*b1cdbd2cSJim Jagielski {
138*b1cdbd2cSJim Jagielski char cLetter;
139*b1cdbd2cSJim Jagielski
InIndex__anonc405e81c0111::InIndex140*b1cdbd2cSJim Jagielski InIndex() : cLetter('A') {}
141*b1cdbd2cSJim Jagielski };
142*b1cdbd2cSJim Jagielski
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski } // anonymous namespace
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski
149*b1cdbd2cSJim Jagielski
150*b1cdbd2cSJim Jagielski struct OuputPage_Environment::CheshireCat
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski csv::ploc::Path aOutputRoot;
153*b1cdbd2cSJim Jagielski csv::ploc::Path aMyPath;
154*b1cdbd2cSJim Jagielski csv::StreamStr aFileName;
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim Jagielski const ary::cpp::Gate *
157*b1cdbd2cSJim Jagielski pGate;
158*b1cdbd2cSJim Jagielski const display::CorporateFrame *
159*b1cdbd2cSJim Jagielski pLayout;
160*b1cdbd2cSJim Jagielski intt nDepth;
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski Dyn<InNamespaceTree>
163*b1cdbd2cSJim Jagielski pInNamespace;
164*b1cdbd2cSJim Jagielski Dyn<InIndex> pInIndex;
165*b1cdbd2cSJim Jagielski
166*b1cdbd2cSJim Jagielski CheshireCat(
167*b1cdbd2cSJim Jagielski const csv::ploc::Path &
168*b1cdbd2cSJim Jagielski io_rOutputDir,
169*b1cdbd2cSJim Jagielski const ary::cpp::Gate &
170*b1cdbd2cSJim Jagielski i_rGate,
171*b1cdbd2cSJim Jagielski const display::CorporateFrame &
172*b1cdbd2cSJim Jagielski i_rLayout );
173*b1cdbd2cSJim Jagielski ~CheshireCat();
174*b1cdbd2cSJim Jagielski void AddQualifiedName2Path(
175*b1cdbd2cSJim Jagielski const ary::cpp::CodeEntity &
176*b1cdbd2cSJim Jagielski i_rCe,
177*b1cdbd2cSJim Jagielski bool i_bIncludeLocalName );
178*b1cdbd2cSJim Jagielski
179*b1cdbd2cSJim Jagielski const Dyn<InNamespaceTree> &
NspEnvOuputPage_Environment::CheshireCat180*b1cdbd2cSJim Jagielski NspEnv() const { return pInNamespace; }
181*b1cdbd2cSJim Jagielski Dyn<InNamespaceTree> &
NspEnvOuputPage_Environment::CheshireCat182*b1cdbd2cSJim Jagielski NspEnv() { return pInNamespace; }
183*b1cdbd2cSJim Jagielski const ary::cpp::Namespace *
NamespaceOuputPage_Environment::CheshireCat184*b1cdbd2cSJim Jagielski Namespace() const { return pInNamespace ? pInNamespace->aNamespaces.top() : 0; }
185*b1cdbd2cSJim Jagielski const ary::cpp::Class *
ClassOuputPage_Environment::CheshireCat186*b1cdbd2cSJim Jagielski Class() const { return pInNamespace ? (pInNamespace->aClasses.empty() ? 0 : pInNamespace->aClasses.top()) : 0; }
187*b1cdbd2cSJim Jagielski };
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim Jagielski OuputPage_Environment::
CheshireCat(const csv::ploc::Path & io_rOutputDir,const ary::cpp::Gate & i_rGate,const display::CorporateFrame & i_rLayout)190*b1cdbd2cSJim Jagielski CheshireCat::CheshireCat( const csv::ploc::Path & io_rOutputDir,
191*b1cdbd2cSJim Jagielski const ary::cpp::Gate & i_rGate,
192*b1cdbd2cSJim Jagielski const display::CorporateFrame & i_rLayout )
193*b1cdbd2cSJim Jagielski : aOutputRoot(io_rOutputDir),
194*b1cdbd2cSJim Jagielski aMyPath(io_rOutputDir),
195*b1cdbd2cSJim Jagielski aFileName(500),
196*b1cdbd2cSJim Jagielski pGate(&i_rGate),
197*b1cdbd2cSJim Jagielski pLayout(&i_rLayout),
198*b1cdbd2cSJim Jagielski nDepth(0),
199*b1cdbd2cSJim Jagielski pInNamespace(),
200*b1cdbd2cSJim Jagielski pInIndex()
201*b1cdbd2cSJim Jagielski {
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski
204*b1cdbd2cSJim Jagielski OuputPage_Environment::
~CheshireCat()205*b1cdbd2cSJim Jagielski CheshireCat::~CheshireCat()
206*b1cdbd2cSJim Jagielski {
207*b1cdbd2cSJim Jagielski }
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski void
210*b1cdbd2cSJim Jagielski OuputPage_Environment::
AddQualifiedName2Path(const ary::cpp::CodeEntity & i_rCe,bool i_bIncludeLocalName)211*b1cdbd2cSJim Jagielski CheshireCat::AddQualifiedName2Path( const ary::cpp::CodeEntity & i_rCe,
212*b1cdbd2cSJim Jagielski bool i_bIncludeLocalName )
213*b1cdbd2cSJim Jagielski {
214*b1cdbd2cSJim Jagielski if (NOT i_rCe.Owner().IsValid())
215*b1cdbd2cSJim Jagielski {
216*b1cdbd2cSJim Jagielski aMyPath.DirChain().PushBack( C_sCppDir );
217*b1cdbd2cSJim Jagielski return;
218*b1cdbd2cSJim Jagielski }
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski const ary::cpp::CodeEntity &
221*b1cdbd2cSJim Jagielski rParent = pGate->Ces().Find_Ce( i_rCe.Owner() );
222*b1cdbd2cSJim Jagielski AddQualifiedName2Path( rParent, true );
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielski if ( i_bIncludeLocalName )
225*b1cdbd2cSJim Jagielski aMyPath.DirChain().PushBack( i_rCe.LocalName() );
226*b1cdbd2cSJim Jagielski }
227*b1cdbd2cSJim Jagielski
228*b1cdbd2cSJim Jagielski
229*b1cdbd2cSJim Jagielski
230*b1cdbd2cSJim Jagielski //************************ OuputPage_Environment ********************//
231*b1cdbd2cSJim Jagielski
OuputPage_Environment(const csv::ploc::Path & io_rOutputDir,const ary::cpp::Gate & i_rGate,const display::CorporateFrame & i_rLayout)232*b1cdbd2cSJim Jagielski OuputPage_Environment::OuputPage_Environment( const csv::ploc::Path & io_rOutputDir,
233*b1cdbd2cSJim Jagielski const ary::cpp::Gate & i_rGate,
234*b1cdbd2cSJim Jagielski const display::CorporateFrame & i_rLayout )
235*b1cdbd2cSJim Jagielski : pi( new CheshireCat(io_rOutputDir, i_rGate, i_rLayout) )
236*b1cdbd2cSJim Jagielski {
237*b1cdbd2cSJim Jagielski }
238*b1cdbd2cSJim Jagielski
~OuputPage_Environment()239*b1cdbd2cSJim Jagielski OuputPage_Environment::~OuputPage_Environment()
240*b1cdbd2cSJim Jagielski {
241*b1cdbd2cSJim Jagielski }
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski void
MoveDir_2Root()244*b1cdbd2cSJim Jagielski OuputPage_Environment::MoveDir_2Root()
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski pi->NspEnv() = 0;
247*b1cdbd2cSJim Jagielski pi->pInIndex = 0;
248*b1cdbd2cSJim Jagielski pi->nDepth = 0;
249*b1cdbd2cSJim Jagielski while ( pi->aMyPath.DirChain().Size() > pi->aOutputRoot.DirChain().Size() )
250*b1cdbd2cSJim Jagielski pi->aMyPath.DirChain().PopBack();
251*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile(String ::Null_());
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski
254*b1cdbd2cSJim Jagielski void
MoveDir_2Names()255*b1cdbd2cSJim Jagielski OuputPage_Environment::MoveDir_2Names()
256*b1cdbd2cSJim Jagielski {
257*b1cdbd2cSJim Jagielski pi->NspEnv() = new InNamespaceTree( Gate().Ces().GlobalNamespace() );
258*b1cdbd2cSJim Jagielski pi->aMyPath.DirChain().PushBack( C_sCppDir );
259*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile(String ::Null_());
260*b1cdbd2cSJim Jagielski ++pi->nDepth;
261*b1cdbd2cSJim Jagielski
262*b1cdbd2cSJim Jagielski CreateDirectory( pi->aMyPath );
263*b1cdbd2cSJim Jagielski }
264*b1cdbd2cSJim Jagielski
265*b1cdbd2cSJim Jagielski void
MoveDir_Down2(const ary::cpp::Namespace & i_rNsp)266*b1cdbd2cSJim Jagielski OuputPage_Environment::MoveDir_Down2( const ary::cpp::Namespace & i_rNsp )
267*b1cdbd2cSJim Jagielski {
268*b1cdbd2cSJim Jagielski csv_assert(i_rNsp.Depth() > 0);
269*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
270*b1cdbd2cSJim Jagielski csv_assert( pi->Namespace()->CeId() == i_rNsp.Owner() );
271*b1cdbd2cSJim Jagielski
272*b1cdbd2cSJim Jagielski pi->NspEnv()->GoDown( i_rNsp );
273*b1cdbd2cSJim Jagielski pi->aMyPath.DirChain().PushBack(i_rNsp.LocalName());
274*b1cdbd2cSJim Jagielski ++pi->nDepth;
275*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile(String ::Null_());
276*b1cdbd2cSJim Jagielski
277*b1cdbd2cSJim Jagielski CreateDirectory( pi->aMyPath );
278*b1cdbd2cSJim Jagielski }
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski void
MoveDir_Down2(const ary::cpp::Class & i_rClass)281*b1cdbd2cSJim Jagielski OuputPage_Environment::MoveDir_Down2( const ary::cpp::Class & i_rClass )
282*b1cdbd2cSJim Jagielski {
283*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
284*b1cdbd2cSJim Jagielski if ( i_rClass.Protection() == ary::cpp::PROTECT_global )
285*b1cdbd2cSJim Jagielski {
286*b1cdbd2cSJim Jagielski csv_assert( pi->Namespace()->CeId() == i_rClass.Owner() );
287*b1cdbd2cSJim Jagielski }
288*b1cdbd2cSJim Jagielski else
289*b1cdbd2cSJim Jagielski {
290*b1cdbd2cSJim Jagielski csv_assert( pi->Class() != 0 );
291*b1cdbd2cSJim Jagielski csv_assert( pi->Class()->CeId() == i_rClass.Owner() );
292*b1cdbd2cSJim Jagielski }
293*b1cdbd2cSJim Jagielski
294*b1cdbd2cSJim Jagielski pi->NspEnv()->GoDown(i_rClass);
295*b1cdbd2cSJim Jagielski pi->aMyPath.DirChain().PushBack(i_rClass.LocalName());
296*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile(String ::Null_());
297*b1cdbd2cSJim Jagielski ++pi->nDepth;
298*b1cdbd2cSJim Jagielski
299*b1cdbd2cSJim Jagielski CreateDirectory( pi->aMyPath );
300*b1cdbd2cSJim Jagielski }
301*b1cdbd2cSJim Jagielski
302*b1cdbd2cSJim Jagielski void
MoveDir_2Index()303*b1cdbd2cSJim Jagielski OuputPage_Environment::MoveDir_2Index()
304*b1cdbd2cSJim Jagielski {
305*b1cdbd2cSJim Jagielski MoveDir_2Root();
306*b1cdbd2cSJim Jagielski pi->pInIndex = new InIndex;
307*b1cdbd2cSJim Jagielski pi->aMyPath.DirChain().PushBack( String (C_sDIR_Index) );
308*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile(String ::Null_());
309*b1cdbd2cSJim Jagielski pi->nDepth = 1;
310*b1cdbd2cSJim Jagielski
311*b1cdbd2cSJim Jagielski CreateDirectory( pi->aMyPath );
312*b1cdbd2cSJim Jagielski }
313*b1cdbd2cSJim Jagielski
314*b1cdbd2cSJim Jagielski void
MoveDir_Up()315*b1cdbd2cSJim Jagielski OuputPage_Environment::MoveDir_Up()
316*b1cdbd2cSJim Jagielski {
317*b1cdbd2cSJim Jagielski if ( pi->nDepth == 1 )
318*b1cdbd2cSJim Jagielski {
319*b1cdbd2cSJim Jagielski MoveDir_2Root();
320*b1cdbd2cSJim Jagielski return;
321*b1cdbd2cSJim Jagielski }
322*b1cdbd2cSJim Jagielski else if ( pi->NspEnv() )
323*b1cdbd2cSJim Jagielski {
324*b1cdbd2cSJim Jagielski pi->NspEnv()->GoUp();
325*b1cdbd2cSJim Jagielski pi->aMyPath.DirChain().PopBack();
326*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile(String ::Null_());
327*b1cdbd2cSJim Jagielski --pi->nDepth;
328*b1cdbd2cSJim Jagielski }
329*b1cdbd2cSJim Jagielski }
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski void
SetFile_Css()332*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Css()
333*b1cdbd2cSJim Jagielski {
334*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( C_sHFN_Css );
335*b1cdbd2cSJim Jagielski }
336*b1cdbd2cSJim Jagielski
337*b1cdbd2cSJim Jagielski void
SetFile_Overview()338*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Overview()
339*b1cdbd2cSJim Jagielski {
340*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( C_sHFN_Overview );
341*b1cdbd2cSJim Jagielski }
342*b1cdbd2cSJim Jagielski
343*b1cdbd2cSJim Jagielski void
SetFile_AllDefs()344*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_AllDefs()
345*b1cdbd2cSJim Jagielski {
346*b1cdbd2cSJim Jagielski // Provisorium
347*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile("def-all.html");
348*b1cdbd2cSJim Jagielski }
349*b1cdbd2cSJim Jagielski
350*b1cdbd2cSJim Jagielski void
SetFile_Index(char i_cLetter)351*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Index( char i_cLetter )
352*b1cdbd2cSJim Jagielski {
353*b1cdbd2cSJim Jagielski csv_assert( 'A' <= i_cLetter AND i_cLetter <= 'Z' OR i_cLetter == '_' );
354*b1cdbd2cSJim Jagielski
355*b1cdbd2cSJim Jagielski static StreamStr sIndexFileName(40);
356*b1cdbd2cSJim Jagielski sIndexFileName.seekp(0);
357*b1cdbd2cSJim Jagielski sIndexFileName << "index-";
358*b1cdbd2cSJim Jagielski if ( i_cLetter == '_' )
359*b1cdbd2cSJim Jagielski {
360*b1cdbd2cSJim Jagielski sIndexFileName << "27";
361*b1cdbd2cSJim Jagielski }
362*b1cdbd2cSJim Jagielski else
363*b1cdbd2cSJim Jagielski {
364*b1cdbd2cSJim Jagielski sIndexFileName << int(i_cLetter -'A' + 1);
365*b1cdbd2cSJim Jagielski }
366*b1cdbd2cSJim Jagielski sIndexFileName << ".html";
367*b1cdbd2cSJim Jagielski
368*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( sIndexFileName.c_str() );
369*b1cdbd2cSJim Jagielski }
370*b1cdbd2cSJim Jagielski
371*b1cdbd2cSJim Jagielski void
SetFile_Help()372*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Help()
373*b1cdbd2cSJim Jagielski {
374*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( C_sHFN_Help );
375*b1cdbd2cSJim Jagielski }
376*b1cdbd2cSJim Jagielski
377*b1cdbd2cSJim Jagielski void
SetFile_CurNamespace()378*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_CurNamespace()
379*b1cdbd2cSJim Jagielski {
380*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
381*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile("index.html");
382*b1cdbd2cSJim Jagielski pi->NspEnv()->pCe = pi->Namespace();
383*b1cdbd2cSJim Jagielski pi->NspEnv()->eType = InNamespaceTree::t_namespace;
384*b1cdbd2cSJim Jagielski }
385*b1cdbd2cSJim Jagielski
386*b1cdbd2cSJim Jagielski void
SetFile_Class(const ary::cpp::Class & i_rClass)387*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Class( const ary::cpp::Class & i_rClass )
388*b1cdbd2cSJim Jagielski {
389*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
390*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( ClassFileName(i_rClass.LocalName()) );
391*b1cdbd2cSJim Jagielski pi->NspEnv()->pCe = &i_rClass;
392*b1cdbd2cSJim Jagielski pi->NspEnv()->eType = InNamespaceTree::t_type;
393*b1cdbd2cSJim Jagielski }
394*b1cdbd2cSJim Jagielski
395*b1cdbd2cSJim Jagielski void
SetFile_Enum(const ary::cpp::Enum & i_rEnum)396*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Enum( const ary::cpp::Enum & i_rEnum )
397*b1cdbd2cSJim Jagielski {
398*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
399*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( EnumFileName(i_rEnum.LocalName()) );
400*b1cdbd2cSJim Jagielski pi->NspEnv()->pCe = &i_rEnum;
401*b1cdbd2cSJim Jagielski pi->NspEnv()->eType = InNamespaceTree::t_type;
402*b1cdbd2cSJim Jagielski }
403*b1cdbd2cSJim Jagielski
404*b1cdbd2cSJim Jagielski void
SetFile_Typedef(const ary::cpp::Typedef & i_rTypedef)405*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Typedef( const ary::cpp::Typedef & i_rTypedef )
406*b1cdbd2cSJim Jagielski {
407*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
408*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( TypedefFileName(i_rTypedef.LocalName()) );
409*b1cdbd2cSJim Jagielski pi->NspEnv()->pCe = &i_rTypedef;
410*b1cdbd2cSJim Jagielski pi->NspEnv()->eType = InNamespaceTree::t_type;
411*b1cdbd2cSJim Jagielski }
412*b1cdbd2cSJim Jagielski
413*b1cdbd2cSJim Jagielski void
SetFile_Operations(const ary::loc::File * i_pFile)414*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Operations( const ary::loc::File * i_pFile )
415*b1cdbd2cSJim Jagielski {
416*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
417*b1cdbd2cSJim Jagielski if ( CurClass() != 0 )
418*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( "o.html" );
419*b1cdbd2cSJim Jagielski else
420*b1cdbd2cSJim Jagielski {
421*b1cdbd2cSJim Jagielski csv_assert( i_pFile != 0 );
422*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( HtmlFileName("o-", i_pFile->LocalName()) );
423*b1cdbd2cSJim Jagielski }
424*b1cdbd2cSJim Jagielski pi->NspEnv()->pCe = 0;
425*b1cdbd2cSJim Jagielski pi->NspEnv()->eType = InNamespaceTree::t_operations;
426*b1cdbd2cSJim Jagielski }
427*b1cdbd2cSJim Jagielski
428*b1cdbd2cSJim Jagielski void
SetFile_Data(const ary::loc::File * i_pFile)429*b1cdbd2cSJim Jagielski OuputPage_Environment::SetFile_Data( const ary::loc::File * i_pFile )
430*b1cdbd2cSJim Jagielski {
431*b1cdbd2cSJim Jagielski csv_assert( pi->NspEnv() );
432*b1cdbd2cSJim Jagielski if ( CurClass() != 0 )
433*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( "d.html" );
434*b1cdbd2cSJim Jagielski else
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski csv_assert( i_pFile != 0 );
437*b1cdbd2cSJim Jagielski pi->aMyPath.SetFile( HtmlFileName("d-", i_pFile->LocalName()) );
438*b1cdbd2cSJim Jagielski }
439*b1cdbd2cSJim Jagielski pi->NspEnv()->pCe = 0;
440*b1cdbd2cSJim Jagielski pi->NspEnv()->eType = InNamespaceTree::t_data;
441*b1cdbd2cSJim Jagielski }
442*b1cdbd2cSJim Jagielski
443*b1cdbd2cSJim Jagielski const ary::cpp::Namespace *
CurNamespace() const444*b1cdbd2cSJim Jagielski OuputPage_Environment::CurNamespace() const
445*b1cdbd2cSJim Jagielski {
446*b1cdbd2cSJim Jagielski return pi->Namespace();
447*b1cdbd2cSJim Jagielski }
448*b1cdbd2cSJim Jagielski
449*b1cdbd2cSJim Jagielski const ary::cpp::Class *
CurClass() const450*b1cdbd2cSJim Jagielski OuputPage_Environment::CurClass() const
451*b1cdbd2cSJim Jagielski {
452*b1cdbd2cSJim Jagielski return pi->Class();
453*b1cdbd2cSJim Jagielski }
454*b1cdbd2cSJim Jagielski
455*b1cdbd2cSJim Jagielski const csv::ploc::Path &
CurPath() const456*b1cdbd2cSJim Jagielski OuputPage_Environment::CurPath() const
457*b1cdbd2cSJim Jagielski {
458*b1cdbd2cSJim Jagielski return pi->aMyPath;
459*b1cdbd2cSJim Jagielski }
460*b1cdbd2cSJim Jagielski
461*b1cdbd2cSJim Jagielski const ary::cpp::Gate &
Gate() const462*b1cdbd2cSJim Jagielski OuputPage_Environment::Gate() const
463*b1cdbd2cSJim Jagielski {
464*b1cdbd2cSJim Jagielski return *pi->pGate;
465*b1cdbd2cSJim Jagielski }
466*b1cdbd2cSJim Jagielski
467*b1cdbd2cSJim Jagielski const display::CorporateFrame &
Layout() const468*b1cdbd2cSJim Jagielski OuputPage_Environment::Layout() const
469*b1cdbd2cSJim Jagielski {
470*b1cdbd2cSJim Jagielski return *pi->pLayout;
471*b1cdbd2cSJim Jagielski }
472*b1cdbd2cSJim Jagielski
473*b1cdbd2cSJim Jagielski uintt
Depth() const474*b1cdbd2cSJim Jagielski OuputPage_Environment::Depth() const
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski return static_cast<uintt>(pi->nDepth);
477*b1cdbd2cSJim Jagielski }
478*b1cdbd2cSJim Jagielski
479*b1cdbd2cSJim Jagielski const String &
RepositoryTitle() const480*b1cdbd2cSJim Jagielski OuputPage_Environment::RepositoryTitle() const
481*b1cdbd2cSJim Jagielski {
482*b1cdbd2cSJim Jagielski return Gate().RepositoryTitle();
483*b1cdbd2cSJim Jagielski }
484