196a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer//===--- OptSpecifier.h - Option Specifiers ---------------------*- C++ -*-===// 296a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer// 396a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer// The LLVM Compiler Infrastructure 496a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer// 596a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer// This file is distributed under the University of Illinois Open Source 696a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer// License. See LICENSE.TXT for details. 796a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer// 896a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer//===----------------------------------------------------------------------===// 996a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 10674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#ifndef LLVM_OPTION_OPTSPECIFIER_H 11674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#define LLVM_OPTION_OPTSPECIFIER_H 1296a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 13dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/Support/Compiler.h" 14dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 1596a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencernamespace llvm { 1696a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencernamespace opt { 1796a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer class Option; 1896a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 1996a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer /// OptSpecifier - Wrapper class for abstracting references to option IDs. 2096a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer class OptSpecifier { 2196a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer unsigned ID; 2296a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 2396a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer private: 24a39058aaed4540fc37681cad728b99546595b2e8David Blaikie explicit OptSpecifier(bool) LLVM_DELETED_FUNCTION; 2596a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 2696a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer public: 2796a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer OptSpecifier() : ID(0) {} 2896a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer /*implicit*/ OptSpecifier(unsigned _ID) : ID(_ID) {} 2996a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer /*implicit*/ OptSpecifier(const Option *Opt); 3096a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 3196a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer bool isValid() const { return ID != 0; } 3296a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 3396a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer unsigned getID() const { return ID; } 3496a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 3596a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer bool operator==(OptSpecifier Opt) const { return ID == Opt.getID(); } 3696a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer bool operator!=(OptSpecifier Opt) const { return !(*this == Opt); } 3796a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer }; 3896a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer} 3996a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer} 4096a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer 4196a564f2beec8c1930f0640844eec433e03bbce8Michael J. Spencer#endif 42