diff ir/irtypefunction.h @ 1364:46f6365a50d7

Added IrTypeFunction and IrTypeDelegate and eliminated IrDType. This means the Type::ir field can be removed. It's the final part needed for the move to a slightly more sane type system. Now the whole thing just needs to be cleaned up :P Added -v-cg switch, which right now just prints "codegen: module.name (module/name.d)" to stdout, this can really help figuring out where, in some complex build command, things go wrong.
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Sat, 16 May 2009 18:19:52 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ir/irtypefunction.h	Sat May 16 18:19:52 2009 +0200
@@ -0,0 +1,42 @@
+#ifndef __LDC_IR_IRTYPEFUNCTION_H__
+#define __LDC_IR_IRTYPEFUNCTION_H__
+
+#include "ir/irtype.h"
+
+class IrFuncTy;
+
+///
+class IrTypeFunction : public IrType
+{
+public:
+    ///
+    IrTypeFunction(Type* dt);
+
+    ///
+    IrTypeFunction* isFunction()  { return this; }
+
+    ///
+    const llvm::Type* buildType();
+
+    IrFuncTy* fty() { return irfty; }
+
+protected:
+    ///
+    IrFuncTy* irfty;
+};
+
+///
+class IrTypeDelegate : public IrType
+{
+public:
+    ///
+    IrTypeDelegate(Type* dt);
+
+    ///
+    IrTypeDelegate* isDelegate()    { return this; }
+
+    ///
+    const llvm::Type* buildType();
+};
+
+#endif