Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/medical/dna/chem3/src/CommandLineParser.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/extended/medical/dna/chem3/src/CommandLineParser.cc (Version 11.3.0) and /examples/extended/medical/dna/chem3/src/CommandLineParser.cc (Version 10.3.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // This example is provided by the Geant4-DNA      26 // This example is provided by the Geant4-DNA collaboration
 27 // Any report or published results obtained us     27 // Any report or published results obtained using the Geant4-DNA software
 28 // shall cite the following Geant4-DNA collabo     28 // shall cite the following Geant4-DNA collaboration publication:
 29 // Med. Phys. 37 (2010) 4692-4708                  29 // Med. Phys. 37 (2010) 4692-4708
 30 // J. Comput. Phys. 274 (2014) 841-882             30 // J. Comput. Phys. 274 (2014) 841-882
 31 // The Geant4-DNA web site is available at htt     31 // The Geant4-DNA web site is available at http://geant4-dna.org
 32 //                                                 32 //
 33 // Author: Mathieu Karamitros                      33 // Author: Mathieu Karamitros
 34 //                                                 34 //
                                                   >>  35 // $Id$
 35 //                                                 36 //
 36 /// \file CommandLineParser.cc                     37 /// \file CommandLineParser.cc
 37 /// \brief Implementation of the CommandLinePa     38 /// \brief Implementation of the CommandLineParser class
 38                                                    39 
 39 #include "CommandLineParser.hh"                << 
 40                                                << 
 41 #include <iomanip>                                 40 #include <iomanip>
                                                   >>  41 #include "CommandLineParser.hh"
 42                                                    42 
 43 using namespace std;                               43 using namespace std;
 44 using namespace G4DNAPARSER;                       44 using namespace G4DNAPARSER;
 45                                                    45 
 46 CommandLineParser* CommandLineParser::fpInstan     46 CommandLineParser* CommandLineParser::fpInstance(0);
 47 G4String Command::fNoOption = "NoOption";          47 G4String Command::fNoOption = "NoOption";
 48                                                    48 
                                                   >>  49 
 49 //....oooOO0OOooo........oooOO0OOooo........oo     50 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 50                                                    51 
 51 inline bool MATCH(const char* a, const char* b <<  52 inline bool MATCH(const char *a, const char *b)
 52 {                                                  53 {
 53   return strcmp(a, b) == 0;                        54   return strcmp(a, b) == 0;
 54 }                                                  55 }
 55                                                    56 
 56 //....oooOO0OOooo........oooOO0OOooo........oo     57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 57                                                    58 
 58 CommandLineParser::CommandLineParser()             59 CommandLineParser::CommandLineParser()
 59 {                                                  60 {
 60   // G4cout << "############ NEW PARSE #######     61   // G4cout << "############ NEW PARSE ##########" << G4endl;
 61   fpInstance = this;                               62   fpInstance = this;
 62   fOptionsWereSetup = false;                       63   fOptionsWereSetup = false;
 63   fMaxMarkerLength = 0;                            64   fMaxMarkerLength = 0;
 64   fMaxOptionNameLength = 0;                        65   fMaxOptionNameLength = 0;
 65   AddCommand("--help", Command::WithoutOption,     66   AddCommand("--help", Command::WithoutOption, "Print this help");
 66   AddCommand("-h", Command::WithoutOption, "Pr     67   AddCommand("-h", Command::WithoutOption, "Print this help");
 67   AddCommand("&", Command::WithoutOption);         68   AddCommand("&", Command::WithoutOption);
 68                                                    69 
 69   fVerbose = 0;                                    70   fVerbose = 0;
 70 }                                                  71 }
 71                                                    72 
 72 //....oooOO0OOooo........oooOO0OOooo........oo     73 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 73                                                    74 
 74 CommandLineParser* CommandLineParser::GetParse     75 CommandLineParser* CommandLineParser::GetParser()
 75 {                                                  76 {
 76   if (!fpInstance) new CommandLineParser;          77   if (!fpInstance) new CommandLineParser;
 77   return fpInstance;                               78   return fpInstance;
 78 }                                                  79 }
 79                                                    80 
 80 //....oooOO0OOooo........oooOO0OOooo........oo     81 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 81                                                    82 
 82 CommandLineParser::~CommandLineParser()            83 CommandLineParser::~CommandLineParser()
 83 {                                                  84 {
 84   std::map<G4String, Command*>::iterator it =      85   std::map<G4String, Command*>::iterator it = fCommandMap.begin();
 85   for (; it != fCommandMap.end(); it++) {      <<  86   for (; it != fCommandMap.end(); it++)
                                                   >>  87   {
 86     if (it->second) delete it->second;             88     if (it->second) delete it->second;
 87   }                                                89   }
 88 }                                                  90 }
 89                                                    91 
 90 //....oooOO0OOooo........oooOO0OOooo........oo     92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 91                                                    93 
 92 void CommandLineParser::DeleteInstance()           94 void CommandLineParser::DeleteInstance()
 93 {                                                  95 {
 94   if (fpInstance) {                            <<  96   if (fpInstance)
                                                   >>  97   {
 95     delete fpInstance;                             98     delete fpInstance;
 96     fpInstance = 0;                                99     fpInstance = 0;
 97   }                                               100   }
 98 }                                                 101 }
 99                                                   102 
100 //....oooOO0OOooo........oooOO0OOooo........oo    103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
101                                                   104 
102 Command::Command(Command::Type commandType, co << 105 Command::Command(Command::Type commandType,
                                                   >> 106                  const G4String& description)
103 {                                                 107 {
104   fType = commandType;                            108   fType = commandType;
105   fDescription = description;                     109   fDescription = description;
106   fActive = false;                                110   fActive = false;
107 }                                                 111 }
108                                                   112 
109 CommandWithOption::CommandWithOption(Command:: << 113 CommandWithOption::CommandWithOption(Command::Type commandType,
110                                      const G4S << 114                  const G4String& description,
111   : Command(commandType, description)          << 115                  const G4String& defaultOption,
                                                   >> 116                  const G4String& optionName) : 
                                                   >> 117 Command(commandType, description)
112 {                                                 118 {
113   fDefaultOption = defaultOption;                 119   fDefaultOption = defaultOption;
114   fOptionName = optionName;                       120   fOptionName = optionName;
115   fOption = "";                                   121   fOption = "";
116 }                                                 122 }
117                                                   123 
                                                   >> 124 
118 //....oooOO0OOooo........oooOO0OOooo........oo    125 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
119                                                   126 
120 int CommandLineParser::Parse(int& argc, char** << 127 int CommandLineParser::Parse(int& argc, char **argv)
121 {                                                 128 {
122   //    G4cout << "Parse " << G4endl;             129   //    G4cout << "Parse " << G4endl;
123   static char null[1] = {""};                  << 130   static char null[1] = { "" };
124   int firstArgc = argc;                           131   int firstArgc = argc;
125                                                   132 
126   for (int i = 1; i < firstArgc; i++) {        << 133   for (int i = 1; i < firstArgc; i++)
                                                   >> 134   {
127     Command* command = FindCommand(argv[i]);      135     Command* command = FindCommand(argv[i]);
128     if (command == 0) continue;                   136     if (command == 0) continue;
129                                                   137 
130     if (fVerbose) G4cout << "Command : " << ar    138     if (fVerbose) G4cout << "Command : " << argv[i] << G4endl;
131                                                   139 
132     fOptionsWereSetup = true;                     140     fOptionsWereSetup = true;
133     command->fActive = true;                      141     command->fActive = true;
134                                                   142 
135     G4String marker(argv[i]);                     143     G4String marker(argv[i]);
136                                                   144 
137     if (strcmp(argv[i], "-h") != 0 && strcmp(a << 145     if (strcmp(argv[i], "-h") != 0 && strcmp(argv[i], "--help") != 0)
                                                   >> 146     {
138       argv[i] = null;                             147       argv[i] = null;
139     }                                             148     }
140                                                   149 
141     if (command->fType == Command::WithOption) << 150     if (command->fType == Command::WithOption)
                                                   >> 151     {
142       if (fVerbose) G4cout << "WithOption" <<     152       if (fVerbose) G4cout << "WithOption" << G4endl;
143                                                   153 
144       if (i + 1 > firstArgc || argv[i + 1] ==  << 154       if(i+1 > firstArgc || argv[i+1]==0 || argv[i+1][0]=='-')
145         G4cerr << "An command line option is m << 155       {
                                                   >> 156         G4cerr << "An command line option is missing for "
                                                   >> 157                << marker << G4endl;
146         abort();                                  158         abort();
147       }                                           159       }
148                                                   160 
149       command->SetOption((const char*)strdup(a << 161       command->SetOption( (const char*) strdup(argv[i+1]) );
150       argv[i + 1] = null;                      << 162       argv[i+1] = null;
151       i++;                                        163       i++;
152     }                                             164     }
153     else if (command->fType == Command::Option << 165     else if(command->fType == Command::OptionNotCompulsory)
154       if (fVerbose) G4cout << "OptionNotCompul << 166     {
155                                                << 167       if(fVerbose)
156       if (i + 1 < firstArgc) {                 << 168       G4cout <<"OptionNotCompulsory"<<G4endl;
157         G4String buffer = (const char*)strdup( << 
158                                                   169 
159         if (buffer.empty() == false) {         << 170       if(i+1 < firstArgc)
160           if (buffer.at(0) != '-' && buffer.at << 171       {
161               && buffer.at(0) != '|')          << 172         G4String buffer = (const char*) strdup(argv[i+1]);
                                                   >> 173 
                                                   >> 174         if(buffer.empty() == false)
                                                   >> 175         {
                                                   >> 176           if(buffer.at(0) != '-'
                                                   >> 177              && buffer.at(0) != '&'
                                                   >> 178              && buffer.at(0) != '>'
                                                   >> 179              && buffer.at(0) != '|')
162           {                                       180           {
163             if (fVerbose) {                    << 181             if(fVerbose)
                                                   >> 182             {
164               G4cout << "facultative option is    183               G4cout << "facultative option is : " << buffer << G4endl;
165             }                                     184             }
166                                                   185 
167             command->SetOption((const char*)st << 186             command->SetOption( (const char*) strdup(argv[i+1]) );
168             argv[i + 1] = null;                << 187             argv[i+1] = null;
169             i++;                                  188             i++;
170             continue;                             189             continue;
171           }                                       190           }
172         }                                         191         }
173       }                                           192       }
174                                                   193 
175       if (fVerbose) G4cout << "Option not set" << 194       if(fVerbose)
                                                   >> 195       G4cout << "Option not set" << G4endl;
176                                                   196 
177       command->SetOption("");                     197       command->SetOption("");
178     }                                             198     }
179   }                                               199   }
180   CorrectRemainingOptions(argc, argv);            200   CorrectRemainingOptions(argc, argv);
181                                                   201 
182   Command* commandLine(0);                        202   Command* commandLine(0);
183   if ((commandLine = GetCommandIfActive("--hel << 203   if ((commandLine = GetCommandIfActive("--help")) || (commandLine =
                                                   >> 204       GetCommandIfActive("-h")))
                                                   >> 205   {
184     G4cout << "Usage : " << argv[0] << " [OPTI    206     G4cout << "Usage : " << argv[0] << " [OPTIONS]" << G4endl;
185     PrintHelp();                                  207     PrintHelp();
186     return 1;                                     208     return 1;
187   }                                               209   }
188                                                   210 
189   return 0;                                       211   return 0;
190 }                                                 212 }
191                                                   213 
192 //....oooOO0OOooo........oooOO0OOooo........oo    214 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
193                                                   215 
194 void CommandLineParser::PrintHelp()               216 void CommandLineParser::PrintHelp()
195 {                                                 217 {
196   std::map<G4String, Command*>::iterator it;      218   std::map<G4String, Command*>::iterator it;
197                                                   219 
198   int maxFieldLength = fMaxMarkerLength + fMax    220   int maxFieldLength = fMaxMarkerLength + fMaxOptionNameLength + 4;
199                                                   221 
200   G4cout << "Options: " << G4endl;                222   G4cout << "Options: " << G4endl;
201                                                   223 
202   for (it = fCommandMap.begin(); it != fComman << 224   for (it = fCommandMap.begin(); it != fCommandMap.end(); it++)
                                                   >> 225   {
203     Command* command = it->second;                226     Command* command = it->second;
204     if (command) {                             << 227     if (command)
                                                   >> 228     {
205       G4cout << setw(maxFieldLength) << left;     229       G4cout << setw(maxFieldLength) << left;
206                                                   230 
207       G4String toPrint = it->first;               231       G4String toPrint = it->first;
208                                                   232 
209       if (toPrint == "&") {                    << 233       if (toPrint == "&")
                                                   >> 234       {
210         continue;                                 235         continue;
211       }                                           236       }
212       else if (toPrint == "-h")                << 237       else if (toPrint == "-h") continue;
213         continue;                              << 238       else if (toPrint == "--help")
214       else if (toPrint == "--help") {          << 239       {
215         toPrint += ", -h";                        240         toPrint += ", -h";
216       }                                           241       }
217                                                   242 
218       if (command->GetType() != Command::Witho << 243       if(command->GetType() != Command::WithoutOption)
219         if (command->GetDefaultOption() != "") << 244       {
                                                   >> 245         if (command->GetDefaultOption() != "")
                                                   >> 246         {
220           toPrint += " \"" + command->GetDefau    247           toPrint += " \"" + command->GetDefaultOption() + "\"";
221         }                                         248         }
222       }                                           249       }
223       G4cout << toPrint;                          250       G4cout << toPrint;
224                                                   251 
225       G4cout << command->GetDescription() << G    252       G4cout << command->GetDescription() << G4endl;
226     }                                             253     }
227   }                                               254   }
228 }                                                 255 }
229                                                   256 
230 //....oooOO0OOooo........oooOO0OOooo........oo    257 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
231                                                   258 
232 void CommandLineParser::CorrectRemainingOption << 259 void CommandLineParser::CorrectRemainingOptions(int& argc, char **argv)
233 {                                                 260 {
234   // remove handled arguments from argument ar    261   // remove handled arguments from argument array
235   int j = 0;                                      262   int j = 0;
236   for (int i = 0; i < argc; i++) {             << 263   for (int i = 0; i < argc; i++)
237     if (strcmp(argv[i], "")) {                 << 264   {
                                                   >> 265     if (strcmp(argv[i], ""))
                                                   >> 266     {
238       argv[j] = argv[i];                          267       argv[j] = argv[i];
239       j++;                                        268       j++;
240     }                                             269     }
241   }                                               270   }
242   argc = j;                                       271   argc = j;
243 }                                                 272 }
244                                                   273 
245 //....oooOO0OOooo........oooOO0OOooo........oo    274 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
246                                                   275 
247 void CommandLineParser::AddCommand(const G4Str << 276 void CommandLineParser::AddCommand(const G4String& marker,
248                                    const G4Str << 277                                    Command::Type type,
                                                   >> 278                                    const G4String& description,
                                                   >> 279                                    const G4String& defaultOption,
249                                    const G4Str    280                                    const G4String& optionName)
250 {                                                 281 {
251   // G4cout << "Add command : "<< marker << G4    282   // G4cout << "Add command : "<< marker << G4endl;
252                                                << 283   
253   Command* command = 0;                           284   Command* command = 0;
254   switch (type) {                              << 285   switch(type)
255     case Command::WithoutOption:               << 286   {
256       command = new Command(type, description) << 287  case Command::WithoutOption:
257       break;                                   << 288         command = new Command(type, description);
258                                                << 289         break;
259     default:                                   << 290         
260       command = new CommandWithOption(type, de << 291         default:
261       if ((int)defaultOption.length() > fMaxOp << 292         command = new CommandWithOption(type, 
262         fMaxOptionNameLength = defaultOption.l << 293                                         description, 
263       break;                                   << 294                                         defaultOption, 
                                                   >> 295                                         optionName);
                                                   >> 296         if ((int) defaultOption.length() > fMaxOptionNameLength)
                                                   >> 297           fMaxOptionNameLength = defaultOption.length();
                                                   >> 298         break;
264   }                                               299   }
265                                                   300 
266   if ((int)marker.length() > fMaxMarkerLength) << 301   if ((int) marker.length() > fMaxMarkerLength) fMaxMarkerLength =
                                                   >> 302       marker.length();
267   fCommandMap.insert(make_pair(marker, command    303   fCommandMap.insert(make_pair(marker, command));
268 }                                                 304 }
269                                                   305 
270 /*                                                306 /*
271 // Add one command but multiple markers           307 // Add one command but multiple markers
272 void Parser::AddCommand(vector<G4String> marke    308 void Parser::AddCommand(vector<G4String> markers,
273                         CommandType type,         309                         CommandType type,
274                         const G4String& descri    310                         const G4String& description,
275                         const G4String& option    311                         const G4String& optionName)
276 {                                                 312 {
277   // G4cout << "Add command : "<< marker << G4    313   // G4cout << "Add command : "<< marker << G4endl;
278   Command* command = new Command(type, descrip    314   Command* command = new Command(type, description, optionName);
279                                                   315 
280   for (size_t i = 0; i < markers.size; i++)       316   for (size_t i = 0; i < markers.size; i++)
281   {                                               317   {
282     G4String marker = markers[i];                 318     G4String marker = markers[i];
283     if ((int) marker.length() > fMaxMarkerLeng    319     if ((int) marker.length() > fMaxMarkerLength)
284     {                                             320     {
285       fMaxMarkerLength = marker.length();         321       fMaxMarkerLength = marker.length();
286     }                                             322     }
287     if ((int) optionName.length() > fMaxOption    323     if ((int) optionName.length() > fMaxOptionNameLength)
288     {                                             324     {
289       fMaxOptionNameLength = optionName.length    325       fMaxOptionNameLength = optionName.length();
290     }                                             326     }
291     fCommandMap.insert(make_pair(marker, comma    327     fCommandMap.insert(make_pair(marker, command));
292   }                                               328   }
293 }                                                 329 }
294 */                                                330 */
295                                                   331 
296 //....oooOO0OOooo........oooOO0OOooo........oo    332 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
297                                                   333 
298 Command* CommandLineParser::FindCommand(const     334 Command* CommandLineParser::FindCommand(const G4String& marker)
299 {                                                 335 {
300   std::map<G4String, Command*>::iterator it =     336   std::map<G4String, Command*>::iterator it = fCommandMap.find(marker);
301   if (it == fCommandMap.end()) {               << 337   if (it == fCommandMap.end())
                                                   >> 338   {
302     // G4cerr << "command not found" << G4endl    339     // G4cerr << "command not found" << G4endl;
303     return 0;                                     340     return 0;
304   }                                               341   }
305   return it->second;                              342   return it->second;
306 }                                                 343 }
307                                                   344 
308 //....oooOO0OOooo........oooOO0OOooo........oo    345 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
309                                                   346 
310 Command* CommandLineParser::GetCommandIfActive << 347 Command* CommandLineParser::GetCommandIfActive(const G4String &marker)
311 {                                                 348 {
312   Command* command = FindCommand(marker);         349   Command* command = FindCommand(marker);
313   if (command) {                               << 350   if (command)
                                                   >> 351   {
314     // G4cout << "Command found : "<< marker <    352     // G4cout << "Command found : "<< marker << G4endl;
315                                                   353 
316     if (command->fActive) {                    << 354     if (command->fActive)
                                                   >> 355     {
317       // G4cout << "Command Active" << G4endl;    356       // G4cout << "Command Active" << G4endl;
318       return command;                             357       return command;
319     }                                             358     }
320     // else                                       359     // else
321     //  G4cout <<"Command not active" << G4end    360     //  G4cout <<"Command not active" << G4endl;
322   }                                               361   }
323   else {                                       << 362   else
                                                   >> 363   {
324     G4ExceptionDescription description;           364     G4ExceptionDescription description;
325     description << "You try to retrieve a comm << 365     description << "You try to retrieve a command that was not registered : "
326     G4Exception("CommandLineParser::GetCommand << 366            << marker << G4endl;
327                 description, "");              << 367     G4Exception("CommandLineParser::GetCommandIfActive",
                                                   >> 368                 "COMMAND LINE NOT DEFINED", FatalException, description, "");
328     // If you are using this class outside of     369     // If you are using this class outside of Geant4, use exit(-1) instead
329     // exit(-1);                               << 370     //exit(-1);
330   }                                               371   }
331   return 0;                                       372   return 0;
332 }                                                 373 }
333                                                   374 
334 //....oooOO0OOooo........oooOO0OOooo........oo    375 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
335                                                   376 
336 bool CommandLineParser::CheckIfNotHandledOptio    377 bool CommandLineParser::CheckIfNotHandledOptionsExists(int& argc, char** argv)
337 {                                                 378 {
338   if (argc > 0) {                              << 379   if (argc > 0)
                                                   >> 380   {
339     G4bool kill = false;                          381     G4bool kill = false;
340     for (G4int i = 1; i < argc; i++) {         << 382     for (G4int i = 1; i < argc; i++)
341       if (strcmp(argv[i], "")) {               << 383     {
                                                   >> 384       if (strcmp(argv[i], ""))
                                                   >> 385       {
342         kill = true;                              386         kill = true;
343         G4cerr << "Unknown argument : " << arg    387         G4cerr << "Unknown argument : " << argv[i] << "\n";
344       }                                           388       }
345     }                                             389     }
346     if (kill) {                                << 390     if (kill)
347       G4cerr << "The option " << argv[0] << "  << 391     {
                                                   >> 392       G4cerr << "The option " << argv[0]
                                                   >> 393              << " is not handled this programme." << G4endl;
348       G4cout << "Usage : " << argv[0] << " [OP    394       G4cout << "Usage : " << argv[0] << " [OPTIONS]" << G4endl;
349       PrintHelp();                                395       PrintHelp();
350       return true;  // KILL APPLICATION        << 396       return true; // KILL APPLICATION
351     }                                             397     }
352   }                                               398   }
353   return false;                                   399   return false;
354 }                                                 400 }
355                                                   401