#pragma once #define DEF_PROP(name, type, ...) \ private: \ type m_##name {__VA_ARGS__}; \ public: \ void set_##name(type new_prop_value) { m_##name = new_prop_value; wants_repaint(); } \ type get_##name() { return m_##name; } \ private: