static code generation

js.mdnq js_adddot+mdng at gmail.com
Sat Dec 15 16:00:23 PST 2012


On Saturday, 15 December 2012 at 23:04:37 UTC, r_m_r wrote:
> On 12/16/2012 04:00 AM, js.mdnq wrote:
>> Now, the next step is to be able to "insert" code into the 
>> struct! ;)
>
> how about this: http://dpaste.dzfl.pl/8161d00a
>
> regards,
> r_m_r

No, it's backwards! ;)

Or, sort of what one wants to do is:

template MasterStruct_A(alias f, string c = "")
{
	enum F = f;
	
	struct S
	{
		int X;
		int Y;
		
		this(int x, int y) { X = x; Y= y; }
		
		mixin (c);
	}
}

template UserStruct(alias f)
{
	enum F = f;
	
	struct S
	{
		int A;
		int B;	
	}
}

and mixin the UserStruct.S with the MasterStruct_A

something like

mixin (genStruct!(MasterStruct_A, UserStruct, "s3");

which is equivalent of to the following

	struct S
	{
		int X;
		int Y;
		
		this(int x, int y) { X = x; Y= y; }
		
                 int A;
                 int B;
	}

S s3;

This, then basically adds the ability to do partial structs(or 
classes) relatively easily(although not as easy if the compiler 
did it automatically).


More information about the Digitalmars-d-learn mailing list