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