view 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 source

#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