1249259Sdim//===--- OptSpecifier.h - Option Specifiers ---------------------*- C++ -*-===// 2249259Sdim// 3249259Sdim// The LLVM Compiler Infrastructure 4249259Sdim// 5249259Sdim// This file is distributed under the University of Illinois Open Source 6249259Sdim// License. See LICENSE.TXT for details. 7249259Sdim// 8249259Sdim//===----------------------------------------------------------------------===// 9249259Sdim 10249259Sdim#ifndef LLVM_OPTION_OPTSPECIFIER_H 11249259Sdim#define LLVM_OPTION_OPTSPECIFIER_H 12249259Sdim 13249259Sdimnamespace llvm { 14249259Sdimnamespace opt { 15249259Sdim class Option; 16249259Sdim 17249259Sdim /// OptSpecifier - Wrapper class for abstracting references to option IDs. 18249259Sdim class OptSpecifier { 19249259Sdim unsigned ID; 20249259Sdim 21249259Sdim private: 22249259Sdim explicit OptSpecifier(bool) LLVM_DELETED_FUNCTION; 23249259Sdim 24249259Sdim public: 25249259Sdim OptSpecifier() : ID(0) {} 26249259Sdim /*implicit*/ OptSpecifier(unsigned _ID) : ID(_ID) {} 27249259Sdim /*implicit*/ OptSpecifier(const Option *Opt); 28249259Sdim 29249259Sdim bool isValid() const { return ID != 0; } 30249259Sdim 31249259Sdim unsigned getID() const { return ID; } 32249259Sdim 33249259Sdim bool operator==(OptSpecifier Opt) const { return ID == Opt.getID(); } 34249259Sdim bool operator!=(OptSpecifier Opt) const { return !(*this == Opt); } 35249259Sdim }; 36249259Sdim} 37249259Sdim} 38249259Sdim 39249259Sdim#endif 40