digitalmars.D.learn - Convert this C define to D
- Regan Heath <regan netmail.co.nz> May 22 2007
- Daniel Keep <daniel.keep.lists gmail.com> May 22 2007
- Regan Heath <regan netmail.co.nz> May 22 2007
- Frits van Bommel <fvbommel REMwOVExCAPSs.nl> May 22 2007
Hi all,
I have this C macro:
#define STACK_OF(type) STACK
usage:
struct foo {
STACK_OF(Bob) bobStack;
}
lets ignore the fact that the replacement STACK doesn't include with the type
it was given, in this case/stage it's not important.
I feel like I should be able to replace this C macro with a template/mixin of
some kind but as templates/mixins aren't my strongest d-foo (kungfoo) technique
I figured I had best ask for opinions.
Regan
May 22 2007
Regan Heath wrote:Hi all, I have this C macro: #define STACK_OF(type) STACK usage: struct foo { STACK_OF(Bob) bobStack; } lets ignore the fact that the replacement STACK doesn't include with the type it was given, in this case/stage it's not important. I feel like I should be able to replace this C macro with a template/mixin of some kind but as templates/mixins aren't my strongest d-foo (kungfoo) technique I figured I had best ask for opinions. Regan
Assuming that STACK is an actual type... template STACK_OF(type) { alias STACK STACK_OF; } -- Daniel -- int getRandomNumber() { return 4; // chosen by fair dice roll. // guaranteed to be random. } http://xkcd.com/ v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP http://hackerkey.com/
May 22 2007
Daniel Keep Wrote:Regan Heath wrote:Hi all, I have this C macro: #define STACK_OF(type) STACK usage: struct foo { STACK_OF(Bob) bobStack; } lets ignore the fact that the replacement STACK doesn't include with the type it was given, in this case/stage it's not important. I feel like I should be able to replace this C macro with a template/mixin of some kind but as templates/mixins aren't my strongest d-foo (kungfoo) technique I figured I had best ask for opinions. Regan
Assuming that STACK is an actual type... template STACK_OF(type) { alias STACK STACK_OF; }
So, using the above this: struct foo { STACK_OF(Bob) bobStack; } results in/becomes/is equivalent to this: struct foo { STACK bobStack; } ? Yes, STACK is a type, a structure which has previously been defined. Regan
May 22 2007
Regan Heath wrote:Daniel Keep Wrote:
Assuming that STACK is an actual type... template STACK_OF(type) { alias STACK STACK_OF; }
So, using the above this: struct foo { STACK_OF(Bob) bobStack; } results in/becomes/is equivalent to this: struct foo { STACK bobStack; } ? Yes, STACK is a type, a structure which has previously been defined.
Almost. You'd have to do this: --- struct foo { STACK_OF!(Bob) bobStack; } --- Note the '!'.
May 22 2007








Frits van Bommel <fvbommel REMwOVExCAPSs.nl>