IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
ProgramOptionsMacros.h
Go to the documentation of this file.
1 // BaseMacros.h:
3 // -------------
4 //
18 
19 #ifndef __IPSDKUTIL_PROGRAMOPTIONSMACROS_H__
20 #define __IPSDKUTIL_PROGRAMOPTIONSMACROS_H__
21 
22 #include <boost/program_options/cmdline.hpp>
23 #include <boost/program_options/options_description.hpp>
24 #include <boost/program_options/parsers.hpp>
25 #include <boost/program_options/variables_map.hpp>
26 
29 
30 
35 #ifdef IPSDK_WINDOWS
36  #define IPSDK_PROGRAM_OPTION_STORE_CMD_LINE_PARSER(strArgvInput, desc, vm)\
37  boost::program_options::store(boost::program_options::command_line_parser(boost::program_options::split_winmain(strArgvInput)).options(desc).run(), vm);
38 #else // Linux
39  #define IPSDK_PROGRAM_OPTION_STORE_CMD_LINE_PARSER(strArgvInput, desc, vm)\
40  boost::program_options::store(boost::program_options::command_line_parser(boost::program_options::split_unix(strArgvInput)).options(desc).run(), vm);
41 #endif // IPSDK_WINDOWS
42 
46 #define IPSDK_PROGRAM_OPTION_PARSER(argc, argv, desc, vm, bBoostTest) \
47  const int argOffset = (bBoostTest ? 2 : 1); \
48  if(argc > argOffset) { \
49  for (int i = 1; i < argc; ++i) { \
50  int j = 0; \
51  while (argv[i][j] != '\0') { \
52  if (argv[i][j] == '#') \
53  argv[i][j] = ' '; \
54  ++j; \
55  } \
56  } \
57  std::string strArgvInput = argv[argOffset]; \
58  for (int i = 1 + argOffset; i < argc; ++i) \
59  strArgvInput += " " + std::string(argv[i]); \
60  IPSDK_PROGRAM_OPTION_STORE_CMD_LINE_PARSER(strArgvInput, desc, vm) \
61  notify(vm); \
62  }
63 
64 
67 
68 #endif // __IPSDKUTIL_PROGRAMOPTIONSMACROS_H__