Thread overview | ||||||
---|---|---|---|---|---|---|
|
May 22, 2007 Convert this C define to D | ||||
---|---|---|---|---|
| ||||
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 Re: Convert this C define to D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | 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 Re: Convert this C define to D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Keep | 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 Re: Convert this C define to D | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | Regan Heath wrote: > Daniel Keep Wrote: [snip] >> 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 '!'. |
Copyright © 1999-2021 by the D Language Foundation