Jpp  17.3.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Jeep.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <iomanip>
3 #include <string>
4 
5 #include "Jeep/JeepToolkit.hh"
6 #include "Jeep/JParser.hh"
7 #include "Jeep/JMessage.hh"
8 
9 
10 /**
11  * \file
12  *
13  * Example program to test file name handling using Jeep/JeepToolkit.hh.
14  * \author mdejong
15  */
16 int main(int argc, char **argv)
17 {
18  using namespace std;
19  using namespace JPP;
20 
21  string file_name;
22  int debug;
23  JArgs args;
24 
25  try {
26 
27  JParser<> zap("Example program to test file name handling.");
28 
29  zap['f'] = make_field(file_name, "input file name") = "";
30  zap['d'] = make_field(debug, "debug level") = 1, 0, 2, 3; // default value, and possible values
31 
32  args = zap(argc, argv);
33  }
34  catch(const exception &error) {
35  FATAL(error.what() << endl);
36  }
37 
38  cout << "file name " << getFilename(argv[0]) << endl;
39  cout << "path " << getPath(argv[0]) << endl;
40  cout << "file name " << getFilename(getPath(argv[0]), getFilename(argv[0])) << endl;
41 
42  if (file_name != "") {
43 
44  cout << "file name " << file_name << endl;
45  cout << "path " << getPath(file_name) << endl;
46  cout << "extension " << getFilenameExtension(file_name) << endl;
47  cout << "protocol " << getProtocol(file_name) << endl;
48  }
49 
50  if (!args.empty()) {
51  cout << "Pending arguments" << endl;
52  cout << args << endl;
53  }
54 }
Utility class to parse command line options.
Definition: JParser.hh:1517
int main(int argc, char *argv[])
Definition: Main.cc:15
std::string getPath(const std::string &file_name)
Get path, i.e. part before last JEEP::PATHNAME_SEPARATOR if any.
Definition: JeepToolkit.hh:148
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1993
Auxiliary methods for handling file names, type names and environment.
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
std::string getProtocol(const std::string &file_name)
Get protocol, i.e. part before first JEEP::PROTOCOL_SEPARATOR if any.
Definition: JeepToolkit.hh:303
Utility class to parse command line options.
std::string getFilenameExtension(const std::string &file_name)
Get file name extension, i.e. part after last JEEP::FILENAME_SEPARATOR if any.
Definition: JeepToolkit.hh:109
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
Definition: JeepToolkit.hh:128
int debug
debug level