Как создать плоский список всех членов и типов в структуре или классе C++? ⇐ Python

Программы на Python
Anonymous
Как создать плоский список всех членов и типов в структуре или классе C++?

Сообщение Anonymous »

Я пытаюсь создать плоский вывод всех членов и их типов для данной структуры или класса C++, включая унаследованные члены.
Например, для следующих классов:

Код: Выделить всё

class ParentClass {
int a;
std::string b;
};

class MemberA {
int foo;
float bar;
};

class MemberB {
int baz;
float bot;
};

class MyClass : ParentClass {
MemberA memberA1;
MemberA memberA2;
MemberB memberB;
int top;
};
Я хотел бы получить такой результат:

Код: Выделить всё

MyClass(ParentClass).a(int)
MyClass(ParentClass).b(std::string)
MyClass.memberA1(MemberA).foo(int)
MyClass.memberA1(MemberA).bar(float)
MyClass.memberA2(MemberA).foo(int)
MyClass.memberA2(MemberA).bar(float)
MyClass.memberB(MemberB).baz(int)
MyClass.memberB(MemberB).bot(float)
MyClass.top(int)
Цель — создать всеобъемлющий, простой для анализа текстовый вывод, который можно использовать в других инструментах.
Что я хочу Я уже пробовал:
  • Разбор PDB-файлов: Я работаю в Visual Studio 2019, но этот подход не дал результатов. удовлетворительный результат.
  • Использование DIA в C++: Однако я столкнулся с проблемами COM, возможно, из-за ИТ-политики компании.
    < li>Использование библиотеки Python pdbparse: К сожалению, я получил ошибку «Неподдерживаемый тип файла». Похоже, библиотека плохо поддерживается для новых форматов PDB.
  • Отражение C++20: Я пытался использовать функции отражения в C++20. , но не добился желаемых результатов.
Мои следующие действия:
  • Углубимся в отражение C++20, хотя это кажется сложным.
  • Пользовательская генерация Doxygen, поскольку Doxygen уже предоставляет исчерпывающую документацию функции.
Вопрос:
Есть ли другие подходы, которые мне следует рассмотреть? Любые идеи и предложения приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/790 ... uct-or-cla

Вернуться в «Python»