Mirror Publisher's description
from Matus Chochlik
The aim of the Mirror library is to provide both compile-time and run-time meta-data describing C++ constructs like namespaces, types typedef-ined types, enums, classes with their base classes, member variables, constructors, member functions, etc. a
The aim of the Mirror library is to provide both compile-time and run-time meta-data describing C++ constructs like namespaces, types typedef-ined types, enums, classes with their base classes, member variables, constructors, member functions, etc. and to provide uniform and generic interfaces for their introspection.
Because standard C++ provides only a very limited set of meta-information to build upon, a potential drawback of this library is, that namespaces, types, classes, etc. need to be registered before they can be reflected. However Mirror tries to make the process of registering simple by providing a set of user-friendly registering macros and has the native and many of the other common types, classes, templates and namespaces pre-registered. Furthermore, a portable tool for automatic / semi-automatic registering is being worked on. Once registered the meta-data can be reused in a large number of situations.
Mirror is designed with the principle of stratification in mind and tries to be as less intrusive as possible. New or existing classes do not need to be designed to directly support Mirror and no Mirror-related code is necessary in the class' definition, as far as some general guidelines are followed. This allows you to do reflection even on third-party code that you cannot modify.
Reusability: The meta-data provided by Mirror is reusable in many situations and for many different purposes.
Flexibility: Mirror and the additional layers built on top of it allow to access the provided meta-data both at compile-time and run-time in a functional and object-oriented manner depending on the application needs.
Encapsulation: Mirror and the additional layers provide interfaces for easy access to program meta-data.
Stratification: Mirror is non-intrusive and separates the meta-level from the base-level constructs it reflects.
Ontological correspondence: The meta-level facilities correspond to the ontology of the base-level C++ language constructs which they reflect.
Completeness: Mirror tries to provide as much useful meta-data as possible, including various specifiers, iteration of namespace members and much more.
Ease of use: Although Mirror allows to do very complicated reflective (meta-)programming, simple things are kept simple.
Cooperation with other librares: Mirror can be used with the introspection facilites provided by the standard library and other libraries.
What's New in This Release:В· Added the apply_modifier meta-function to Mirror's MetaTypes
В· Added the mp::protect meta-function protecting placeholder expression
В· from immediate expansion
В· Updates to the Puddle's compile-time integer to make it more static
В· The specifier wrappers in Puddle now use compile-time booleans as operator result
В· Added the first version of the Rubber type-erasure utility
System Requirements:No special requirements.
Program Release Status: Minor Update
Program Install Support: Install and Uninstall