Дано:
interface ISome
{
virtual void f1()=0;
virtual void f2()=0;
virtual void f3()=0;
virtual void operator()()=0;
};
// нужно получить что-то подобное
// либо в виде енума:
enum E_ISomeOffsets
{
eOff_f1 = 0x0, // индекс для f1()
eOff_f1 = 0x2, // индекс для f3()
eOff_operator_braked = 0x3, // индекс для operator()()
};
// либо в виде макроса:
#define __OFF_ISome_f1__ 0x0
#define __OFF_ISome_f3__ 0x2
#define __OFF_ISome_operator_braked__ 0x3
Т.е. задача сводится к вычислению на/перед этапе/этапом компиляции смещений для виртуальных функций —
нужно по заданным интерфейсам сгенерировать величины смещения для указанных методов.
Перегруженных методов нет, наследование пока не рассматриваем.
У кого какие мысли?
Поделитесь пожалуйста