1*0a6a1f1dSLionel Sambuc //===--- Sanitizers.cpp - C Language Family Language Options ----*- C++ -*-===// 2*0a6a1f1dSLionel Sambuc // 3*0a6a1f1dSLionel Sambuc // The LLVM Compiler Infrastructure 4*0a6a1f1dSLionel Sambuc // 5*0a6a1f1dSLionel Sambuc // This file is distributed under the University of Illinois Open Source 6*0a6a1f1dSLionel Sambuc // License. See LICENSE.TXT for details. 7*0a6a1f1dSLionel Sambuc // 8*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===// 9*0a6a1f1dSLionel Sambuc // 10*0a6a1f1dSLionel Sambuc // This file defines the classes from Sanitizers.h 11*0a6a1f1dSLionel Sambuc // 12*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===// 13*0a6a1f1dSLionel Sambuc #include "clang/Basic/Sanitizers.h" 14*0a6a1f1dSLionel Sambuc 15*0a6a1f1dSLionel Sambuc using namespace clang; 16*0a6a1f1dSLionel Sambuc SanitizerSet()17*0a6a1f1dSLionel SambucSanitizerSet::SanitizerSet() : Kinds(0) {} 18*0a6a1f1dSLionel Sambuc has(SanitizerKind K) const19*0a6a1f1dSLionel Sambucbool SanitizerSet::has(SanitizerKind K) const { 20*0a6a1f1dSLionel Sambuc unsigned Bit = static_cast<unsigned>(K); 21*0a6a1f1dSLionel Sambuc return Kinds & (1 << Bit); 22*0a6a1f1dSLionel Sambuc } 23*0a6a1f1dSLionel Sambuc set(SanitizerKind K,bool Value)24*0a6a1f1dSLionel Sambucvoid SanitizerSet::set(SanitizerKind K, bool Value) { 25*0a6a1f1dSLionel Sambuc unsigned Bit = static_cast<unsigned>(K); 26*0a6a1f1dSLionel Sambuc Kinds = Value ? (Kinds | (1 << Bit)) : (Kinds & ~(1 << Bit)); 27*0a6a1f1dSLionel Sambuc } 28*0a6a1f1dSLionel Sambuc clear()29*0a6a1f1dSLionel Sambucvoid SanitizerSet::clear() { 30*0a6a1f1dSLionel Sambuc Kinds = 0; 31*0a6a1f1dSLionel Sambuc } 32*0a6a1f1dSLionel Sambuc empty() const33*0a6a1f1dSLionel Sambucbool SanitizerSet::empty() const { 34*0a6a1f1dSLionel Sambuc return Kinds == 0; 35*0a6a1f1dSLionel Sambuc } 36