Skip to content
Snippets Groups Projects
Commit b111898c authored by Benedikt Hegner's avatar Benedikt Hegner
Browse files

modernization of Property

This is a major rewrite of the system of `Property` classes. Started as 
the implementation of GAUDI-1214, it continued as a review of 
`IProperty` and `PropertyMgr`, to end up in a complete rewrite
(and optimization) of `PropertyWithValue`.

* Fixes GAUDI-1214
  - added missing `declareProperty` signature
  - added `PropertyHolder` (an updated `PropertyMgr`)
  - adapted all properties in Gaudi
* improved use of `PropertyHolder`
  - use inheritance instead of composition
  - removed ~200 (duplicated) lines of code in GaudiKernel
* optimization of Property (fixes GAUDI-1229)
  - use templates and automatic code generation to handle efficiently 
    both value and reference properties
    - avoid creation of values on the heap (see GAUDI-1229)
    - removed the *owned* boolean flag
    - improved usability of properties (e.g. begin/end wrappers for 
      C++11 loops, increment/decrement operators...)
    - deprecated use of C arrays as properties
  - merged features of `PropertyWithVerifier`, `SimpleProperty` and
    `SimplePropertyRef` into `PropertyWithValue`
  - deduplication of name and doc strings via 
    [`boost::string_ref`](http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html)
    and a static storage  (see GAUDI-1229)
* Fixes GAUDI-1205
* add deprecation warnings in service accessors of `Algorithm` (@graven)
* renamed `Property` base class to `Gaudi::Details::PropertyBase` and
 `PropertyWithValue` to `Gaudi::Property`
  - added backward compatibility type aliases (but not compatible with
    forward declarations of `class Property`, which should be replaced
    by `#include "GaudiKernel/PropertyFwd.h"`)
* added macro `GAUDI_PROPERTY_v2` to allow easy implementation of
  backward compatible changes in derived projects (e.g. when user code
  relied on `DoubleProperty` having a verifier)
* Fixes GAUDI-1268

The changes are as backward compatible as much as possible (except if
you explicitly inherit from `SimpleProperty`, or you forward declared
`class Property`, which now are typedefs), but must be validated in the
experiment frameworks.

See merge request !182
parents ce0d4b7f 806da057
No related branches found
No related tags found
1 merge request!182modernization of Property
Pipeline #
Showing
with 2201 additions and 2872 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment