00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef PCL_CONSOLE_PARSE_H_
00039 #define PCL_CONSOLE_PARSE_H_
00040
00041 #include <vector>
00042 #include <sstream>
00043 #include <pcl/pcl_macros.h>
00044
00045 namespace pcl
00046 {
00047 namespace console
00048 {
00058 PCL_EXPORTS bool
00059 find_switch (int argc, char** argv, const char* argument_name);
00060
00067 PCL_EXPORTS int
00068 find_argument (int argc, char** argv, const char* argument_name);
00069
00077 template<typename Type> int
00078 parse (int argc, char** argv, const char* argument_name, Type& value)
00079 {
00080 int index = find_argument (argc, argv, argument_name) + 1;
00081
00082 if (index > 0 && index < argc)
00083 {
00084 std::istringstream stream;
00085 stream.clear ();
00086 stream.str (argv[index]);
00087 stream >> value;
00088 }
00089
00090 return (index - 1);
00091 }
00092
00100 PCL_EXPORTS int
00101 parse_argument (int argc, char** argv, const char* str, std::string &val);
00102
00110 PCL_EXPORTS int
00111 parse_argument (int argc, char** argv, const char* str, bool &val);
00112
00120 PCL_EXPORTS int
00121 parse_argument (int argc, char** argv, const char* str, float &val);
00122
00130 PCL_EXPORTS int
00131 parse_argument (int argc, char** argv, const char* str, double &val);
00132
00140 PCL_EXPORTS int
00141 parse_argument (int argc, char** argv, const char* str, int &val);
00142
00150 PCL_EXPORTS int
00151 parse_argument (int argc, char** argv, const char* str, unsigned int &val);
00152
00160 PCL_EXPORTS int
00161 parse_argument (int argc, char** argv, const char* str, char &val);
00162
00172 PCL_EXPORTS int
00173 parse_2x_arguments (int argc, char** argv, const char* str, float &f, float &s, bool debug = true);
00174
00184 PCL_EXPORTS int
00185 parse_2x_arguments (int argc, char** argv, const char* str, double &f, double &s, bool debug = true);
00186
00196 PCL_EXPORTS int
00197 parse_2x_arguments (int argc, char** argv, const char* str, int &f, int &s, bool debug = true);
00198
00209 PCL_EXPORTS int
00210 parse_3x_arguments (int argc, char** argv, const char* str, float &f, float &s, float &t, bool debug = true);
00211
00222 PCL_EXPORTS int
00223 parse_3x_arguments (int argc, char** argv, const char* str, double &f, double &s, double &t, bool debug = true);
00224
00235 PCL_EXPORTS int
00236 parse_3x_arguments (int argc, char** argv, const char* str, int &f, int &s, int &t, bool debug = true);
00237
00245 PCL_EXPORTS int
00246 parse_x_arguments (int argc, char** argv, const char* str, std::vector<double>& v);
00247
00255 PCL_EXPORTS int
00256 parse_x_arguments (int argc, char** argv, const char* str, std::vector<float>& v);
00257
00265 PCL_EXPORTS int
00266 parse_x_arguments (int argc, char** argv, const char* str, std::vector<int>& v);
00267
00275 PCL_EXPORTS bool
00276 parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<int> &values);
00277
00285 PCL_EXPORTS bool
00286 parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<float> &values);
00287
00295 PCL_EXPORTS bool
00296 parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<double> &values);
00297
00305 PCL_EXPORTS bool
00306 parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<std::string> &values);
00307
00317 PCL_EXPORTS bool
00318 parse_multiple_2x_arguments (int argc, char** argv, const char* str,
00319 std::vector<double> &values_f,
00320 std::vector<double> &values_s);
00321
00332 PCL_EXPORTS bool
00333 parse_multiple_3x_arguments (int argc, char** argv, const char* str,
00334 std::vector<double> &values_f,
00335 std::vector<double> &values_s,
00336 std::vector<double> &values_t);
00337
00344 PCL_EXPORTS std::vector<int>
00345 parse_file_extension_argument (int argc, char** argv, const std::string &ext);
00346 }
00347 }
00348
00349 #endif // PCL_CONSOLE_PARSE_H_
00350