digitalmars.D.learn - Convert this C define to D
- Regan Heath (10/10) May 22 2007 Hi all,
- Daniel Keep (16/33) May 22 2007 Assuming that STACK is an actual type...
- Regan Heath (12/37) May 22 2007 So, using the above this:
- Frits van Bommel (9/32) May 22 2007 Almost. You'd have to do this:
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. ReganAssuming 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: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. ReganHi 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. ReganAssuming that STACK is an actual type... template STACK_OF(type) { alias STACK STACK_OF; }
May 22 2007
Regan Heath wrote:Daniel Keep Wrote:[snip]Almost. You'd have to do this: --- struct foo { STACK_OF!(Bob) bobStack; } --- Note the '!'.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.
May 22 2007