Reflex, reflection for C++
Presented by Dr. Stefan ROISER on 14 Feb 2006 from 14:00 to 14:20
Type: oral presentation
Session: Software Components and Libraries
Track: Software Components and Libraries
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.