#include "llvm/Support/CommandLine.h"
#include "llvm/ADT/ArrayRef.h"
-#include "llvm/ADT/OwningPtr.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringMap.h"
#include <cerrno>
#include <cstdlib>
#include <map>
-#include <set>
using namespace llvm;
using namespace cl;
// Initialise the general option category.
OptionCategory llvm::cl::GeneralCategory("General options");
-void OptionCategory::registerCategory()
-{
+void OptionCategory::registerCategory() {
+ assert(std::count_if(RegisteredOptionCategories->begin(),
+ RegisteredOptionCategories->end(),
+ [this](const OptionCategory *Category) {
+ return getName() == Category->getName();
+ }) == 0 && "Duplicate option categories");
+
RegisteredOptionCategories->insert(this);
}
static bool ExpandResponseFile(const char *FName, StringSaver &Saver,
TokenizerCallback Tokenizer,
SmallVectorImpl<const char *> &NewArgv) {
- OwningPtr<MemoryBuffer> MemBuf;
+ std::unique_ptr<MemoryBuffer> MemBuf;
if (MemoryBuffer::getFile(FName, MemBuf))
return false;
StringRef Str(MemBuf->getBufferStart(), MemBuf->getBufferSize());
free(Dup);
}
}
- const char *SaveString(const char *Str) LLVM_OVERRIDE {
+ const char *SaveString(const char *Str) override {
char *Dup = strdup(Str);
Dups.push_back(Dup);
return Dup;
MoreHelp->clear();
// Halt the program since help information was printed
- exit(1);
+ exit(0);
}
};
using HelpPrinter::operator= ;
protected:
- virtual void printOptions(StrOptionPairVector &Opts, size_t MaxArgLen) {
+ void printOptions(StrOptionPairVector &Opts, size_t MaxArgLen) override {
std::vector<OptionCategory *> SortedCategories;
std::map<OptionCategory *, std::vector<Option *> > CategorizedOptions;
- std::set<std::string> CategoryNames;
// Collect registered option categories into vector in preparation for
// sorting.
E = RegisteredOptionCategories->end();
I != E; ++I) {
SortedCategories.push_back(*I);
- // FIXME: Move this check to OptionCategory::registerCategory after the
- // problem with analyzer plugins linking to llvm/Support and causing
- // assertion on the duplicate llvm::cl::GeneralCategory is solved.
- assert(CategoryNames.insert((*I)->getName()).second &&
- "Duplicate option categories");
}
// Sort the different option categories alphabetically.
if (OverrideVersionPrinter != 0) {
(*OverrideVersionPrinter)();
- exit(1);
+ exit(0);
}
print();
(*I)();
}
- exit(1);
+ exit(0);
}
};
} // End anonymous namespace