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