blob: 92f586a6341cbd01db6b1d8f173ee5acea5ca4a5 [file] [log] [blame]
Vadim Iosevichd50ea462017-03-30 16:19:08 +03001/*
2 * Copyright (c) 2017, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#ifndef _PARAMETER_PARSER_H
31#define _PARAMETER_PARSER_H
32
33#include <iostream>
34#include <fstream>
35#include <stdlib.h>
36#include <string>
37#include <map>
38#include <list>
39#include <algorithm>
40
41using namespace std;
42
43class ParameterParser
44{
45 map<string, char*> Parameters;
46 map<string, bool> Flags;
47 list<string> flags;
48 list<string> params;
49
50public:
51 ParameterParser();
52 ~ParameterParser();
53
54 int processCommandArgs( int _argc, char **_argv );
55
56 char *getValue(string _option);
57 bool getFlag(string _option);
58
59 void printUsage();
60
61 void printHelp();
62
63 void setVerbose();
64
65 void addFlag(string flag);
66 void addParam(string param);
67
68private:
69 int argc;
70 char **argv;
71
72 bool verbose;
73
74 void printVerbose( const char *INFO );
75 void printVerbose( char *INFO );
76 void printVerbose( char ch );
77 void printVerbose( );
78
79 bool IsFlag(string flag);
80 bool IsParam(string param);
81
82 bool ParamFound(string param);
83
84 bool FlagFound(string flag);
85};
86
87#endif /* ! _PARAMETER_PARSER_H */