//===------------ ARMDecoderEmitter.h - Decoder Generator -------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file is part of the ARM Disassembler.
// It contains the tablegen backend declaration ARMDecoderEmitter.
//
//===----------------------------------------------------------------------===//

#ifndef ARMDECODEREMITTER_H
#define ARMDECODEREMITTER_H

#include "llvm/Support/DataTypes.h"
#include "llvm/TableGen/TableGenBackend.h"

namespace llvm {

class ARMDecoderEmitter : public TableGenBackend {
  RecordKeeper &Records;
public:
  ARMDecoderEmitter(RecordKeeper &R) : Records(R) {
    initBackend();
  }
    
  ~ARMDecoderEmitter() {
    shutdownBackend();
  }

  // run - Output the code emitter
  void run(raw_ostream &o);
    
private:
  // Helper class for ARMDecoderEmitter.
  class ARMDEBackend;

  ARMDEBackend *Backend;
    
  void initBackend();
  void shutdownBackend();
};

} // end llvm namespace

#endif
