Speaker
Dr
Stefan Roiser
(CERN)
Description
Reflection is the ability of a programming language to introspect and interact with
it's own data structures at runtime without prior knowledge about them. Many recent
languages (e.g. Java, Python) provide this ability inherently but it is lacking for
C++. This paper will describe a software package, Reflex, which provides reflection
capabilities for C++. Reflex was developed in the context of the LCG Applications
Area at CERN. The package tries to comply fully to the ISO/IEC standard for C++ which
was taken as the main design guideline. In addition it is light, standalone and non
intrusive towards the user code. This paper will focus on the user API of the package
and its underlying design issues, the way to generate reflection information from
arbitrary C++ definitions and recent additions. Reflex has been adapted by several
projects at CERN e.g. POOL, RAL, COOL. Recently Reflex started to be integrated with
the ROOT data analysis framework where it will strongly collaborate with the CINT
interpreter. An overview of the plans and developments in this area will be
discussed. An outlook to possible further modifications e.g. IO/Persistency, Python
bindings, plugin management will be given.
Primary author
Dr
Stefan Roiser
(CERN)
Co-authors
Dr
Pere Mato
(CERN)
Dr
Philippe Canal
(FNAL)