Files
ldc/gen/rttibuilder.h
Tomas Lindquist Olsen d80de9deb3 Cleaned up TypeInfo_Struct.
Fixed problem with DtoConstSize_t taking a size_t argument, this is not enough for cross compiling from 32bit host to a 64bit target. It now takes uint64_t. There's probably a lot of similar case around to code ...
2009-05-17 04:41:10 +02:00

40 lines
1007 B
C

#ifndef __LDC_GEN_RTTIBUILDER_H__
#define __LDC_GEN_RTTIBUILDER_H__
#include "llvm/Constant.h"
#include "llvm/ADT/SmallVector.h"
struct ClassDeclaration;
struct TypeClass;
struct IrStruct;
struct TypeInfoBuilder
{
ClassDeclaration* base;
TypeClass* basetype;
IrStruct* baseir;
// 10 is enough for any D1 typeinfo
llvm::SmallVector<llvm::Constant*, 10> inits;
TypeInfoBuilder(ClassDeclaration* base_class);
void push(llvm::Constant* C);
void push_null_vp();
void push_null_void_array();
void push_uint(unsigned u);
void push_size(uint64_t s);
void push_string(const char* str);
void push_typeinfo(Type* t);
void push_classinfo(ClassDeclaration* cd);
void push_funcptr(FuncDeclaration* fd);
void push_void_array(size_t dim, llvm::Constant* ptr);
void push_void_array(llvm::Constant* CI, Type* valtype, Dsymbol* sym);
/// Creates the initializer constant and assigns it to the global.
void finalize(IrGlobal* tid);
};
#endif