This was a requirement because visual design environments need to a way to expose a component's properties and events, and to provide a way to edit them in a consistent, customizable and extendable manner. With this in mind the framework allows the developer to query an object for its Class , which in turn provides access to the class's name, superclass, Properties, Events and Methods. Class is an abstract base class that template classes device from. This will prove useful when distributed features creep in. A property is defined as some class attribute that is provided access to via getter and setter methods.
Properties can also be collections of other objects.
This of course assumes a default constructor is available. In order for the RTTI to work in the Framework developers of derived classes must do three things for their classes to participate in the Framework. On Windows I use guidgen.exe to create UUIDs. What the macros end up creating is a public nested class used to register your class that you're writing. The above macros generate the following inline code for the developer of the Foo class.