CommandLine.h revision d0fbbb227051be16931a1aa9b4a7722ac039c698
15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- CommandLine.h ------------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifndef MCLD_COMMANDLINE_H 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MCLD_COMMANDLINE_H 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h> 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/FileSystem.h> 15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/MC/ZOption.h> 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 17d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao#include <llvm/ADT/StringRef.h> 18d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao#include <llvm/Support/CommandLine.h> 19d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 20d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao#include <string> 21d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace llvm { 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace cl { 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 25d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===----------------------------------------------------------------------===// 26d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao// SearchDirParser 27d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===----------------------------------------------------------------------===// 28d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaoclass SearchDirParser : public llvm::cl::basic_parser<std::string> 29d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao{ 30d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaopublic: 31d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao // parse - Return true on error. 32d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao bool parse(Option &pOption, 33d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao StringRef pArgName, 34d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao StringRef pArg, 35d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao std::string &pValue); 36d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 37d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao const char *getValueName() const { return "searchdir"; } 38d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 39d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao void printOptionDiff(const Option &pOption, 40d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao StringRef pValue, 41d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao OptVal pDefault, 42d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao size_t pGlobalWidth) const; 43d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 44d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao void anchor(); 45d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao}; 46d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 47d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===----------------------------------------------------------------------===// 48d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao// parser<mcld::sys::fs::Path> 49d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===----------------------------------------------------------------------===// 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaotemplate<> 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass parser<mcld::sys::fs::Path> : public basic_parser<mcld::sys::fs::Path> 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool parse(Option &O, 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao StringRef ArgName, 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao StringRef Arg, 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mcld::sys::fs::Path &Val); 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual const char *getValueName() const { return "path"; } 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao void printOptionDiff(const Option &O, 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const mcld::sys::fs::Path &V, 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao OptVal Default, 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t GlobalWidth) const; 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual void anchor(); 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 67d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===----------------------------------------------------------------------===// 68affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// parser<mcld::ZOption> 69d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao//===----------------------------------------------------------------------===// 70affc150dc44fab1911775a49636d0ce85333b634Zonr Changtemplate<> 71affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass parser<mcld::ZOption> : public llvm::cl::basic_parser<mcld::ZOption> 72affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{ 73affc150dc44fab1911775a49636d0ce85333b634Zonr Changpublic: 74affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool parse(Option &O, StringRef ArgName, StringRef Arg, mcld::ZOption &Val); 75affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 76affc150dc44fab1911775a49636d0ce85333b634Zonr Chang virtual const char *getValueName() const { return "z-option"; } 77affc150dc44fab1911775a49636d0ce85333b634Zonr Chang void printOptionDiff(const Option &O, 78affc150dc44fab1911775a49636d0ce85333b634Zonr Chang const mcld::ZOption &V, 79affc150dc44fab1911775a49636d0ce85333b634Zonr Chang OptVal Default, 80affc150dc44fab1911775a49636d0ce85333b634Zonr Chang size_t GlobalWidth) const; 81affc150dc44fab1911775a49636d0ce85333b634Zonr Chang virtual void anchor(); 82affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}; 83affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of cl 855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of llvm 865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 89