Mercurial > projects > ldc
diff gen/rttibuilder.h @ 1374:e630ff79e10d
Cleaned up TypeInfo generation, still need to do TypeInfo_Struct/Tuple. Eventually do ClassInfo and ModuleInfo as well using same interface.
author | Tomas Lindquist Olsen <tomas.l.olsen gmail com> |
---|---|
date | Sun, 17 May 2009 03:10:55 +0200 |
parents | |
children | 63f4afd01036 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/rttibuilder.h Sun May 17 03:10:55 2009 +0200 @@ -0,0 +1,34 @@ +#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_typeinfo(Type* t); + void push_classinfo(ClassDeclaration* cd); + void push_string(const char* str); + void push_null_void_array(); + void push_void_array(size_t dim, llvm::Constant* ptr); + void push_void_array(llvm::Constant* CI, Type* valtype, Dsymbol* sym); + void finalize(IrGlobal* tid); +}; + +#endif