port c macro to D

Trass3r un at known.com
Thu Sep 15 04:48:27 PDT 2011


Am 15.09.2011, 13:37 Uhr, schrieb Matthias Pleh <user at example.net>:

> When porting c-code to D, I come consitently to the problem,
> how to convert such a c-macro:
>
> #define V(a,b,c) glVertex3d( a size, b size, c size );
> #define N(a,b,c) glNormal3d( a, b, c );
> N( 1.0, 0.0, 0.0); V(+,-,+); V(+,-,-); V(+,+,-); V(+,+,+);
> ...
>
> Ok, I could just write it out, but that's not the case.
> Sometimes I just want to keep it small and clear as in this example.
> I've started with some static functions and use it in mixins:
>
> static string V(string a, string b, string c) {
> 	return "glVertex3d("~a~" size, "~b~" size, "~c~" size)";	
> }
> static string N(string a, string b, string c) {
> 	return "glNormal3d("~a~","~b~","~c~");";
> }

If you are willing to write V(+1,-1,+1) instead you can just turn them  
into functions.
Also by static function you probably mean private in D.


More information about the Digitalmars-d-learn mailing list