1 //===- ClangAttrEmitter.h - Generate Clang attribute handling =-*- C++ -*--===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // These tablegen backends emit Clang attribute processing code 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef CLANGATTR_EMITTER_H 15 #define CLANGATTR_EMITTER_H 16 17 #include "TableGenBackend.h" 18 19 namespace llvm { 20 21 /// ClangAttrClassEmitter - class emits the class defintions for attributes for 22 /// clang. 23 class ClangAttrClassEmitter : public TableGenBackend { 24 RecordKeeper &Records; 25 26 public: ClangAttrClassEmitter(RecordKeeper & R)27 explicit ClangAttrClassEmitter(RecordKeeper &R) 28 : Records(R) 29 {} 30 31 void run(raw_ostream &OS); 32 }; 33 34 /// ClangAttrImplEmitter - class emits the class method defintions for 35 /// attributes for clang. 36 class ClangAttrImplEmitter : public TableGenBackend { 37 RecordKeeper &Records; 38 39 public: ClangAttrImplEmitter(RecordKeeper & R)40 explicit ClangAttrImplEmitter(RecordKeeper &R) 41 : Records(R) 42 {} 43 44 void run(raw_ostream &OS); 45 }; 46 47 /// ClangAttrListEmitter - class emits the enumeration list for attributes for 48 /// clang. 49 class ClangAttrListEmitter : public TableGenBackend { 50 RecordKeeper &Records; 51 52 public: ClangAttrListEmitter(RecordKeeper & R)53 explicit ClangAttrListEmitter(RecordKeeper &R) 54 : Records(R) 55 {} 56 57 void run(raw_ostream &OS); 58 }; 59 60 /// ClangAttrPCHReadEmitter - class emits the code to read an attribute from 61 /// a clang precompiled header. 62 class ClangAttrPCHReadEmitter : public TableGenBackend { 63 RecordKeeper &Records; 64 65 public: ClangAttrPCHReadEmitter(RecordKeeper & R)66 explicit ClangAttrPCHReadEmitter(RecordKeeper &R) 67 : Records(R) 68 {} 69 70 void run(raw_ostream &OS); 71 }; 72 73 /// ClangAttrPCHWriteEmitter - class emits the code to read an attribute from 74 /// a clang precompiled header. 75 class ClangAttrPCHWriteEmitter : public TableGenBackend { 76 RecordKeeper &Records; 77 78 public: ClangAttrPCHWriteEmitter(RecordKeeper & R)79 explicit ClangAttrPCHWriteEmitter(RecordKeeper &R) 80 : Records(R) 81 {} 82 83 void run(raw_ostream &OS); 84 }; 85 86 /// ClangAttrSpellingListEmitter - class emits the list of spellings for attributes for 87 /// clang. 88 class ClangAttrSpellingListEmitter : public TableGenBackend { 89 RecordKeeper &Records; 90 91 public: ClangAttrSpellingListEmitter(RecordKeeper & R)92 explicit ClangAttrSpellingListEmitter(RecordKeeper &R) 93 : Records(R) 94 {} 95 96 void run(raw_ostream &OS); 97 }; 98 99 } 100 101 #endif 102