view dmd/Initializer.d @ 79:43073c7c7769

updated to 2.035 also implemented a few missing functions still crashes in Import.importAll though
author Trass3r
date Mon, 30 Aug 2010 03:57:51 +0200
parents 10317f0c89a5
children e28b18c23469
line wrap: on
line source

module dmd.Initializer;

import dmd.Loc;
import dmd.Scope;
import dmd.Type;
import dmd.Util;
import dmd.ArrayTypes;
import dmd.Expression;
import dmd.OutBuffer;
import dmd.HdrGenState;
import dmd.VoidInitializer;
import dmd.StructInitializer;
import dmd.ArrayInitializer;
import dmd.ExpInitializer;

import dmd.backend.dt_t;

class Initializer
{
    Loc loc;

    this(Loc loc)
	{
		this.loc = loc;
	}
	
    Initializer syntaxCopy()
	{
		return this;
	}
	
    Initializer semantic(Scope sc, Type t)
	{
		return this;
	}
	
    Type inferType(Scope sc)
	{
    	error(loc, "cannot infer type from initializer");
    	halt();
    	return Type.terror;
	}
	
	abstract Expression toExpression();
	
	abstract void toCBuffer(OutBuffer buf, HdrGenState* hgs);
	
	string toChars()
	{
		OutBuffer buf;
		HdrGenState hgs;

		buf = new OutBuffer();
		toCBuffer(buf, &hgs);
		return buf.toChars();
	}

    static Initializers arraySyntaxCopy(Initializers ai)
	{
		 Initializers a = null;

			if (ai)
			{
			a = new Initializers();
			a.setDim(ai.dim);
			for (int i = 0; i < a.dim; i++)
			{   Initializer e = cast(Initializer)ai.data[i];

				e = e.syntaxCopy();
				a.data[i] = cast(void*) e;
			}
			}
			return a;
	}

	dt_t* toDt()
	{
		assert(false);
	}

	VoidInitializer isVoidInitializer() { return null; }
	
    StructInitializer isStructInitializer()  { return null; }
    
	ArrayInitializer isArrayInitializer()  { return null; }
    
	ExpInitializer isExpInitializer()  { return null; }
}