📄 make_help.cpp
字号:
// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-//-----------------------------------------------------------------------------// make_help.h// (c) Maarten Keijzer, Marc Schoenauer and GeNeura Team, 2001/* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact: todos@geneura.ugr.es, http://geneura.ugr.es Marc.Schoenauer@polytechnique.fr mkeijzer@dhi.dk *///-----------------------------------------------------------------------------#ifdef _MSC_VER// to avoid long name warnings#pragma warning(disable:4786)#endif #include <utils/eoParser.h>#include <fstream>#include <stdexcept>using namespace std;/** Generation of the status file, and output of the help message if needed * * MUST be called after ALL parameters have been read in order to list them * * Warning: this is a plain .cpp file and shoudl NOT be included anywhere, * but compiled separately and stored in a library. * * It is declared in all make_xxx.h files in representation-dependent dirs * but it is NOT representation-dependent itself - that's why it's in utils */void make_help(eoParser & _parser){ // name of the "status" file where all actual parameter values will be saved string str_status = _parser.ProgramName() + ".status"; // default value eoValueParam<string>& statusParam = _parser.createParam(str_status, "status","Status file",'\0', "Persistence" ); // dump status file BEFORE help, so the user gets a chance to use it: // it's probably the case where she/he needs it most!!! // Only help parameter will not be in status file - but who cares??? if (statusParam.value() != "") { ofstream os(statusParam.value().c_str()); os << _parser; // and you can use that file as parameter file } // do the following AFTER ALL PARAMETERS HAVE BEEN PROCESSED // i.e. in case you need parameters somewhere else, postpone these if (_parser.userNeedsHelp()) { _parser.printHelp(cout); cout << "You can use an edited copy of file " << statusParam.value() << " as parameter file" << endl; exit(1); }}/** test a dir. * Creates it if does not exist * If exists, throws an exception or erase everything there, * depending on last parameter * * Always return true (for code easy writing on the other side :-) */bool testDirRes(std::string _dirName, bool _erase=true){ string s = "test -d " + _dirName; int res = system(s.c_str()); // test for (unlikely) errors if ( (res==-1) || (res==127) ) { s = "Problem executing test of dir " + _dirName; throw runtime_error(s); } // now make sure there is a dir without any file in it - or quit if (res) // no dir present { s = string("mkdir ")+ _dirName; system(s.c_str()); return true; } // else if (_erase) // OK to erase { s = string("/bin/rm ")+ _dirName + "/*"; system(s.c_str()); return true; } //else // WARNING: bug if dir exists and is empty; this says it is not! // shoudl use scandir instead - no time now :-((( MS Aug. 01 s = "Dir " + _dirName + " is not empty"; throw runtime_error(s); return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -