Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can one make a 'passthru' function in C++ using macros or metaprogramming?

Tags:

So I have a series of global functions, say:

foo_f1(int a, int b, char *c);
foo_f2(int a);
foo_f3(char *a);

I want to make a C++ wrapper around these, something like:

MyFoo::f1(int a, int b, char* c); 
MyFoo::f2(int a);
MyFoo::f3(char* a);

There's about 40 functions like this, 35 of them I just want to pass through to the global function, the other 5 I want to do something different with.

Ideally the implementation of MyFoo.cpp would be something like:

PASSTHRU( f1, (int a, int b, char *c) );
PASSTHRU( f2, (int a) );

MyFoo::f3(char *a)
{
   //do my own thing here
}

But I'm having trouble figuring out an elegant way to make the above PASSTHRU macro.

What I really need is something like the mythical X getArgs() below:

MyFoo::f1(int a, int b, char *c)
{
  X args = getArgs();
  args++; //skip past implicit this..
  ::f1(args);  //pass args to global function 
}

But short of dropping into assembly I can't find a good implementation of getArgs().