
Greetings, I would like to announce, that a very early version of 'mirror' library is available in the boost sandbox at http://svn.boost.org/svn/boost/sandbox/mirror/ . Mirror is a compile-time reflection library intended to be proposed as a boost library (in case of interest) at some point in the future. The current version of mirror allows to register and then reflect namespaces, types, typedefined types, classes, base classes, and class member attributes. It allows to inspect: - the name of a namespace and it's scope. - the base name of a type and it's scope (currently, types defined on the global scope, in a namespace and inside of a class are supported) - the list of base classes of a class, including the type of inheritance (virtual/non-virtual) and access type (private/protected/public) - the list of types of the member attributes (own or all, including inherited) - the names of the member attributes It allows to get and set the value of a member attribute. It supports attributes with getter/setter functions. It tries to be as less intrusive as possible, in some cases the reflected class does not need to be changed at all, even if it has non-public member attributes, in other cases a one line PP macro has to be inserted into the definition of the class. There are several examples, (some of them still incomplete and rather poorly commented), showing, how the library can be used. /libs/examples/registering/namespaces.cpp - shows how namespaces can be registered and which properties can be inspected. /libs/examples/registering/types.cpp - shows how to register types and typedefined types and how to get the meta-data describing them. /libs/examples/registering/classes.cpp - this is a fairly complicated example about registering and reflecting classes, base classes and various types of class member attributes. /libs/examples/registering/virtual_bases.cpp - shows how to register virtual base classes and how to access all member attributes, including the inherited ones. The examples were succesfully compiled with MS Visual C++ 2008EE, on Vista g++ 4.1.3, on Ubuntu There are unfortunatelly no jamfiles (yet). The (sore excuse for ;) ) documentation is still rather sketchy and currently contains only a basic overview and the goals of the library. As said, the library is still in early stages of development and many things may (and will) be changed yet. Anyway, I would certainly appreciate any opinions, constructive critique, ideas about new useful features, etc. Best regards, -- ________________ ::matus_chochlik
participants (1)
-
Matus Chochlik