1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir #include <precomp.h> 29*cdf0e10cSrcweir #include "cmd_run.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES 33*cdf0e10cSrcweir #include <cosv/file.hxx> 34*cdf0e10cSrcweir #include <cosv/x.hxx> 35*cdf0e10cSrcweir #include <ary/ary.hxx> 36*cdf0e10cSrcweir #include <ary/cpp/c_gate.hxx> 37*cdf0e10cSrcweir #include <ary/idl/i_ce.hxx> 38*cdf0e10cSrcweir #include <ary/idl/i_gate.hxx> 39*cdf0e10cSrcweir #include <ary/idl/i_module.hxx> 40*cdf0e10cSrcweir #include <ary/idl/ip_ce.hxx> 41*cdf0e10cSrcweir #include <autodoc/filecoli.hxx> 42*cdf0e10cSrcweir #include <autodoc/parsing.hxx> 43*cdf0e10cSrcweir #include <autodoc/prs_code.hxx> 44*cdf0e10cSrcweir #include <autodoc/prs_docu.hxx> 45*cdf0e10cSrcweir #include <parser/unoidl.hxx> 46*cdf0e10cSrcweir #include <adc_cl.hxx> 47*cdf0e10cSrcweir #include "adc_cmd_parse.hxx" 48*cdf0e10cSrcweir #include "adc_cmds.hxx" 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir namespace autodoc 51*cdf0e10cSrcweir { 52*cdf0e10cSrcweir namespace command 53*cdf0e10cSrcweir { 54*cdf0e10cSrcweir namespace run 55*cdf0e10cSrcweir { 56*cdf0e10cSrcweir 57*cdf0e10cSrcweir Parser::Parser( const Parse & i_command ) 58*cdf0e10cSrcweir : rCommand(i_command), 59*cdf0e10cSrcweir pCppParser(), 60*cdf0e10cSrcweir pCppDocuInterpreter(), 61*cdf0e10cSrcweir pIdlParser() 62*cdf0e10cSrcweir { 63*cdf0e10cSrcweir } 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir Parser::~Parser() 66*cdf0e10cSrcweir { 67*cdf0e10cSrcweir } 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir bool 70*cdf0e10cSrcweir Parser::Perform() 71*cdf0e10cSrcweir { 72*cdf0e10cSrcweir Cout() << "Parsing the repository " 73*cdf0e10cSrcweir << rCommand.ReposyName() 74*cdf0e10cSrcweir << " ..." 75*cdf0e10cSrcweir << Endl(); 76*cdf0e10cSrcweir try 77*cdf0e10cSrcweir { 78*cdf0e10cSrcweir ::ary::Repository & 79*cdf0e10cSrcweir rAry = CommandLine::Get_().TheRepository(); 80*cdf0e10cSrcweir rAry.Set_Title(rCommand.ReposyName()); 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir Dyn< FileCollector_Ifc > 83*cdf0e10cSrcweir pFiles( ParseToolsFactory().Create_FileCollector(6000) ); 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir bool bIDL = false; 86*cdf0e10cSrcweir bool bCpp = false; 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir command::Parse::ProjectIterator 89*cdf0e10cSrcweir itEnd = rCommand.ProjectsEnd(); 90*cdf0e10cSrcweir for ( command::Parse::ProjectIterator it = rCommand.ProjectsBegin(); 91*cdf0e10cSrcweir it != itEnd; 92*cdf0e10cSrcweir ++it ) 93*cdf0e10cSrcweir { 94*cdf0e10cSrcweir uintt nCount = GatherFiles( *pFiles, *(*it) ); 95*cdf0e10cSrcweir Cout() << nCount 96*cdf0e10cSrcweir << " files found to parse in project " 97*cdf0e10cSrcweir << (*it)->Name() 98*cdf0e10cSrcweir << "." 99*cdf0e10cSrcweir << Endl(); 100*cdf0e10cSrcweir 101*cdf0e10cSrcweir switch ( (*it)->Language().eLanguage ) 102*cdf0e10cSrcweir { 103*cdf0e10cSrcweir case command::S_LanguageInfo::idl: 104*cdf0e10cSrcweir { 105*cdf0e10cSrcweir Get_IdlParser().Run(*pFiles); 106*cdf0e10cSrcweir bIDL = true; 107*cdf0e10cSrcweir } break; 108*cdf0e10cSrcweir case command::S_LanguageInfo::cpp: 109*cdf0e10cSrcweir { 110*cdf0e10cSrcweir Get_CppParser().Run( *pFiles ); 111*cdf0e10cSrcweir bCpp = true; 112*cdf0e10cSrcweir } break; 113*cdf0e10cSrcweir default: 114*cdf0e10cSrcweir Cerr() << "Project in yet unimplemented language skipped." 115*cdf0e10cSrcweir << Endl(); 116*cdf0e10cSrcweir } 117*cdf0e10cSrcweir } // end for 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir if (bCpp) 120*cdf0e10cSrcweir { 121*cdf0e10cSrcweir rAry.Gate_Cpp().Calculate_AllSecondaryInformation(); 122*cdf0e10cSrcweir } 123*cdf0e10cSrcweir if (bIDL) 124*cdf0e10cSrcweir { 125*cdf0e10cSrcweir rAry.Gate_Idl().Calculate_AllSecondaryInformation( 126*cdf0e10cSrcweir rCommand.DevelopersManual_RefFilePath() ); 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir // ::ary::idl::SecondariesPilot & 129*cdf0e10cSrcweir // rIdl2sPilot = rAry.Gate_Idl().Secondaries(); 130*cdf0e10cSrcweir // 131*cdf0e10cSrcweir // rIdl2sPilot.CheckAllInterfaceBases( rAry.Gate_Idl() ); 132*cdf0e10cSrcweir // rIdl2sPilot.Connect_Types2Ces(); 133*cdf0e10cSrcweir // rIdl2sPilot.Gather_CrossReferences(); 134*cdf0e10cSrcweir // 135*cdf0e10cSrcweir // if (NOT rCommand.DevelopersManual_RefFilePath().empty()) 136*cdf0e10cSrcweir // { 137*cdf0e10cSrcweir // csv::File 138*cdf0e10cSrcweir // aFile(rCommand.DevelopersManual_RefFilePath(), csv::CFM_READ); 139*cdf0e10cSrcweir // if ( aFile.open() ) 140*cdf0e10cSrcweir // { 141*cdf0e10cSrcweir // rIdl2sPilot.Read_Links2DevManual(aFile); 142*cdf0e10cSrcweir // aFile.close(); 143*cdf0e10cSrcweir // } 144*cdf0e10cSrcweir // } 145*cdf0e10cSrcweir } // endif (bIDL) 146*cdf0e10cSrcweir 147*cdf0e10cSrcweir return true; 148*cdf0e10cSrcweir 149*cdf0e10cSrcweir } // end try 150*cdf0e10cSrcweir catch (csv::Exception & xx) 151*cdf0e10cSrcweir { 152*cdf0e10cSrcweir xx.GetInfo(Cerr()); 153*cdf0e10cSrcweir Cerr() << " program will exit." << Endl(); 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir return false; 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir } 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir CodeParser_Ifc & 160*cdf0e10cSrcweir Parser::Get_CppParser() 161*cdf0e10cSrcweir { 162*cdf0e10cSrcweir if ( NOT pCppParser ) 163*cdf0e10cSrcweir Create_CppParser(); 164*cdf0e10cSrcweir return *pCppParser; 165*cdf0e10cSrcweir } 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir IdlParser & 168*cdf0e10cSrcweir Parser::Get_IdlParser() 169*cdf0e10cSrcweir { 170*cdf0e10cSrcweir if ( NOT pIdlParser ) 171*cdf0e10cSrcweir Create_IdlParser(); 172*cdf0e10cSrcweir return *pIdlParser; 173*cdf0e10cSrcweir } 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir void 176*cdf0e10cSrcweir Parser::Create_CppParser() 177*cdf0e10cSrcweir { 178*cdf0e10cSrcweir pCppParser = ParseToolsFactory().Create_Parser_Cplusplus(); 179*cdf0e10cSrcweir pCppDocuInterpreter = ParseToolsFactory().Create_DocuParser_AutodocStyle(); 180*cdf0e10cSrcweir 181*cdf0e10cSrcweir pCppParser->Setup( CommandLine::Get_().TheRepository(), 182*cdf0e10cSrcweir *pCppDocuInterpreter ); 183*cdf0e10cSrcweir } 184*cdf0e10cSrcweir 185*cdf0e10cSrcweir void 186*cdf0e10cSrcweir Parser::Create_IdlParser() 187*cdf0e10cSrcweir { 188*cdf0e10cSrcweir pIdlParser = new IdlParser(CommandLine::Get_().TheRepository()); 189*cdf0e10cSrcweir } 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir const ParseToolsFactory_Ifc & 192*cdf0e10cSrcweir Parser::ParseToolsFactory() 193*cdf0e10cSrcweir { 194*cdf0e10cSrcweir return ParseToolsFactory_Ifc::GetIt_(); 195*cdf0e10cSrcweir } 196*cdf0e10cSrcweir 197*cdf0e10cSrcweir uintt 198*cdf0e10cSrcweir Parser::GatherFiles( FileCollector_Ifc & o_rFiles, 199*cdf0e10cSrcweir const S_ProjectData & i_rProject ) 200*cdf0e10cSrcweir { 201*cdf0e10cSrcweir uintt ret = 0; 202*cdf0e10cSrcweir o_rFiles.EraseAll(); 203*cdf0e10cSrcweir 204*cdf0e10cSrcweir typedef StringVector StrVector; 205*cdf0e10cSrcweir typedef StrVector::const_iterator StrIterator; 206*cdf0e10cSrcweir const S_Sources & 207*cdf0e10cSrcweir rSources = i_rProject.Sources(); 208*cdf0e10cSrcweir const StrVector & 209*cdf0e10cSrcweir rExtensions = i_rProject.Language().aExtensions; 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir StrIterator it; 212*cdf0e10cSrcweir StrIterator itTreesEnd = rSources.aTrees.end(); 213*cdf0e10cSrcweir StrIterator itDirsEnd = rSources.aDirectories.end(); 214*cdf0e10cSrcweir StrIterator itFilesEnd = rSources.aFiles.end(); 215*cdf0e10cSrcweir StrIterator itExt; 216*cdf0e10cSrcweir StrIterator itExtEnd = rExtensions.end(); 217*cdf0e10cSrcweir 218*cdf0e10cSrcweir csv::StreamStr aDir(500); 219*cdf0e10cSrcweir i_rProject.RootDirectory().Get( aDir ); 220*cdf0e10cSrcweir 221*cdf0e10cSrcweir uintt nProjectDir_AddPosition = 222*cdf0e10cSrcweir ( strcmp(aDir.c_str(),".\\") == 0 OR strcmp(aDir.c_str(),"./") == 0 ) 223*cdf0e10cSrcweir ? 0 224*cdf0e10cSrcweir : uintt( aDir.tellp() ); 225*cdf0e10cSrcweir 226*cdf0e10cSrcweir for ( it = rSources.aDirectories.begin(); 227*cdf0e10cSrcweir it != itDirsEnd; 228*cdf0e10cSrcweir ++it ) 229*cdf0e10cSrcweir { 230*cdf0e10cSrcweir aDir.seekp( nProjectDir_AddPosition ); 231*cdf0e10cSrcweir aDir << *it; 232*cdf0e10cSrcweir 233*cdf0e10cSrcweir for ( itExt = rExtensions.begin(); 234*cdf0e10cSrcweir itExt != itExtEnd; 235*cdf0e10cSrcweir ++itExt ) 236*cdf0e10cSrcweir { 237*cdf0e10cSrcweir ret += o_rFiles.AddFilesFrom( aDir.c_str(), 238*cdf0e10cSrcweir *itExt, 239*cdf0e10cSrcweir FileCollector_Ifc::flat ); 240*cdf0e10cSrcweir } // end for itExt 241*cdf0e10cSrcweir } // end for it 242*cdf0e10cSrcweir for ( it = rSources.aTrees.begin(); 243*cdf0e10cSrcweir it != itTreesEnd; 244*cdf0e10cSrcweir ++it ) 245*cdf0e10cSrcweir { 246*cdf0e10cSrcweir aDir.seekp( nProjectDir_AddPosition ); 247*cdf0e10cSrcweir aDir << *it; 248*cdf0e10cSrcweir 249*cdf0e10cSrcweir for ( itExt = rExtensions.begin(); 250*cdf0e10cSrcweir itExt != itExtEnd; 251*cdf0e10cSrcweir ++itExt ) 252*cdf0e10cSrcweir { 253*cdf0e10cSrcweir ret += o_rFiles.AddFilesFrom( aDir.c_str(), 254*cdf0e10cSrcweir *itExt, 255*cdf0e10cSrcweir FileCollector_Ifc::recursive ); 256*cdf0e10cSrcweir } // end for itExt 257*cdf0e10cSrcweir } // end for it 258*cdf0e10cSrcweir for ( it = rSources.aFiles.begin(); 259*cdf0e10cSrcweir it != itFilesEnd; 260*cdf0e10cSrcweir ++it ) 261*cdf0e10cSrcweir { 262*cdf0e10cSrcweir aDir.seekp( nProjectDir_AddPosition ); 263*cdf0e10cSrcweir aDir << *it; 264*cdf0e10cSrcweir 265*cdf0e10cSrcweir o_rFiles.AddFile( aDir.c_str() ); 266*cdf0e10cSrcweir } // end for it 267*cdf0e10cSrcweir ret += rSources.aFiles.size(); 268*cdf0e10cSrcweir 269*cdf0e10cSrcweir return ret; 270*cdf0e10cSrcweir } 271*cdf0e10cSrcweir 272*cdf0e10cSrcweir 273*cdf0e10cSrcweir } // namespace run 274*cdf0e10cSrcweir } // namespace command 275*cdf0e10cSrcweir 276*cdf0e10cSrcweir 277*cdf0e10cSrcweir #if 0 278*cdf0e10cSrcweir inline const ParseToolsFactory_Ifc & 279*cdf0e10cSrcweir CommandRunner::ParseToolsFactory() 280*cdf0e10cSrcweir { return ParseToolsFactory_Ifc::GetIt_(); } 281*cdf0e10cSrcweir 282*cdf0e10cSrcweir 283*cdf0e10cSrcweir inline const command::S_LanguageInfo & 284*cdf0e10cSrcweir CommandRunner::Get_ProjectLanguage( const command::Parse & i_rCommand, 285*cdf0e10cSrcweir const command::S_ProjectData & i_rProject ) 286*cdf0e10cSrcweir { 287*cdf0e10cSrcweir if ( i_rProject.pLanguage ) 288*cdf0e10cSrcweir return *i_rProject.pLanguage; 289*cdf0e10cSrcweir return *i_rCommand.GlobalLanguageInfo(); 290*cdf0e10cSrcweir } 291*cdf0e10cSrcweir 292*cdf0e10cSrcweir inline bool 293*cdf0e10cSrcweir CommandRunner::HasParsedCpp() const 294*cdf0e10cSrcweir { return pCppParser; } 295*cdf0e10cSrcweir inline bool 296*cdf0e10cSrcweir CommandRunner::HasParsedIdl() const 297*cdf0e10cSrcweir { return pIdlParser; } 298*cdf0e10cSrcweir 299*cdf0e10cSrcweir 300*cdf0e10cSrcweir 301*cdf0e10cSrcweir 302*cdf0e10cSrcweir 303*cdf0e10cSrcweir CommandRunner::CommandRunner() 304*cdf0e10cSrcweir : pCommandLine(0), 305*cdf0e10cSrcweir pReposy(0), 306*cdf0e10cSrcweir pNewReposy(0), 307*cdf0e10cSrcweir nResultCode(0) 308*cdf0e10cSrcweir { 309*cdf0e10cSrcweir Cout() << "\nAutodoc version 2.2.1" 310*cdf0e10cSrcweir << "\n-------------------" 311*cdf0e10cSrcweir << "\n" << Endl(); 312*cdf0e10cSrcweir } 313*cdf0e10cSrcweir 314*cdf0e10cSrcweir CommandRunner::~CommandRunner() 315*cdf0e10cSrcweir { 316*cdf0e10cSrcweir ary::Repository::Destroy_(); 317*cdf0e10cSrcweir Cout() << "\n" << Endl(); 318*cdf0e10cSrcweir } 319*cdf0e10cSrcweir 320*cdf0e10cSrcweir void 321*cdf0e10cSrcweir CommandRunner::Run( const CommandLine & i_rCL ) 322*cdf0e10cSrcweir { 323*cdf0e10cSrcweir ary::Repository::Destroy_(); 324*cdf0e10cSrcweir // ary::Repository::Destroy_(); 325*cdf0e10cSrcweir pReposy = 0; 326*cdf0e10cSrcweir pNewReposy = 0; 327*cdf0e10cSrcweir nResultCode = 0; 328*cdf0e10cSrcweir pCommandLine = &i_rCL; 329*cdf0e10cSrcweir 330*cdf0e10cSrcweir pCommandLine->Run(); 331*cdf0e10cSrcweir } 332*cdf0e10cSrcweir 333*cdf0e10cSrcweir void 334*cdf0e10cSrcweir CommandRunner::Parse() 335*cdf0e10cSrcweir { 336*cdf0e10cSrcweir try 337*cdf0e10cSrcweir { 338*cdf0e10cSrcweir 339*cdf0e10cSrcweir csv_assert( pCommandLine->Cmd_Parse() != 0 ); 340*cdf0e10cSrcweir const command::Parse & 341*cdf0e10cSrcweir rCmd = *pCommandLine->Cmd_Parse(); 342*cdf0e10cSrcweir 343*cdf0e10cSrcweir Cout() << "Parsing the repository " 344*cdf0e10cSrcweir << rCmd.ReposyName() 345*cdf0e10cSrcweir << " ..." 346*cdf0e10cSrcweir << Endl(); 347*cdf0e10cSrcweir 348*cdf0e10cSrcweir if ( pReposy == 0 ) 349*cdf0e10cSrcweir pReposy = & ary::Repository::Create_( rCmd.ReposyName(), 0 ); 350*cdf0e10cSrcweir if ( pNewReposy == 0 ) 351*cdf0e10cSrcweir pNewReposy = & ary::Repository::Create_( rCmd.ReposyName() ); 352*cdf0e10cSrcweir 353*cdf0e10cSrcweir Dyn< FileCollector_Ifc > pFiles; 354*cdf0e10cSrcweir pFiles = ParseToolsFactory().Create_FileCollector(6000); 355*cdf0e10cSrcweir 356*cdf0e10cSrcweir bool bCpp = false; 357*cdf0e10cSrcweir bool bIDL = false; 358*cdf0e10cSrcweir 359*cdf0e10cSrcweir command::Parse::ProjectIterator itEnd = rCmd.ProjectsEnd(); 360*cdf0e10cSrcweir for ( command::Parse::ProjectIterator it = rCmd.ProjectsBegin(); 361*cdf0e10cSrcweir it != itEnd; 362*cdf0e10cSrcweir ++it ) 363*cdf0e10cSrcweir { 364*cdf0e10cSrcweir 365*cdf0e10cSrcweir uintt nCount = GatherFiles( *pFiles, rCmd, *(*it) ); 366*cdf0e10cSrcweir Cout() << nCount 367*cdf0e10cSrcweir << " files found to parse in project " 368*cdf0e10cSrcweir << (*it)->Name() 369*cdf0e10cSrcweir << "." 370*cdf0e10cSrcweir << Endl(); 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir 373*cdf0e10cSrcweir switch ( Get_ProjectLanguage(rCmd, *(*it)).eLanguage ) 374*cdf0e10cSrcweir { 375*cdf0e10cSrcweir case command::S_LanguageInfo::cpp: 376*cdf0e10cSrcweir { 377*cdf0e10cSrcweir Get_CppParser().Run( (*it)->Name(), 378*cdf0e10cSrcweir (*it)->RootDirectory(), 379*cdf0e10cSrcweir *pFiles ); 380*cdf0e10cSrcweir bCpp = true; 381*cdf0e10cSrcweir } break; 382*cdf0e10cSrcweir case command::S_LanguageInfo::idl: 383*cdf0e10cSrcweir { 384*cdf0e10cSrcweir Get_IdlParser().Run(*pFiles); 385*cdf0e10cSrcweir bIDL = true; 386*cdf0e10cSrcweir } break; 387*cdf0e10cSrcweir default: 388*cdf0e10cSrcweir Cerr() << "Project in yet unimplemented language skipped." 389*cdf0e10cSrcweir << Endl(); 390*cdf0e10cSrcweir } 391*cdf0e10cSrcweir } // end for 392*cdf0e10cSrcweir 393*cdf0e10cSrcweir if (bCpp) 394*cdf0e10cSrcweir pReposy->RwGate_Cpp().Connect_AllTypes_2_TheirRelated_CodeEntites(); 395*cdf0e10cSrcweir if (bIDL) 396*cdf0e10cSrcweir { 397*cdf0e10cSrcweir pNewReposy->Gate_Idl().Secondaries().Connect_Types2Ces(); 398*cdf0e10cSrcweir pNewReposy->Gate_Idl().Secondaries().Gather_CrossReferences(); 399*cdf0e10cSrcweir } 400*cdf0e10cSrcweir 401*cdf0e10cSrcweir } // end try 402*cdf0e10cSrcweir catch (csv::Exception & xx) 403*cdf0e10cSrcweir { 404*cdf0e10cSrcweir xx.GetInfo(Cerr()); 405*cdf0e10cSrcweir Cerr() << " program will exit." << Endl(); 406*cdf0e10cSrcweir nResultCode = 1; 407*cdf0e10cSrcweir } 408*cdf0e10cSrcweir catch (...) 409*cdf0e10cSrcweir { 410*cdf0e10cSrcweir Cerr() << "Unknown exception - program will exit." << Endl(); 411*cdf0e10cSrcweir nResultCode = 1; 412*cdf0e10cSrcweir } 413*cdf0e10cSrcweir } 414*cdf0e10cSrcweir 415*cdf0e10cSrcweir void 416*cdf0e10cSrcweir CommandRunner::Load() 417*cdf0e10cSrcweir { 418*cdf0e10cSrcweir Cout() << "This would load the repository from the directory " 419*cdf0e10cSrcweir << pCommandLine->Cmd_Load()->ReposyDir() 420*cdf0e10cSrcweir << "." 421*cdf0e10cSrcweir << Endl(); 422*cdf0e10cSrcweir } 423*cdf0e10cSrcweir 424*cdf0e10cSrcweir 425*cdf0e10cSrcweir void 426*cdf0e10cSrcweir CommandRunner::Save() 427*cdf0e10cSrcweir { 428*cdf0e10cSrcweir Cout() << "This would save the repository into the directory " 429*cdf0e10cSrcweir << pCommandLine->Cmd_Save()->ReposyDir() 430*cdf0e10cSrcweir << "." 431*cdf0e10cSrcweir << Endl(); 432*cdf0e10cSrcweir } 433*cdf0e10cSrcweir 434*cdf0e10cSrcweir 435*cdf0e10cSrcweir void 436*cdf0e10cSrcweir CommandRunner::CreateHtml() 437*cdf0e10cSrcweir { 438*cdf0e10cSrcweir Cout() << "Creating HTML-output into the directory " 439*cdf0e10cSrcweir << pCommandLine->Cmd_CreateHtml()->OutputDir() 440*cdf0e10cSrcweir << "." 441*cdf0e10cSrcweir << Endl(); 442*cdf0e10cSrcweir 443*cdf0e10cSrcweir if ( HasParsedCpp() ) 444*cdf0e10cSrcweir CreateHtml_NewStyle(); 445*cdf0e10cSrcweir if ( HasParsedIdl() ) 446*cdf0e10cSrcweir CreateHtml_OldIdlStyle(); 447*cdf0e10cSrcweir } 448*cdf0e10cSrcweir 449*cdf0e10cSrcweir 450*cdf0e10cSrcweir 451*cdf0e10cSrcweir void 452*cdf0e10cSrcweir CommandRunner::CreateXml() 453*cdf0e10cSrcweir { 454*cdf0e10cSrcweir Cout() << "This would create the XML-output into the directory " 455*cdf0e10cSrcweir << pCommandLine->Cmd_CreateXml()->OutputDir() 456*cdf0e10cSrcweir << "." 457*cdf0e10cSrcweir << Endl(); 458*cdf0e10cSrcweir } 459*cdf0e10cSrcweir 460*cdf0e10cSrcweir CodeParser_Ifc & 461*cdf0e10cSrcweir CommandRunner::Get_CppParser() 462*cdf0e10cSrcweir { 463*cdf0e10cSrcweir if ( NOT pCppParser ) 464*cdf0e10cSrcweir Create_CppParser(); 465*cdf0e10cSrcweir return *pCppParser; 466*cdf0e10cSrcweir } 467*cdf0e10cSrcweir 468*cdf0e10cSrcweir IdlParser & 469*cdf0e10cSrcweir CommandRunner::Get_IdlParser() 470*cdf0e10cSrcweir { 471*cdf0e10cSrcweir if ( NOT pIdlParser ) 472*cdf0e10cSrcweir Create_IdlParser(); 473*cdf0e10cSrcweir return *pIdlParser; 474*cdf0e10cSrcweir } 475*cdf0e10cSrcweir 476*cdf0e10cSrcweir void 477*cdf0e10cSrcweir CommandRunner::Create_CppParser() 478*cdf0e10cSrcweir { 479*cdf0e10cSrcweir pCppParser = ParseToolsFactory().Create_Parser_Cplusplus(); 480*cdf0e10cSrcweir pCppDocuInterpreter = ParseToolsFactory().Create_DocuParser_AutodocStyle(); 481*cdf0e10cSrcweir 482*cdf0e10cSrcweir pCppParser->Setup( *pReposy, 483*cdf0e10cSrcweir *pCppDocuInterpreter ); 484*cdf0e10cSrcweir } 485*cdf0e10cSrcweir 486*cdf0e10cSrcweir void 487*cdf0e10cSrcweir CommandRunner::Create_IdlParser() 488*cdf0e10cSrcweir { 489*cdf0e10cSrcweir pIdlParser = new IdlParser(*pNewReposy); 490*cdf0e10cSrcweir } 491*cdf0e10cSrcweir 492*cdf0e10cSrcweir uintt 493*cdf0e10cSrcweir CommandRunner::GatherFiles( FileCollector_Ifc & o_rFiles, 494*cdf0e10cSrcweir const command::Parse & i_rCommand, 495*cdf0e10cSrcweir const command::S_ProjectData & i_rProject ) 496*cdf0e10cSrcweir { 497*cdf0e10cSrcweir uintt ret = 0; 498*cdf0e10cSrcweir o_rFiles.EraseAll(); 499*cdf0e10cSrcweir 500*cdf0e10cSrcweir typedef StringVector StrVector; 501*cdf0e10cSrcweir typedef StrVector::const_iterator StrIterator; 502*cdf0e10cSrcweir const command::S_Sources & 503*cdf0e10cSrcweir rSources = i_rProject.aFiles; 504*cdf0e10cSrcweir const StrVector & 505*cdf0e10cSrcweir rExtensions = Get_ProjectLanguage(i_rCommand,i_rProject).aExtensions; 506*cdf0e10cSrcweir 507*cdf0e10cSrcweir StrIterator it; 508*cdf0e10cSrcweir StrIterator itDirsEnd = rSources.aDirectories.end(); 509*cdf0e10cSrcweir StrIterator itTreesEnd = i_rProject.aFiles.aTrees.end(); 510*cdf0e10cSrcweir StrIterator itFilesEnd = i_rProject.aFiles.aFiles.end(); 511*cdf0e10cSrcweir StrIterator itExt; 512*cdf0e10cSrcweir StrIterator itExtEnd = rExtensions.end(); 513*cdf0e10cSrcweir 514*cdf0e10cSrcweir csv::StreamStr aDir(500); 515*cdf0e10cSrcweir i_rProject.aRootDirectory.Get( aDir ); 516*cdf0e10cSrcweir 517*cdf0e10cSrcweir uintt nProjectDir_AddPosition = 518*cdf0e10cSrcweir ( strcmp(aDir.c_str(),".\\") == 0 OR strcmp(aDir.c_str(),"./") == 0 ) 519*cdf0e10cSrcweir ? 0 520*cdf0e10cSrcweir : uintt( aDir.tellp() ); 521*cdf0e10cSrcweir 522*cdf0e10cSrcweir for ( it = rSources.aDirectories.begin(); 523*cdf0e10cSrcweir it != itDirsEnd; 524*cdf0e10cSrcweir ++it ) 525*cdf0e10cSrcweir { 526*cdf0e10cSrcweir aDir.seekp( nProjectDir_AddPosition ); 527*cdf0e10cSrcweir aDir << *it; 528*cdf0e10cSrcweir 529*cdf0e10cSrcweir for ( itExt = rExtensions.begin(); 530*cdf0e10cSrcweir itExt != itExtEnd; 531*cdf0e10cSrcweir ++itExt ) 532*cdf0e10cSrcweir { 533*cdf0e10cSrcweir ret += o_rFiles.AddFilesFrom( aDir.c_str(), 534*cdf0e10cSrcweir *itExt, 535*cdf0e10cSrcweir FileCollector_Ifc::flat ); 536*cdf0e10cSrcweir } // end for itExt 537*cdf0e10cSrcweir } // end for it 538*cdf0e10cSrcweir for ( it = rSources.aTrees.begin(); 539*cdf0e10cSrcweir it != itTreesEnd; 540*cdf0e10cSrcweir ++it ) 541*cdf0e10cSrcweir { 542*cdf0e10cSrcweir aDir.seekp( nProjectDir_AddPosition ); 543*cdf0e10cSrcweir aDir << *it; 544*cdf0e10cSrcweir 545*cdf0e10cSrcweir for ( itExt = rExtensions.begin(); 546*cdf0e10cSrcweir itExt != itExtEnd; 547*cdf0e10cSrcweir ++itExt ) 548*cdf0e10cSrcweir { 549*cdf0e10cSrcweir ret += o_rFiles.AddFilesFrom( aDir.c_str(), 550*cdf0e10cSrcweir *itExt, 551*cdf0e10cSrcweir FileCollector_Ifc::recursive ); 552*cdf0e10cSrcweir } // end for itExt 553*cdf0e10cSrcweir } // end for it 554*cdf0e10cSrcweir for ( it = rSources.aFiles.begin(); 555*cdf0e10cSrcweir it != itFilesEnd; 556*cdf0e10cSrcweir ++it ) 557*cdf0e10cSrcweir { 558*cdf0e10cSrcweir aDir.seekp( nProjectDir_AddPosition ); 559*cdf0e10cSrcweir aDir << *it; 560*cdf0e10cSrcweir 561*cdf0e10cSrcweir o_rFiles.AddFile( aDir.c_str() ); 562*cdf0e10cSrcweir } // end for it 563*cdf0e10cSrcweir ret += rSources.aFiles.size(); 564*cdf0e10cSrcweir 565*cdf0e10cSrcweir return ret; 566*cdf0e10cSrcweir } 567*cdf0e10cSrcweir 568*cdf0e10cSrcweir void 569*cdf0e10cSrcweir CommandRunner::CreateHtml_NewStyle() 570*cdf0e10cSrcweir { 571*cdf0e10cSrcweir const ary::cpp::DisplayGate & 572*cdf0e10cSrcweir rGate = pReposy->DisplayGate_Cpp(); 573*cdf0e10cSrcweir 574*cdf0e10cSrcweir Dyn< autodoc::HtmlDisplay_UdkStd > pHtmlDisplay; 575*cdf0e10cSrcweir pHtmlDisplay = DisplayToolsFactory_Ifc::GetIt_() 576*cdf0e10cSrcweir .Create_HtmlDisplay_UdkStd(); 577*cdf0e10cSrcweir 578*cdf0e10cSrcweir pHtmlDisplay->Run( pCommandLine->Cmd_CreateHtml()->OutputDir(), 579*cdf0e10cSrcweir rGate, 580*cdf0e10cSrcweir DisplayToolsFactory_Ifc::GetIt_().Create_StdFrame() ); 581*cdf0e10cSrcweir } 582*cdf0e10cSrcweir 583*cdf0e10cSrcweir void 584*cdf0e10cSrcweir CommandRunner::CreateHtml_OldIdlStyle() 585*cdf0e10cSrcweir { 586*cdf0e10cSrcweir ary::idl::Gate & 587*cdf0e10cSrcweir rAryGate = pNewReposy->Gate_Idl(); 588*cdf0e10cSrcweir 589*cdf0e10cSrcweir // Read DevManualLinkFile: 590*cdf0e10cSrcweir // KORR_FUTURE 591*cdf0e10cSrcweir csv::File 592*cdf0e10cSrcweir aFile("devmanref.txt", csv::CFM_READ); 593*cdf0e10cSrcweir if ( aFile.open() ) 594*cdf0e10cSrcweir { 595*cdf0e10cSrcweir rAryGate.Secondaries().Read_Links2DevManual(aFile); 596*cdf0e10cSrcweir aFile.close(); 597*cdf0e10cSrcweir } 598*cdf0e10cSrcweir 599*cdf0e10cSrcweir // New Style Output 600*cdf0e10cSrcweir Dyn<autodoc::HtmlDisplay_Idl_Ifc> pNewDisplay; 601*cdf0e10cSrcweir pNewDisplay = DisplayToolsFactory_Ifc::GetIt_() 602*cdf0e10cSrcweir .Create_HtmlDisplay_Idl(); 603*cdf0e10cSrcweir pNewDisplay->Run( pCommandLine->Cmd_CreateHtml()->OutputDir(), 604*cdf0e10cSrcweir rAryGate, 605*cdf0e10cSrcweir DisplayToolsFactory_Ifc::GetIt_().Create_StdFrame() ); 606*cdf0e10cSrcweir } 607*cdf0e10cSrcweir #endif // 0 608*cdf0e10cSrcweir 609*cdf0e10cSrcweir } // namespace autodoc 610*cdf0e10cSrcweir 611*cdf0e10cSrcweir 612*cdf0e10cSrcweir 613*cdf0e10cSrcweir 614