Thread overview | ||||||
---|---|---|---|---|---|---|
|
September 15, 2011 port c macro to D | ||||
---|---|---|---|---|
| ||||
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~");"; } But I wonder, if there is another clean solution for this? Any regards. Matthias |
September 15, 2011 Re: port c macro to D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthias Pleh | Am 15.09.2011, 13:37 Uhr, schrieb Matthias Pleh <user@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.
|
September 15, 2011 Re: port c macro to D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Trass3r | On 15.09.2011 13:48, Trass3r wrote: > If you are willing to write V(+1,-1,+1) instead you can just turn them > into functions. really a good point! :) > Also by static function you probably mean private in D. No, I meant for mixin I nead static functions, but I just realized, it also works without the static keyword. |
September 15, 2011 Re: port c macro to D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthias Pleh | >> Also by static function you probably mean private in D.
> No, I meant for mixin I nead static functions, but I just realized,
> it also works without the static keyword.
I think static has no meaning in global scope, only in function scope where it tells the compiler you don't want a closure.
|
Copyright © 1999-2021 by the D Language Foundation