Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: base/command_line_parser.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/clipboard.cc ('k') | base/command_line_parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2008-2009 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 #ifndef OMAHA_BASE_COMMAND_LINE_PARSER_H__
17 #define OMAHA_BASE_COMMAND_LINE_PARSER_H__
18
19 #include <windows.h>
20 #include <atlstr.h>
21 #include <map>
22 #include <vector>
23 #include "base/basictypes.h"
24 #include "base/scoped_ptr.h"
25
26 namespace omaha {
27
28 namespace internal {
29
30 class CommandLineParserArgs;
31
32 } // namespace internal
33
34 // This class will parse a command line either from a string or in argc/argv
35 // format. It then provides information about the parsed command line.
36 // When passing the string, make sure it includes the program name as the first
37 // argument.
38 // A "switch" is an argument preceded by "/". Each switch can take 0..n
39 // arguments.
40 // Example: foo.exe /sw a "b b" /sw2 /sw3
41 // * foo.exe is the program name
42 // * sw, sw2, and sw3 are switches.
43 // * a and 'b b' (without the quotes) are the arguments to the sw switch.
44 // * sw has 2 arguments and sw2 and sw3 have no arguments.
45 class CommandLineParser {
46 public:
47 CommandLineParser();
48 ~CommandLineParser();
49
50 // Parses the command line from a string. Must include the program name (e.g.
51 // foo.exe) as the first value in the command line.
52 HRESULT ParseFromString(const wchar_t* command_line);
53
54 // Parses the command line form argc/argv syntax. Makes the assumption that
55 // argv[0] is the program name (e.g. foo.exe).
56 HRESULT ParseFromArgv(int argc, wchar_t** argv);
57
58 // TODO(Omaha): Name these methods "Required".
59 // Gets the number of required switches in the parsed command line.
60 int GetSwitchCount() const;
61
62 // Returns the required switch at a particular index.
63 HRESULT GetSwitchNameAtIndex(int index, CString* switch_name) const;
64
65 // Returns true if a required switch with the name switch_name is found.
66 bool HasSwitch(const CString& switch_name) const;
67
68 // Returns the number of required arguments for required switch switch_name.
69 HRESULT GetSwitchArgumentCount(const CString& switch_name,
70 int* count) const;
71
72 // Returns the value of a required switch argument at the specified offset.
73 HRESULT GetSwitchArgumentValue(const CString& switch_name,
74 int argument_index,
75 CString* argument_value) const;
76
77 // Functions that have the same functionality as the above functions,
78 // except they operate on the optional switches.
79 int GetOptionalSwitchCount() const;
80 bool HasOptionalSwitch(const CString& switch_name) const;
81 HRESULT GetOptionalSwitchNameAtIndex(int index, CString* switch_name) const;
82 HRESULT GetOptionalSwitchArgumentCount(const CString& switch_name,
83 int* count) const;
84 HRESULT GetOptionalSwitchArgumentValue(
85 const CString& switch_name,
86 int argument_index,
87 CString* argument_value) const;
88
89 private:
90 bool IsSwitch(const CString& param) const;
91 HRESULT StripSwitchNameFromArgv(const CString& param, CString* switch_name);
92 bool IsOptionalSwitch(const CString& param) const;
93 HRESULT StripOptionalSwitchNameFromArgv(const CString& param, CString* name);
94
95 void Reset();
96
97 HRESULT AddSwitch(const CString& switch_name);
98 HRESULT AddSwitchArgument(const CString& switch_name,
99 const CString& argument_value);
100 HRESULT AddOptionalSwitch(const CString& switch_name);
101 HRESULT AddOptionalSwitchArgument(const CString& switch_name,
102 const CString& argument_value);
103
104 scoped_ptr<internal::CommandLineParserArgs> required_args_;
105 scoped_ptr<internal::CommandLineParserArgs> optional_args_;
106
107 DISALLOW_EVIL_CONSTRUCTORS(CommandLineParser);
108 };
109
110 } // namespace omaha
111
112 #endif // OMAHA_BASE_COMMAND_LINE_PARSER_H__
113
OLDNEW
« no previous file with comments | « base/clipboard.cc ('k') | base/command_line_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698