CommandLine.h revision 5460a1f25d9ddecb5c70667267d66d51af177a99
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 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <llvm/ADT/StringRef.h> 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <llvm/Support/CommandLine.h> 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/Support/FileSystem.h" 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/MC/MCLDDirectory.h" 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//-------------------------------------------------- 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// parser<mcld::sys::fs::Path> 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace llvm { 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace cl { 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaotemplate<> 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass parser<mcld::sys::fs::Path> : public basic_parser<mcld::sys::fs::Path> 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool parse(Option &O, 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao StringRef ArgName, 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao StringRef Arg, 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mcld::sys::fs::Path &Val); 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual const char *getValueName() const { return "path"; } 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao void printOptionDiff(const Option &O, 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const mcld::sys::fs::Path &V, 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao OptVal Default, 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t GlobalWidth) const; 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual void anchor(); 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//-------------------------------------------------- 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// parser<mcld::MCLDDirectory> 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaotemplate<> 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass parser<mcld::MCLDDirectory> : public llvm::cl::basic_parser<mcld::MCLDDirectory> 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool parse(Option &O, StringRef ArgName, StringRef Arg, mcld::MCLDDirectory &Val); 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual const char *getValueName() const { return "directory"; } 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao void printOptionDiff(const Option &O, 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const mcld::MCLDDirectory &V, 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao OptVal Default, 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t GlobalWidth) const; 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual void anchor(); 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of cl 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of llvm 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 64