Attributes.h revision 296417
1317019Sdim//===--- Attributes.h - Attributes header -----------------------*- C++ -*-===//
2317019Sdim//
3353358Sdim//                     The LLVM Compiler Infrastructure
4353358Sdim//
5353358Sdim// This file is distributed under the University of Illinois Open Source
6317019Sdim// License. See LICENSE.TXT for details.
7317019Sdim//
8317019Sdim//===----------------------------------------------------------------------===//
9317019Sdim
10317019Sdim#ifndef LLVM_CLANG_BASIC_ATTRIBUTES_H
11317019Sdim#define LLVM_CLANG_BASIC_ATTRIBUTES_H
12317019Sdim
13317019Sdim#include "clang/Basic/LangOptions.h"
14317019Sdim#include "clang/Basic/TargetInfo.h"
15317019Sdim
16317019Sdimnamespace clang {
17317019Sdim
18317019Sdimclass IdentifierInfo;
19317019Sdim
20317019Sdimenum class AttrSyntax {
21317019Sdim  /// Is the identifier known as a GNU-style attribute?
22317019Sdim  GNU,
23317019Sdim  /// Is the identifier known as a __declspec-style attribute?
24317019Sdim  Declspec,
25317019Sdim  // Is the identifier known as a C++-style attribute?
26317019Sdim  CXX,
27317019Sdim  // Is the identifier known as a pragma attribute?
28317019Sdim  Pragma
29317019Sdim};
30317019Sdim
31317019Sdim/// \brief Return the version number associated with the attribute if we
32317019Sdim/// recognize and implement the attribute specified by the given information.
33317019Sdimint hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope,
34317019Sdim                 const IdentifierInfo *Attr, const TargetInfo &Target,
35317019Sdim                 const LangOptions &LangOpts);
36317019Sdim
37317019Sdim} // end namespace clang
38341825Sdim
39317019Sdim#endif // LLVM_CLANG_BASIC_ATTRIBUTES_H
40317019Sdim