1274958Sdim//===--- Attributes.h - Attributes header -----------------------*- C++ -*-===// 2274958Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6274958Sdim// 7274958Sdim//===----------------------------------------------------------------------===// 8274958Sdim 9274958Sdim#ifndef LLVM_CLANG_BASIC_ATTRIBUTES_H 10274958Sdim#define LLVM_CLANG_BASIC_ATTRIBUTES_H 11274958Sdim 12280031Sdim#include "clang/Basic/LangOptions.h" 13296417Sdim#include "clang/Basic/TargetInfo.h" 14274958Sdim 15274958Sdimnamespace clang { 16274958Sdim 17274958Sdimclass IdentifierInfo; 18274958Sdim 19274958Sdimenum class AttrSyntax { 20274958Sdim /// Is the identifier known as a GNU-style attribute? 21274958Sdim GNU, 22274958Sdim /// Is the identifier known as a __declspec-style attribute? 23274958Sdim Declspec, 24314564Sdim /// Is the identifier known as a [] Microsoft-style attribute? 25314564Sdim Microsoft, 26274958Sdim // Is the identifier known as a C++-style attribute? 27274958Sdim CXX, 28327952Sdim // Is the identifier known as a C-style attribute? 29327952Sdim C, 30274958Sdim // Is the identifier known as a pragma attribute? 31274958Sdim Pragma 32274958Sdim}; 33274958Sdim 34341825Sdim/// Return the version number associated with the attribute if we 35280031Sdim/// recognize and implement the attribute specified by the given information. 36280031Sdimint hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope, 37296417Sdim const IdentifierInfo *Attr, const TargetInfo &Target, 38280031Sdim const LangOptions &LangOpts); 39274958Sdim 40274958Sdim} // end namespace clang 41274958Sdim 42274958Sdim#endif // LLVM_CLANG_BASIC_ATTRIBUTES_H 43