1//===-- UnresolvedSet.h - Unresolved sets of declarations ------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines the WeakInfo class, which is used to store 11// information about the target of a #pragma weak directive. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_CLANG_SEMA_WEAK_H 16#define LLVM_CLANG_SEMA_WEAK_H 17 18#include "clang/Basic/SourceLocation.h" 19 20namespace clang { 21 22class IdentifierInfo; 23 24/// \brief Captures information about a \#pragma weak directive. 25class WeakInfo { 26 IdentifierInfo *alias; // alias (optional) 27 SourceLocation loc; // for diagnostics 28 bool used; // identifier later declared? 29public: 30 WeakInfo() 31 : alias(nullptr), loc(SourceLocation()), used(false) {} 32 WeakInfo(IdentifierInfo *Alias, SourceLocation Loc) 33 : alias(Alias), loc(Loc), used(false) {} 34 inline IdentifierInfo * getAlias() const { return alias; } 35 inline SourceLocation getLocation() const { return loc; } 36 void setUsed(bool Used=true) { used = Used; } 37 inline bool getUsed() { return used; } 38 bool operator==(WeakInfo RHS) const { 39 return alias == RHS.getAlias() && loc == RHS.getLocation(); 40 } 41 bool operator!=(WeakInfo RHS) const { return !(*this == RHS); } 42}; 43 44} // end namespace clang 45 46#endif // LLVM_CLANG_SEMA_WEAK_H 47