diff options
author | Chris Lattner <sabre@nondot.org> | 2003-06-28 15:47:20 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-06-28 15:47:20 +0000 |
commit | 719c715639217a978dacc5863243d5e0e07b1d4d (patch) | |
tree | c522c1540cfe4a941df59c7360554498182019f6 /llvm/support/lib/Support/CommandLine.cpp | |
parent | abebb9af114dd887f1909de8fa73cb434159a618 (diff) | |
download | bcm5719-llvm-719c715639217a978dacc5863243d5e0e07b1d4d.tar.gz bcm5719-llvm-719c715639217a978dacc5863243d5e0e07b1d4d.zip |
Add support for 'unsigned' command line arguments
llvm-svn: 6928
Diffstat (limited to 'llvm/support/lib/Support/CommandLine.cpp')
-rw-r--r-- | llvm/support/lib/Support/CommandLine.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/llvm/support/lib/Support/CommandLine.cpp b/llvm/support/lib/Support/CommandLine.cpp index a0eca7a8ed4..bbf996af7b1 100644 --- a/llvm/support/lib/Support/CommandLine.cpp +++ b/llvm/support/lib/Support/CommandLine.cpp @@ -575,14 +575,25 @@ bool parser<bool>::parse(Option &O, const char *ArgName, // bool parser<int>::parse(Option &O, const char *ArgName, const std::string &Arg, int &Value) { - const char *ArgStart = Arg.c_str(); char *End; - Value = (int)strtol(ArgStart, &End, 0); + Value = (int)strtol(Arg.c_str(), &End, 0); if (*End != 0) return O.error(": '" + Arg + "' value invalid for integer argument!"); return false; } +// parser<unsigned> implementation +// +bool parser<unsigned>::parse(Option &O, const char *ArgName, + const std::string &Arg, unsigned &Value) { + char *End; + long long int V = strtoll(Arg.c_str(), &End, 0); + Value = (unsigned)V; + if (*End != 0 || V < 0 || Value != V) + return O.error(": '" + Arg + "' value invalid for uint argument!"); + return false; +} + // parser<double>/parser<float> implementation // static bool parseDouble(Option &O, const std::string &Arg, double &Value) { |