00001
00002
00003
00004
00005
00006
00007
00008
00009
00013
00014
00015 #ifndef COMMA_BASIC_ATTRIBUTES_HDR_GUARD
00016 #define COMMA_BASIC_ATTRIBUTES_HDR_GUARD
00017
00018 #include "llvm/ADT/StringRef.h"
00019
00020 namespace comma {
00021
00022 class IdentifierPool;
00023
00024 namespace attrib {
00025
00029 enum AttributeID {
00030 UNKNOWN_ATTRIBUTE,
00031
00032
00033
00034
00035 First,
00036 Pos,
00037 Val,
00038 Last,
00039
00040
00041
00042
00043 Range,
00044
00045
00046 FIRST_ATTRIB = First,
00047 LAST_ATTRIB = Range,
00048
00049 FIRST_EXPR_ATTRIB = First,
00050 LAST_EXPR_ATTRIB = Last
00051 };
00052
00055 void markAttributeIdentifiers(IdentifierPool &idPool);
00056
00059 AttributeID getAttributeID(const char *start, const char *end);
00060
00063 inline AttributeID getAttributeID(llvm::StringRef &name) {
00064 return getAttributeID(name.begin(), name.end());
00065 }
00066
00069 const char *getAttributeString(AttributeID ID);
00070
00072 inline bool isExprAttibute(AttributeID ID) {
00073 return (FIRST_EXPR_ATTRIB <= ID) && (ID <= LAST_EXPR_ATTRIB);
00074 }
00075
00076 }
00077
00078 }
00079
00080 #endif