add new function
[oota-llvm.git] / include / Support / CommandLine.h
index 5febbcf1c9b3cf7136220435d4d5bc63bd79be2a..0a3cb6f320b7cac125beabdd433097a9c3b34652 100644 (file)
@@ -1,4 +1,11 @@
-//===- Support/CommandLine.h - Flexible Command line parser ------*- C++ -*--=//
+//===- Support/CommandLine.h - Flexible Command line parser -----*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
 //
 // This class implements a command line argument processor that is useful when
 // creating a tool.  It provides a simple, minimalistic interface that is easily
@@ -20,6 +27,7 @@
 #include <cassert>
 #include "boost/type_traits/object_traits.hpp"
 
+namespace llvm {
 /// cl Namespace - This namespace contains all of the command line option
 /// processing machinery.  It is intentionally a short name to make qualified
 /// usage concise.
@@ -35,7 +43,7 @@ void ParseCommandLineOptions(int &argc, char **argv,
 // ParseEnvironmentOptions - Environment variable option processing alternate
 //                           entry point.
 //
-void ParseEnvironmentOptions(char *progName, char *envvar,
+void ParseEnvironmentOptions(const char *progName, const char *envvar,
                              const char *Overview = 0);
 
 //===----------------------------------------------------------------------===//
@@ -140,19 +148,23 @@ public:
 
   inline enum NumOccurrences getNumOccurrencesFlag() const {
     int NO = Flags & OccurrencesMask;
-    return NO ? (enum NumOccurrences)NO : getNumOccurrencesFlagDefault();
+    return NO ? static_cast<enum NumOccurrences>(NO)
+              : getNumOccurrencesFlagDefault();
   }
   inline enum ValueExpected getValueExpectedFlag() const {
     int VE = Flags & ValueMask;
-    return VE ? (enum ValueExpected)VE : getValueExpectedFlagDefault();
+    return VE ? static_cast<enum ValueExpected>(VE)
+              : getValueExpectedFlagDefault();
   }
   inline enum OptionHidden getOptionHiddenFlag() const {
     int OH = Flags & HiddenMask;
-    return OH ? (enum OptionHidden)OH : getOptionHiddenFlagDefault();
+    return OH ? static_cast<enum OptionHidden>(OH)
+              : getOptionHiddenFlagDefault();
   }
   inline enum FormattingFlags getFormattingFlag() const {
     int OH = Flags & FormattingMask;
-    return OH ? (enum FormattingFlags)OH : getFormattingFlagDefault();
+    return OH ? static_cast<enum FormattingFlags>(OH)
+              : getFormattingFlagDefault();
   }
   inline unsigned getMiscFlags() const {
     return Flags & MiscMask;
@@ -299,7 +311,7 @@ public:
 
     // Process the varargs portion of the values...
     while (const char *EnumName = va_arg(ValueArgs, const char *)) {
-      DataType EnumVal = (DataType)va_arg(ValueArgs, int);
+      DataType EnumVal = static_cast<DataType>(va_arg(ValueArgs, int));
       const char *EnumDesc = va_arg(ValueArgs, const char *);
       Values.push_back(std::make_pair(EnumName,      // Add value to value map
                                       std::make_pair(EnumVal, EnumDesc)));
@@ -444,7 +456,8 @@ public:
   template <class DT>
   void addLiteralOption(const char *Name, const DT &V, const char *HelpStr) {
     assert(findOption(Name) == Values.size() && "Option already exists!");
-    Values.push_back(std::make_pair(Name, std::make_pair((DataType)V,HelpStr)));
+    Values.push_back(std::make_pair(Name,
+                             std::make_pair(static_cast<DataType>(V),HelpStr)));
   }
 
   // removeLiteralOption - Remove the specified option.
@@ -642,7 +655,8 @@ class opt_storage {
 
   void check() {
     assert(Location != 0 && "cl::location(...) not specified for a command "
-           "line option with external storage!");
+           "line option with external storage, "
+           "or cl::init specified before cl::location()!!");
   }
 public:
   opt_storage() : Location(0) {}
@@ -732,14 +746,17 @@ class opt : public Option,
   }
 public:
   // setInitialValue - Used by the cl::init modifier...
-  void setInitialValue(const DataType &V) { setValue(V); }
+  void setInitialValue(const DataType &V) { this->setValue(V); }
 
   ParserClass &getParser() { return Parser; }
 
-  operator DataType() const { return getValue(); }
+  operator DataType() const { return this->getValue(); }
 
   template<class T>
-  DataType &operator=(const T &Val) { setValue(Val); return getValue(); }
+  DataType &operator=(const T &Val) {
+    this->setValue(Val);
+    return this->getValue();
+  }
 
   // One option...
   template<class M0t>
@@ -1011,4 +1028,6 @@ struct aliasopt {
 
 } // End namespace cl
 
+} // End namespace llvm
+
 #endif