1 //===- llvm/TableGen/TableGenBackend.h - Backend base class -----*- 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 // The TableGenBackend class is provided as a common interface for all TableGen 11 // backends. It provides useful services and an standardized interface. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_TABLEGEN_TABLEGENBACKEND_H 16 #define LLVM_TABLEGEN_TABLEGENBACKEND_H 17 18 #include "llvm/Support/raw_ostream.h" 19 #include <string> 20 21 namespace llvm { 22 23 class Record; 24 class RecordKeeper; 25 26 struct TableGenBackend { 27 virtual ~TableGenBackend() {} 28 29 // run - All TableGen backends should implement the run method, which should 30 // be the main entry point. 31 virtual void run(raw_ostream &OS) = 0; 32 33 34 public: // Useful helper routines... 35 /// EmitSourceFileHeader - Output a LLVM style file header to the specified 36 /// ostream. 37 void EmitSourceFileHeader(const std::string &Desc, raw_ostream &OS) const; 38 39 }; 40 41 } // End llvm namespace 42 43 #endif 44