| //===--- Attributes.h - Attributes header -----------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_CLANG_BASIC_ATTRIBUTES_H |
| #define LLVM_CLANG_BASIC_ATTRIBUTES_H |
| |
| #include "llvm/ADT/Triple.h" |
| #include "clang/Basic/LangOptions.h" |
| |
| namespace clang { |
| |
| class IdentifierInfo; |
| |
| enum class AttrSyntax { |
| /// Is the attribute identifier generally known for any syntax? |
| Generic, |
| /// Is the identifier known as a GNU-style attribute? |
| GNU, |
| /// Is the identifier known as a __declspec-style attribute? |
| Declspec, |
| // Is the identifier known as a C++-style attribute? |
| CXX |
| }; |
| |
| /// \brief Return true if we recognize and implement the attribute specified by |
| /// the given information. |
| bool hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope, |
| const IdentifierInfo *Attr, const llvm::Triple &T, |
| const LangOptions &LangOpts); |
| |
| } // end namespace clang |
| |
| #endif // LLVM_CLANG_BASIC_ATTRIBUTES_H |