Home | History | Annotate | Line # | Download | only in Basic
      1 //===--- Attributes.h - Attributes header -----------------------*- C++ -*-===//
      2 //
      3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4 // See https://llvm.org/LICENSE.txt for license information.
      5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 
      9 #ifndef LLVM_CLANG_BASIC_ATTRIBUTES_H
     10 #define LLVM_CLANG_BASIC_ATTRIBUTES_H
     11 
     12 #include "clang/Basic/LangOptions.h"
     13 #include "clang/Basic/TargetInfo.h"
     14 
     15 namespace clang {
     16 
     17 class IdentifierInfo;
     18 
     19 enum class AttrSyntax {
     20   /// Is the identifier known as a GNU-style attribute?
     21   GNU,
     22   /// Is the identifier known as a __declspec-style attribute?
     23   Declspec,
     24   /// Is the identifier known as a [] Microsoft-style attribute?
     25   Microsoft,
     26   // Is the identifier known as a C++-style attribute?
     27   CXX,
     28   // Is the identifier known as a C-style attribute?
     29   C,
     30   // Is the identifier known as a pragma attribute?
     31   Pragma
     32 };
     33 
     34 /// Return the version number associated with the attribute if we
     35 /// recognize and implement the attribute specified by the given information.
     36 int hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope,
     37                  const IdentifierInfo *Attr, const TargetInfo &Target,
     38                  const LangOptions &LangOpts);
     39 
     40 } // end namespace clang
     41 
     42 #endif // LLVM_CLANG_BASIC_ATTRIBUTES_H
     43