Point Cloud Library (PCL)  1.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
parse.h
Go to the documentation of this file.
00001 /*
00002  * Software License Agreement (BSD License)
00003  *
00004  *  Copyright (c) 2010, Willow Garage, Inc.
00005  *  All rights reserved.
00006  *
00007  *  Redistribution and use in source and binary forms, with or without
00008  *  modification, are permitted provided that the following conditions
00009  *  are met:
00010  *
00011  *   * Redistributions of source code must retain the above copyright
00012  *     notice, this list of conditions and the following disclaimer.
00013  *   * Redistributions in binary form must reproduce the above
00014  *     copyright notice, this list of conditions and the following
00015  *     disclaimer in the documentation and/or other materials provided
00016  *     with the distribution.
00017  *   * Neither the name of Willow Garage, Inc. nor the names of its
00018  *     contributors may be used to endorse or promote products derived
00019  *     from this software without specific prior written permission.
00020  *
00021  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00022  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00023  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00024  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00025  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00026  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00027  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00028  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029  *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00030  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00031  *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00032  *  POSSIBILITY OF SUCH DAMAGE.
00033  *
00034  * $Id: parse.h 3746 2011-12-31 22:19:47Z rusu $
00035  *
00036  */
00037 #ifndef TERMINAL_TOOLS_PARSE_H_
00038 #define TERMINAL_TOOLS_PARSE_H_
00039 
00040 #include <vector>
00041 #include <string>
00042 #include <string.h>
00043 #include <stdlib.h>
00044 #include <boost/algorithm/string.hpp>
00045 #include <sstream>
00046 
00047 #include <pcl/pcl_macros.h>
00048 
00049 namespace pcl
00050 {
00051   namespace console
00052   {
00053 
00064     PCL_EXPORTS bool
00065     find_switch (int argc, char** argv, const char* argument_name);
00066 
00074     PCL_EXPORTS int
00075     find_argument (int argc, char** argv, const char* argument_name);
00076 
00084     template<typename Type> int
00085     parse (int argc, char** argv, const char* argument_name, Type& value)
00086     {
00087       int index = find_argument (argc, argv, argument_name) + 1;
00088 
00089       if (index > 0 && index < argc)
00090       {
00091         std::istringstream stream;
00092         stream.clear ();
00093         stream.str (argv[index]);
00094         stream >> value;
00095       }
00096 
00097       return (index - 1);
00098     }
00099 
00107     PCL_EXPORTS int
00108     parse_argument (int argc, char** argv, const char* str, std::string &val);
00109 
00117     PCL_EXPORTS int
00118     parse_argument (int argc, char** argv, const char* str, bool &val);
00119 
00127     PCL_EXPORTS int
00128     parse_argument (int argc, char** argv, const char* str, double &val);
00129 
00137     PCL_EXPORTS int
00138     parse_argument (int argc, char** argv, const char* str, int &val);
00139 
00147     PCL_EXPORTS int
00148     parse_argument (int argc, char** argv, const char* str, unsigned int &val);
00149 
00159     PCL_EXPORTS int
00160     parse_2x_arguments (int argc, char** argv, const char* str, double &f, double &s, bool debug = true);
00161 
00171     PCL_EXPORTS int
00172     parse_2x_arguments (int argc, char** argv, const char* str, int &f, int &s, bool debug = true);
00173 
00184     PCL_EXPORTS int
00185     parse_3x_arguments (int argc, char** argv, const char* str, double &f, double &s, double &t, bool debug = true);
00186 
00197     PCL_EXPORTS int
00198     parse_3x_arguments (int argc, char** argv, const char* str, int &f, int &s, int &t, bool debug = true);
00199 
00208     PCL_EXPORTS int
00209     parse_x_arguments (int argc, char** argv, const char* str, std::vector<double>& v, bool debug = true);
00210 
00219     PCL_EXPORTS int
00220     parse_x_arguments (int argc, char** argv, const char* str, std::vector<int>& v, bool debug = true);
00221 
00229     PCL_EXPORTS bool
00230     parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<int> &values);
00231 
00239     PCL_EXPORTS bool
00240     parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<double> &values);
00241 
00249     PCL_EXPORTS bool
00250     parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<std::string> &values);
00251 
00261     PCL_EXPORTS bool
00262     parse_multiple_2x_arguments (int argc, char** argv, const char* str, std::vector<double> &values_f, std::vector<double> &values_s);
00263 
00274     PCL_EXPORTS bool
00275     parse_multiple_3x_arguments (int argc, char** argv, const char* str, std::vector<double> &values_f, std::vector<double> &values_s, std::vector<double> &values_t);
00276 
00283     PCL_EXPORTS std::vector<int>
00284     parse_file_extension_argument (int argc, char** argv, const std::string &ext);
00285   }
00286 }
00287 
00288 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines