1226586Sdim//===-- UnresolvedSet.h - Unresolved sets of declarations ------*- C++ -*-===// 2226586Sdim// 3226586Sdim// The LLVM Compiler Infrastructure 4226586Sdim// 5226586Sdim// This file is distributed under the University of Illinois Open Source 6226586Sdim// License. See LICENSE.TXT for details. 7226586Sdim// 8226586Sdim//===----------------------------------------------------------------------===// 9226586Sdim// 10226586Sdim// This file defines the WeakInfo class, which is used to store 11226586Sdim// information about the target of a #pragma weak directive. 12226586Sdim// 13226586Sdim//===----------------------------------------------------------------------===// 14226586Sdim 15226586Sdim#ifndef LLVM_CLANG_SEMA_WEAK_H 16226586Sdim#define LLVM_CLANG_SEMA_WEAK_H 17226586Sdim 18226586Sdim#include "clang/Basic/SourceLocation.h" 19226586Sdim 20226586Sdimnamespace clang { 21226586Sdim 22226586Sdimclass IdentifierInfo; 23226586Sdim 24245431Sdim/// \brief Captures information about a \#pragma weak directive. 25226586Sdimclass WeakInfo { 26226586Sdim IdentifierInfo *alias; // alias (optional) 27226586Sdim SourceLocation loc; // for diagnostics 28226586Sdim bool used; // identifier later declared? 29226586Sdimpublic: 30226586Sdim WeakInfo() 31226586Sdim : alias(0), loc(SourceLocation()), used(false) {} 32226586Sdim WeakInfo(IdentifierInfo *Alias, SourceLocation Loc) 33226586Sdim : alias(Alias), loc(Loc), used(false) {} 34226586Sdim inline IdentifierInfo * getAlias() const { return alias; } 35226586Sdim inline SourceLocation getLocation() const { return loc; } 36226586Sdim void setUsed(bool Used=true) { used = Used; } 37226586Sdim inline bool getUsed() { return used; } 38226586Sdim bool operator==(WeakInfo RHS) const { 39226586Sdim return alias == RHS.getAlias() && loc == RHS.getLocation(); 40226586Sdim } 41226586Sdim bool operator!=(WeakInfo RHS) const { return !(*this == RHS); } 42226586Sdim}; 43226586Sdim 44226586Sdim} // end namespace clang 45226586Sdim 46226586Sdim#endif // LLVM_CLANG_SEMA_WEAK_H 47