Point Cloud Library (PCL)  1.3.1
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 2052 2011-08-12 22:31:00Z mdixon $
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   {
00060     PCL_EXPORTS int 
00061     find_argument (int argc, char** argv, const char* argument_name);
00062 
00070     template<typename Type> int 
00071     parse (int argc, char** argv, const char* argument_name, Type& value)
00072     {
00073       int index = find_argument (argc, argv, argument_name) + 1;
00074 
00075       if (index > 0 && index < argc)
00076       {
00077         std::istringstream stream;
00078         stream.clear ();
00079         stream.str (argv[index]);
00080         stream >> value;
00081       }
00082 
00083       return (index - 1);
00084     }
00085 
00093     PCL_EXPORTS int 
00094     parse_argument (int argc, char** argv, const char* str, std::string &val);
00095 
00103     PCL_EXPORTS int 
00104     parse_argument (int argc, char** argv, const char* str, bool &val);
00105 
00113     PCL_EXPORTS int 
00114     parse_argument (int argc, char** argv, const char* str, double &val);
00115 
00123     PCL_EXPORTS int 
00124     parse_argument (int argc, char** argv, const char* str, int &val);
00125 
00133     PCL_EXPORTS int 
00134     parse_argument (int argc, char** argv, const char* str, unsigned int &val);
00135 
00145     PCL_EXPORTS int 
00146     parse_2x_arguments (int argc, char** argv, const char* str, double &f, double &s, bool debug = true);
00147 
00157     PCL_EXPORTS int 
00158     parse_2x_arguments (int argc, char** argv, const char* str, int &f, int &s, bool debug = true);
00159 
00170     PCL_EXPORTS int 
00171     parse_3x_arguments (int argc, char** argv, const char* str, double &f, double &s, double &t, bool debug = true);
00172 
00183     PCL_EXPORTS int 
00184     parse_3x_arguments (int argc, char** argv, const char* str, int &f, int &s, int &t, bool debug = true);
00185 
00194     PCL_EXPORTS int 
00195     parse_x_arguments (int argc, char** argv, const char* str, std::vector<double>& v, bool debug = true);
00196 
00205     PCL_EXPORTS int 
00206     parse_x_arguments (int argc, char** argv, const char* str, std::vector<int>& v, bool debug = true);
00207 
00215     PCL_EXPORTS bool 
00216     parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<int> &values);
00217 
00225     PCL_EXPORTS bool 
00226     parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<double> &values);
00227 
00235     PCL_EXPORTS bool 
00236     parse_multiple_arguments (int argc, char** argv, const char* str, std::vector<std::string> &values);
00237 
00247     PCL_EXPORTS bool 
00248     parse_multiple_2x_arguments (int argc, char** argv, const char* str, std::vector<double> &values_f, std::vector<double> &values_s);
00249 
00260     PCL_EXPORTS bool 
00261     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);
00262 
00269     PCL_EXPORTS std::vector<int> 
00270     parse_file_extension_argument (int argc, char** argv, const std::string &ext);
00271   }
00272 } 
00273 
00274 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines