Attributes.h revision 651f13cea278ec967336033dd032faef0e9fc2ec
1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines//===--- Attributes.h - Attributes header -----------------------*- C++ -*-===// 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// The LLVM Compiler Infrastructure 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// This file is distributed under the University of Illinois Open Source 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// License. See LICENSE.TXT for details. 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines//===----------------------------------------------------------------------===// 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#ifndef LLVM_CLANG_BASIC_ATTRIBUTES_H 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#define LLVM_CLANG_BASIC_ATTRIBUTES_H 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include "llvm/ADT/Triple.h" 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include "clang/Basic/LangOptions.h" 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesnamespace clang { 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclass IdentifierInfo; 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesenum class AttrSyntax { 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines /// Is the attribute identifier generally known for any syntax? 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines Generic, 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines /// Is the identifier known as a GNU-style attribute? 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines GNU, 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines /// Is the identifier known as a __declspec-style attribute? 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines Declspec, 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // Is the identifier known as a C++-style attribute? 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines CXX 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/// \brief Return true if we recognize and implement the attribute specified by 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/// the given information. 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesbool hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope, 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const IdentifierInfo *Attr, const llvm::Triple &T, 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const LangOptions &LangOpts); 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} // end namespace clang 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#endif // LLVM_CLANG_BASIC_ATTRIBUTES_H 40