From: David B. <dav...@da...> - 2008-01-22 19:03:12
|
So, don't ask me why, but I was sitting here thinking about the Swig macro preprocessor this morning and started wondering if I could actually write recursive functions in the preprocessor. Well, the answer seems to be yes. Check out some examples: %define FACTORIAL(N) #if N == 0 1 #else (N)*FACTORIAL(N-1) #endif %enddef %constant FOO = FACTORIAL(6); // Creates a constant 720 in the target Or, this one (which I especially like) %define %ApplyPrefix(prefix,first,rest...) %rename(prefix ## first) first; #if `rest` != "" %ApplyPrefix(prefix,rest) #endif %enddef %ApplyPrefix(yow,foo,bar,spam,grok) If you run swig -E on this, you'll see that it generated a whol sequence of %rename directives. Okay, I'll go crawl back into my cave and file this one in the "positively bad ideas" drawer. Ha! Cheers, Dave |