*** empty log message ***
authorChris Lattner <sabre@nondot.org>
Tue, 23 Jul 2002 17:15:12 +0000 (17:15 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 23 Jul 2002 17:15:12 +0000 (17:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2999 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/CommandLine.cpp
support/lib/Support/CommandLine.cpp

index 001fdac476d68829b5d1730d1948a3e5585e92ae..cafc14d3206d83f90bb80827b4cbac3ce9dda3b1 100644 (file)
@@ -435,6 +435,22 @@ void Option::addArgument(const char *ArgStr) {
   }
 }
 
+void Option::removeArgument(const char *ArgStr) {
+  if (ArgStr[0]) {
+    assert(getOpts()[ArgStr] == this && "Arg not in map!");
+    getOpts().erase(ArgStr);
+  } else if (getFormattingFlag() == Positional) {
+    vector<Option*>::iterator I =
+      std::find(getPositionalOpts().begin(), getPositionalOpts().end(), this);
+    assert(I != getPositionalOpts().end() && "Arg not registered!");
+    getPositionalOpts().erase(I);
+  } else if (getNumOccurancesFlag() == ConsumeAfter) {
+    assert(!getPositionalOpts().empty() && getPositionalOpts()[0] == this &&
+           "Arg not registered correctly!");
+    getPositionalOpts().erase(getPositionalOpts().begin());
+  }
+}
+
 
 // getValueStr - Get the value description string, using "DefaultMsg" if nothing
 // has been specified yet.
@@ -571,6 +587,22 @@ void parser<string>::printOptionInfo(const Option &O,
 // generic_parser_base implementation
 //
 
+// findOption - Return the option number corresponding to the specified
+// argument string.  If the option is not found, getNumOptions() is returned.
+//
+unsigned generic_parser_base::findOption(const char *Name) {
+  unsigned i = 0, e = getNumOptions();
+  string N(Name);
+
+  while (i != e)
+    if (getOption(i) == N)
+      return i;
+    else
+      ++i;
+  return e;
+}
+
+
 // Return the width of the option tag for printing...
 unsigned generic_parser_base::getOptionWidth(const Option &O) const {
   if (O.hasArgStr()) {
index 001fdac476d68829b5d1730d1948a3e5585e92ae..cafc14d3206d83f90bb80827b4cbac3ce9dda3b1 100644 (file)
@@ -435,6 +435,22 @@ void Option::addArgument(const char *ArgStr) {
   }
 }
 
+void Option::removeArgument(const char *ArgStr) {
+  if (ArgStr[0]) {
+    assert(getOpts()[ArgStr] == this && "Arg not in map!");
+    getOpts().erase(ArgStr);
+  } else if (getFormattingFlag() == Positional) {
+    vector<Option*>::iterator I =
+      std::find(getPositionalOpts().begin(), getPositionalOpts().end(), this);
+    assert(I != getPositionalOpts().end() && "Arg not registered!");
+    getPositionalOpts().erase(I);
+  } else if (getNumOccurancesFlag() == ConsumeAfter) {
+    assert(!getPositionalOpts().empty() && getPositionalOpts()[0] == this &&
+           "Arg not registered correctly!");
+    getPositionalOpts().erase(getPositionalOpts().begin());
+  }
+}
+
 
 // getValueStr - Get the value description string, using "DefaultMsg" if nothing
 // has been specified yet.
@@ -571,6 +587,22 @@ void parser<string>::printOptionInfo(const Option &O,
 // generic_parser_base implementation
 //
 
+// findOption - Return the option number corresponding to the specified
+// argument string.  If the option is not found, getNumOptions() is returned.
+//
+unsigned generic_parser_base::findOption(const char *Name) {
+  unsigned i = 0, e = getNumOptions();
+  string N(Name);
+
+  while (i != e)
+    if (getOption(i) == N)
+      return i;
+    else
+      ++i;
+  return e;
+}
+
+
 // Return the width of the option tag for printing...
 unsigned generic_parser_base::getOptionWidth(const Option &O) const {
   if (O.hasArgStr()) {