Chris Thomasson wrote:
Quote:
"Adrian Hawryluk" <adrian.hawryluk-at-gmail.com@nospam.comwrote in message
news:u%RMh.3219$6z3.553@edtnps82... Quote:
>Does anyone know of a way to manipulate a macro list to remove either the
>beginning or the end element? I.e. Given:
>>
> #define ELEMENTS EL(1) EL(2) EL(3)
>>
>Is there any manipulation to get just EL(1) EL(2) out of ELEMENTS?
| [...]
>
#include <cstdio>
>
#define PLACE_X(x)x
#define PLACE(x)PLACE_X(x)
#define QUOTE_X(x)#x
#define QUOTE(x)QUOTE_X(x)
#define STRIPL_X(x, y)PLACE(x)
#define STRIPL(x)PLACE(STRIPL_X)x
#define STRIPR_X(x, y)PLACE(y)
#define STRIPR(x)PLACE(STRIPR_X)x
>
#define MYLIST() (node1, (node2, (node3, null)))
>
#define MYLIST_X(l)\
STRIPL(l)STRIPL(STRIPR(l))
>
>
/*** Static API Declaration
_________________________________***/
static char prompt_getchar(char const*);
#define promptexit_getchar(vzmp_buf)\
((int)prompt_getchar((vzmp_buf)))
>
>
>
/*** Static API Definition
_________________________________***/
>
/* Entry
-------------------*/
int main(void) {
{
printf("%s\n", QUOTE(MYLIST()));
>
printf("%s\n", QUOTE(MYLIST_X(MYLIST())));
>
} return promptexit_getchar("\n\n--- press <ENTERto exit ---\n");
}
>
/* Displays a prompt and waits on getchar
-------------------*/
char prompt_getchar(char const *buf) {
printf("%s", buf);
return getchar();
}
>
>
>
Does that work for you?
>
>
|
Interesting, but that gives:
////////////////////////////////////////////////////////////////////////
static char prompt_getchar(char const*);
//[...]
int main(void) {
{
printf("%s\n", "(node1, (node2, (node3, null)))");
printf("%s\n", "node1node2");
} return ((int)prompt_getchar(("\n\n--- press <ENTERto exit ---\n")));
}
char prompt_getchar(char const *buf) {
printf("%s", buf);
return getchar();
}
////////////////////////////////////////////////////////////////////////
Which shows that it is not recursively callable.
I think that I will use Boost's Meta Programming Language (MPL). The
way I was coding, I was heading in that direction (using a self included
file with macros to generate essentially the same code on separate
levels) anyway. Though Boost's MPL has now put my programming skills on
a whole new level. For me to generate that library to its current
degree would have taken me years if not decades (probably took them that
long too ;)).
Thanks anyway though.
Adrian
--
__________________________________________________ ___________________
\/Adrian_Hawryluk BSc. - Specialties: UML, OOPD, Real-Time Systems\/
\ _---_ Q. What are you doing here? _---_ /
\ / | A. Just surf'n the net, teaching and | \ /
\__/___\___ learning, learning and teaching. You?_____/___\__/
\/______[blog:__http://adrians-musings.blogspot.com/]______\/