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