| //===--- 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 "clang/Basic/LangOptions.h" |
| #include "clang/Basic/TargetInfo.h" |
| |
| namespace clang { |
| |
| class IdentifierInfo; |
| |
| enum class AttrSyntax { |
| /// 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 [] Microsoft-style attribute? |
| Microsoft, |
| // Is the identifier known as a C++-style attribute? |
| CXX, |
| // Is the identifier known as a C-style attribute? |
| C, |
| // Is the identifier known as a pragma attribute? |
| Pragma |
| }; |
| |
| /// Return the version number associated with the attribute if we |
| /// recognize and implement the attribute specified by the given information. |
| int hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope, |
| const IdentifierInfo *Attr, const TargetInfo &Target, |
| const LangOptions &LangOpts); |
| |
| } // end namespace clang |
| |
| #endif // LLVM_CLANG_BASIC_ATTRIBUTES_H |