#include class MyClass { BRUSSEL_CLASS() public: BRUSSEL_PROPERTY(GETTER GetName, SETTER SetName) std::string name; BRUSSEL_PROPERTY(GETTER auto, SETTER auto) std::string tag; BRUSSEL_PROPERTY() int foo; BRUSSEL_PROPERTY() int bar; public: const std::string& GetName() const { return name; } void SetName(std::string name) { this->name = std::move(name); } }; namespace MyNamespace { struct Base { BRUSSEL_CLASS(InheritanceHiearchy) }; struct DerviedFoo : public Base { BRUSSEL_CLASS() }; struct DerviedBar : Base { BRUSSEL_CLASS() }; } #include