/* * This file is a part of MainParser -- simple parser for main() parameters * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2011, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include "../mainparser.h" int main() { MainParser mp; // suppose you call a 'programname' in such a way: // $ programname -a -b - c --longparam -- otherlongparam -xyz paramwithvalue -x --longparam2 longwithvalue lastvalue1 lastvalue2 lastvalue3 // so the main() function get this table as input: const char * tab[] = { "programname", "-a", "-b", "-", "c", "--longparam", "--", "otherlongparam", "-xyz", "paramwithvalue", "-x", "--longparam2", "longwithvalue", "lastvalue1", // some values left at the end "lastvalue2", // you can get them by using GetValue() method "lastvalue3", }; mp.Set(sizeof(tab)/sizeof(const char*), tab); while( mp.NextParam() ) { if( mp.GetSingleParam() != 0 ) { std::cout << "-" << mp.GetSingleParam() << std::endl; // we know that 'z' requires a value if( mp.GetSingleParam() == 'z' ) std::cout << "value for z: " << mp.GetValue() << std::endl; } if( *mp.GetDoubleParam() ) { std::cout << "--" << mp.GetDoubleParam() << std::endl; // we know that "longparam2" requires a value if( strcmp(mp.GetDoubleParam(), "longparam2") == 0 ) std::cout << "value for longparam2: " << mp.GetValue() << std::endl; } } while( !mp.IsEnd() ) std::cout << mp.GetValue() << std::endl; } /* program output: -a -b -c --longparam --otherlongparam -x -y -z value for z: paramwithvalue -x --longparam2 value for longparam2: longwithvalue lastvalue1 lastvalue2 lastvalue3 */