LINUX.ORG.RU

История изменений

Исправление kvpfs, (текущая версия) :

Можно одним препроцессором:

$ cat file.hpp
HIDE(
	class Qwerty
	{
	public:
)
		DECL(void, fn, ())
		DECL(void, fn2, ())
		DECL(void, fn3, ())
HIDE(
	};
)

Далее приинклуживаем в нужных местах file.hpp с нужными HIDE и DECL, условно:

static map &get() {
#define HIDE(...)
#define DECL(ret, name, args)  {#name, name}
    static map m{
#include "file.hpp"
    };
    return m;
#undef HIDE
#undef DECL
}

Исправление kvpfs, :

Можно одним препроцессором:

$ cat file.hpp
HIDE(
	class Qwerty
	{
	public:
)
		DECL(void, fn, ());
		DECL(void, fn2, ());
		DECL(void, fn3, ());
HIDE(
	};
)

Далее приинклуживаем в нужных местах file.hpp с нужными HIDE и DECL, условно:

static map &get() {
#define HIDE(...)
#define DECL(ret, name, args)  {#name, name}
    static map m{
#include "file.hpp"
    };
    return m;
#undef HIDE
#undef DECL
}

Исходная версия kvpfs, :

Можно одним препроцессором:

$ cat file.hpp
HIDE(
	class Qwerty
	{
	public:
)
		DECL(void, fn, ());
		DECL(void, fn2, ());
		DECL(void, fn3, ());
HIDE(
	};
)

Далее приинклуживаем в нужных местах file.hpp с нужными HIDE и DECL, условно:

static map &get() {
#define HIDE(...)
#define DECL(ret, name, args)  {#name, name}
    static map m{
#include "file.hpp"
    };
    return m;
#undef HIDE
#undef DECL
}