BxCppDev / Bayeux

Core Persistency, Geometry and Data Processing C++ Library for Particle and Nuclear Physics Experiments
GNU General Public License v3.0
4 stars 9 forks source link

Refactor and modernize datatools/configuration/io classes #65

Closed drbenmorgan closed 1 year ago

drbenmorgan commented 4 years ago

Split out ascii_io, variant_preprocessor, and variant_reporting classes into separate headers/srcs, one per class. This makes maintenance and understanding easier, with an eye to supporting configuration-from-database that SuperNEMO will need. This requires clearer use and understanding of the variant_preprocessor and its interaction with other parts of the configuration system (kernel, path expansion, assumption of filesystem).

There is no change to interfaces other than the addition of a constructor to variant_preprocessor taking the repository to be used along with the flags. This allows clients to avoid using the datatools kernel, if they need, and to follow "construction is initialization" as recommended by the ISO C++ Guidelines.

The datatools/configuration/io.h header is retained so clients of these classes do not need to change #includes. It simply forwards to the three new headers.

Modernization following ISO C++ Guidelines has also been done with: