Using std::string requires `#include <string>', says gcc-2.95.3.
[oota-llvm.git] / utils / TableGen / CodeGenWrappers.h
1 //===- CodeGenWrappers.h - Code Generation Class Wrappers -------*- C++ -*-===//
2 //
3 // These classes wrap target description classes used by the various code
4 // generation TableGen backends.  This makes it easier to access the data and
5 // provides a single place that needs to check it for validity.  All of these
6 // classes throw exceptions on error conditions.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef CODEGENWRAPPERS_H
11 #define CODEGENWRAPPERS_H
12
13 #include "llvm/CodeGen/ValueTypes.h"
14 #include <iosfwd>
15 #include <string>
16 #include <vector>
17 class Record;
18 class RecordKeeper;
19
20 /// getValueType - Return the MVT::ValueType that the specified TableGen record
21 /// corresponds to.
22 MVT::ValueType getValueType(Record *Rec);
23
24 std::ostream &operator<<(std::ostream &OS, MVT::ValueType T);
25 std::string getName(MVT::ValueType T);
26 std::string getEnumName(MVT::ValueType T);
27
28
29 /// CodeGenTarget - This class corresponds to the Target class in the .td files.
30 ///
31 class CodeGenTarget {
32   Record *TargetRec;
33   std::vector<Record*> CalleeSavedRegisters;
34   MVT::ValueType PointerType;
35
36 public:
37   CodeGenTarget();
38
39   Record *getTargetRecord() const { return TargetRec; }
40   const std::string &getName() const;
41
42   const std::vector<Record*> &getCalleeSavedRegisters() const {
43     return CalleeSavedRegisters;
44   }
45
46   MVT::ValueType getPointerType() const { return PointerType; }
47
48   // getInstructionSet - Return the InstructionSet object...
49   Record *getInstructionSet() const;
50
51   // getInstructionSet - Return the CodeGenInstructionSet object for this
52   // target, lazily reading it from the record keeper as needed.
53   // CodeGenInstructionSet *getInstructionSet -
54 };
55
56 #endif