00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef COMMA_CODEGEN_CODEGENTYPES_HDR_GUARD
00010 #define COMMA_CODEGEN_CODEGENTYPES_HDR_GUARD
00011
00012 #include "comma/ast/AstBase.h"
00013
00014 #include "llvm/DerivedTypes.h"
00015 #include "llvm/Target/TargetData.h"
00016
00017 namespace comma {
00018
00019 class CodeGen;
00020
00021
00022 class CodeGenTypes {
00023
00024 public:
00025 CodeGenTypes(const CodeGen &CG) : CG(CG) { }
00026
00027 const llvm::Type *lowerType(Type *type);
00028
00029 const llvm::Type *lowerType(DomainType *type);
00030 const llvm::Type *lowerType(CarrierType *type);
00031 const llvm::IntegerType *lowerType(EnumerationType *type);
00032 const llvm::FunctionType *lowerType(const SubroutineType *type);
00033 const llvm::IntegerType *lowerType(const TypedefType *type);
00034 const llvm::IntegerType *lowerType(const IntegerType *type);
00035
00036 private:
00037 const CodeGen &CG;
00038
00039 const llvm::IntegerType *getTypeForWidth(unsigned numBits);
00040 };
00041
00042 };
00043
00044 #endif