Как создать макрос PROPERTY, который бы можно использовать следующим образом:
#define PROPERTY(config_type, property_name, childs, ...)
...
class BaseConfig
{
public:
PROPERTY("int", "name", "child1", "child1_1")
PROPERTY("float", "name2", "child2",)
};
Который бы разворачивался в следующий класс:
class BaseConfig
{
public:
int name()
{
...
}
float name2()
{
...
}
};
Внутри функций мне надо получить childs.
Макрос написать можно, но есть две проблемы - variadic macros и тип возвращаемого значения. Но... кто нам мешает написать макрос под наши задачи? Предлагаю для начала сделать просто два макроса
#define INT_PROPERTY1(config_type, property_name, childs) \
int property_name() { \
tinyxml2::XMLHandle xml_handle(this->config); \
xml_handle.FirstChildElement(#childs).FindFirstChild(#property_name).ToElement()->IntText();\
} \
#define INT_PROPERTY2(config_type, property_name, childs1, childs2) \
int property_name() { \
tinyxml2::XMLHandle xml_handle(this->config); \
xml_handle.FirstChildElement(#childs1).FirstChildElement(#childs2).FindFirstChild(#property_name).ToElement()->IntText();\
} \
да, можно и дальше продолжать, но как по мне - этого уже хватит на много. А если добавить строки - вообще будет отлично.
Следующим этапом должно быть написание макроса, который получает конечную функцию (IntText) и подставляет, что бы не дублировать.
Но как мне кажется, тут лучше написать парочку шаблонов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как установитьNET FRAMEWORK без взаимодействия пользователя? То есть программа проверяет если на PC не установлен
Я делаю прогу на андроидИ в ней сохранение данных идёт с помощью Shared Preferences