| The Gaudi Framework v28r2-patches (bc4ad17a)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

GaudiKernel

    Package : GaudiKernel
    Package manager : Marco Clemencic
    Commit Id: $Format:%H$

    ================================ Gaudi v28r2 =================================

    ! 2017-03-20 - Gerhard Raven, Marco Clemencic (commit 04cfad9)

     - Merge branch 'fix-clang-compilation' into 'master'

       fixed compilation with Clang
        See merge request !294

    ! 2017-03-10 - Charles Leggett (commit 865caee)

     - Merge branch 'dev/condHandle' into 'master'

       DataHandle: add flag to identify Conditions
        See merge request !293

    ! 2017-03-10 - Illya Shapoval (commit 51aa3b1)

     - Merge branch 'schedulers-cleanup' into 'master'

       Add AvalancheSchedulerSvc and clean up the ForwardSchedulerSvc
        See merge request !288

    ! 2017-03-10 - Charles Leggett (commit 6d9a472)

     - Merge branch 'dev/AutoDataLoad' into 'master'

       Attribute unmet INPUT dependencies to a DataLoader Algorithm
        See merge request !269

    ! 2017-03-10 - Gerhard Raven (commit f3d7bff)

     - remove all references to endreq

       See merge request !79

    ! 2017-03-09 - Gerhard Raven (commit 691af74)

     - Make the Handler configuration of Property policy driven

       Closes GAUDI-1276
        See merge request !267

    ! 2017-03-09 - Marco Clemencic (commit 6d7927b)

     - Merge branch 'fix-cmake-config' into 'master'

       fixes to CMake modules
        Closes LBCORE-1304
        See merge request !298

    ! 2017-03-08 - Sebastien Ponce (commit 4228bfb)

     - Made StatEntity more thread safe

       See merge request !275

    ! 2017-03-07 - Gerhard Raven (commit c250ab5)

     - Merge branch 'do-not-require-property-valuetype-default-constructible' into
       'master'

       do not require Gaudi::Property::ValueType to be default constructible
        See merge request !271

    ! 2017-03-01 - Gerhard Raven (commit a32b381)

     - Merge branch 'use-showpoint-in-genconf' into 'master'

       use std::showpoint instead of std::fixed to print numbers
        See merge request !254

    ! 2017-02-23 - Charles Leggett (commit 215f2b1)

     - added ConcurrencyFlags class

       The static ConcurrencyFlags allows easy access to information about the
       number of threads, concurrent events, and processes.
        For running in serial, numThreads == 0, numConcEvents == 0, numProcs == 0,
       useful to distinguish between running serial, and running MT with 1 thread,
       or MP with 1 process.
        See merge request !277

    ! 2017-02-13 - Marco Clemencic (commit 099cad6)

     - consistent repr for Python Configurables

       fixes GAUDI-1290
        See merge request !285

    ! 2017-02-08 - Charles Leggett (commit 09859bd)

     - add sysExecute(EventContext) and extract errorCount from Algorithm base class

       We need to extract the `m_errorCount` variable from the Algorithm base class,
        as it's not important on a per-instance basis, but rather on a job level.
       This is moved to the AlgExecStateSvc.
        This merge request also adds an explicit `IAlgorithm::sysExecute(const
       EventContext&)`, which should become the standard entry point to
       `Algorithm::execute`. This sets the local m_event_context variable, so
       derived classes can get quick access to the current context instead of going
       through the slower thead local `Gaudi::Hive::currentContext()`.
        Note that `IAlgorithm::sysExecute()` has been removed, to avoid "overloaded
       virtual" compiler errors, and should be replaced in all clients with
       `IAlgorithm::sysExecute(EventContext)`, or if the context is not immediately
       available, with `IAlgorithm::sysExecute(Gaudi::Hive::currentContext())`.
        All this is being done in preparation to re-introduce the ReEntrantAlgorithm
       class from merge !177 (see also !274)
        See merge request !273

    ! 2017-02-08 - Marco Clemencic (commit 817be0f)

     - misc CMake fixes

       - fixes GAUDI-1279
       - fixes GAUDI-1288
        See merge request !282

    ! 2017-01-19 - Charles Leggett (commit 453ab80)

     - Fix DataHandleHolderVisitor

       See merge request !268

    ! 2017-01-11 - Chris Jones (commit 8daf40a)

     - Data object handle demangle name in error

       Small improvement to `DataObjectHandle` to use System::typeinfoName to
       extract the type when issuing a mis-match error message. Results in the type
       being de-mangled from something like

       ``` ERROR The type provided for /Event/Rec/Track/BestRichDown is
       14AnyDataWrapperIN5Gaudi6Range_ISt6vectorIPKN4LHCb5TrackESaIS6_EEN9__gnu_cxx17__normal_iteratorIPKS6_S8_EEEEE
       and is different form the one of the object in the store.
       ```
        to

       ``` ERROR The type provided for /Event/Rec/Track/BestRichDown is
       AnyDataWrapper<Gaudi::Range_<std::vector<LHCb::Track
       const*,std::allocator<LHCb::Track const*>
       >,__gnu_cxx::__normal_iterator<LHCb::Track const*
       const*,std::vector<LHCb::Track const*,std::allocator<LHCb::Track const*> > >
       > > and is different from the one of the object in the store.
       ```
        Chris
        See merge request !272

    ================================ Gaudi v28r1 =================================

    ! 2016-12-14 - Attila Krasznahorkay (commit a42ff2a)

     - CMake configuration changes to build Gaudi with optional externals missing

       In the last days I experimented a bit with teaching Gaudi how to build when
       only ROOT, Boost and TBB are available to it. This is the result. As far as I
       can tell the code builds in the same way as the current master branch when
       all possible externals are available. (All the ones available in a full ATLAS
       offline build at least.) And I'm also able to build the project in these
       modes:
         * On Ubuntu 16.04 with the system provided Boost and TBB versions, against
       a privately built ROOT 6 version.
         * On macOS Sierra against privately built Boost, ROOT and TBB versions.
       Both when building the project completely on its own, and when building it
       against an ATLAS externals project.
        Some notes:
         * The code uses C++14 expressions in quite a few places by now. So I raised
       the default C++ standard to C++14. This is the default in ATLAS builds since
       a while, I only saw this as an issue when building Gaudi "on its own" with a
       very minimal configuration command.
         * While the code advertises that it still has support for ROOT 5, it's not
       able to build against it since a wile. Since the updates I put in for TLS
       variables on macOS. (The macros used there are ROOT 6 only.) And this update
       makes things even worse. As the code now relies on not providing the
       definition of some classes to the dictionary generator in GaudiPython that
       are not available. (Because AIDA or XercesC is missing.) While ROOT 6 handles
       this with just a build warning, ROOT 5's genreflex treats this with an ERROR
       message. That I was unable to get rid of.
        So, extended testing is clearly necessary, the configuration code could
       definitely be fine tuned as I probably turned off the build of more source
       files than absolutely necessary, but I think we should move ahead with such a
       configuration organisation.
        See merge request !241

    ! 2016-12-14 - Sebastien Ponce (commit efc88ab)

     - Context fixes

       See merge request !248

    ! 2016-12-07 - Gerhard Raven (commit 291ba41)

     - Allow ADL lookup of parse and toStream

       Currently, if one introduces a `Gaudi::Property<T>`, then there must be a
       corresponding `StatusCode Gaudi::Parsers::parse(T&,const std::string&)` in
       the namespace `Gaudi::Parsers` and a corresponding `void
       Gaudi::Utils::toStream(const T&, std::stream&)` in the namespace
       `Gaudi::Utils`.
        This patch explicitly enables
       [ADL](http://en.cppreference.com/w/cpp/language/adl) lookup (with a fall-back
       to `Gaudi::Parser::parse` and `Gaudi::Utils::toStream`) so that it is
       sufficient to either define `parse` and `toStream` in the namespace in which
       `T` is defined, or add them as `friend` functions to `T`.
        See merge request !242

    ! 2016-12-07 - many contributors (commit dc1b505)

     - port LHCb MT developments to Gaudi master

       among others we have
       - `Gaudi::Functional`: base classes to write algorithms as pure functions
       - `AnyDataWrapper`/`AnyDataHandle`: helper to store any type in the Transient
       Store (DataSvc)
       - fixes to `DataObjectHandle`
       - fixes to `GaudiHive`
       - new tests and examples
       - modernization (removed empty destructors, ...)
        See merge request !245

    ! 2016-11-25 - Charles Leggett (commit b3d9e7e)

     - avoid infinite recursion when de-reffing ServiceHandle

       See merge request !235

    ! 2016-11-10 - Chris Jones (commit bad2bf3)

     - Add accessor to ServiceHandle to allow non const access to service, even from
       a const handle

       See the discussion in gaudi/Gaudi!225
        I am not completely sure what I think of this. I am not completely sold on
       the idea, but can see Services are different beasts to tools.
        I submit this for discussion and testing by Atlas( @leggett I've tested it
       in as far as Gaudi compiles but as in LHCb we have no use case that requires
       it, cannot go much future. It would be good if this MR could be tested
       against Atlas *before* merging this time ;))
        See merge request !233

    ================================ Gaudi v28r0 =================================

    ! 2016-11-08 - Marco Clemencic (commit ec96c27)

     - cleaning up last minute glitches

       - fixed warnings from clang
       - fixed issues with ROOT 6.08
       - minor polishing
       - minor fixes to tests
       - fixed GAUDI-1221
        See merge request !230

    ! 2016-11-04 - Charles Leggett (commit 0eb189a)

     - Use invalid defaults for EvenID parameter inits

       Since zero can be a valid number for various EventID related parameters,
       e.g. run# or event#, we need invalid defaults to be able to distinguish
       between EventIDs that are set with lumiblock info, vs run# info
        See merge request !199

    ! 2016-11-04 - Frank Winklmeier (commit f4ae6f7)

     - Performance improvements for System::getProcessTime (now ~30% faster)

       - Increase test coverage and add performance check to test_GaudiTiming
       - Remove unnecessary calls to getpid (saves ~10ns per query() call):
          - Remove getpid calls in case pid is -1 (self)
          - Remove ugly define that was hiding the getpid() calls in the
            source code
       - Switch from getrusage() to times() (saves ~100ns per call)
       - Only create ProcessHandle for Windows
       - Add templated version of currentTime() so it can be inlined
       - Allow System::getProcess to be inlined (move Windows code to
        constructor)
       - Remove private caches for query() calls as those were not used
        See merge request !228

    ! 2016-11-02 - Charles Leggett (commit 92567c2)

     - make IHiveWhiteBoard::getNumberOfStores() const

       See merge request !229

    ! 2016-11-02 - Chris Jones (commit 6d4d438)

     - Add support for Handle const assignment from non const instances

       Add support for copy assigning or constructing
       `XYZHandle<const T>` from a `XYZHandle<T>`.
        Extended the test `MyGaudiAlg.py` test for this feature and
       `ToolHandle<const T>` support in general.
        Developed due to the discussion in gaudi/Gaudi!215
        See merge request !226

    ! 2016-11-02 - Chris Jones (commit 61952b5)

     - More efficient Toolhandle<T>::get() method

       I would like to use ToolHandle more, but I also want to use it optimally
       efficiently, by which I mean I want inline access to the underlying tool
       pointer, with no validity checks (I always `retrieve()` my tools up front in
       initialize()) and true const behaviour (for thread safety). Essentially what
       I want is `GaudiHandle<T>::get()`, but unfortunately in the current
       implementation this method is hidden behind the virtual
       `ToolHandle<T>::get()` method, that also down casts the tool to `IAlgTool*`
       (so no use for direct usage).
        This MR fixes both these issues. get() is now fully optimal in
       `ToolHandle<T>` as it simply refers back to GaudiHandle in an inline method.
        The `BaseToolHandle<T>::get()` method is just a wrapper that calls a hidden
       (protected) virtual function (`getAsIAlgTool()`) that returns what get()
       previously did.
        I also tightened up the const'ness, providing both const and non-const
       methods that return const and non-const tool pointers respectively.
        I also updated a few methods to remove multiple return statements (which
       normally cause compilers to abort inlining) and adding some `noexcept` here
       and there..
        The only API change is that `ToolHandle<T>::get()` now returns `T*` instead
       of `IAlgTool*`, but this is not a problem as the user can still choose to use
       it as a `IAlgTool*` if they want..
        Gaudi master builds fine with this, not tested any other projects yet.
        cheers Chris
        See merge request !218

    ! 2016-10-29 - Marco Clemencic (commit 5c4b4e0)

     - fixed missing header

       fix compilation after gaudi/Gaudi!223

    ! 2016-10-28 - Roel Aaij (commit dd70115)

     - Fix tool data handle propagation

       Data handles of tools were not "propagated" to their parent algorithm or
       tool. Similarly for sub-algorithms.
        See merge request !223

    ! 2016-10-28 - Marco Clemencic (commit f2881a2)

     - minor fixes for new Property

       - removed deprecation warning in `Gaudi::Details::PropertyBase::clone`
       - removed Property from GaudiPython dictionary
        See merge request !224

    ! 2016-10-28 - Marco Clemencic (commit 7a372bb)

     - fixed a few compilation warnings

       See merge request !221

    ! 2016-10-28 - Charles Leggett (commit b260914)

     - Check msgSvc() is not null

       This fixes a crash in athenaHLT jobs
        fixes ATR-15094
        See merge request !222

    ! 2016-10-27 - Gerhard Raven, Marco Clemencic (commit b111898)

     - 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

    ! 2016-10-26 - Benedikt Hegner (commit 668ce4b)

     - Remove deprecated schedulers

       - remove deprecated RoundRobin, ParallelSequential and Sequential schedulers
        (see GAUDI-1263)
       - remove deprecated copy of state machine interface from IAlgManager.
        This removal has been checked grep'ing the git repo of ATLAS

       See merge request !202

    ! 2016-10-25 - Chris Jones (commit be54ccc)

     - Update GaudiHandle to return const Tool access from const Handle

       via `->` and `*` operators and `get()` method
        Also removed unused `ThreadPoolSvc::getThreadInitTools()`.
        See merge request !217

    ! 2016-10-24 - Attila Krasznahorkay (commit ac4dbc7)

     - Changes to build on MacOS X 10.11

       See merge request !200

    ! 2016-10-24 - Marco Clemencic (commit a8d6605)

     - hidden/fixed "missing override" warnings exposed after !192

       - warnings from external headers are hidden declaring the include directories
       as `-system`
       - warnings from a couple of new files have been fixed
       - warnings in `HistogramSvc` are hidden because unavoidable (see f83c3d8e)
       - warnings related to CLHEP-136 have been hidden with a special trick (see
       0a238135)
        See merge request !205

    ! 2016-10-24 - Chris Jones (commit c0e5c4f)

     - Add support to ToolHandle for const tool interfaces

       Allow use const tool interfaces as in
       ```.cpp ToolHandle<const IMyTool> m_myTool{"MyTool", this};
       ```
        See merge request !215

    ! 2016-10-24 - Gerhard Raven (commit 8db3eb0)

     - remove redundant destructors

       do not specify (virtual) default destructor in derived classes when the base
       class already explicitly defines one
        See merge request !214

    ! 2016-10-19 - Charles Leggett (commit 958570b)

     - Algorithm Execution State Service

       Introduction of AlgExecStateSvc
        All event state information removed from Algorithm base class
       (m_filterPassed, m_isExecuted) as it will cause difficulties with re-entrant
       Algorithms.
        event success/fail flag removed from EventContext
        These flags are moved to be under control of a new service, the
       AlgExecStateSvc, which keeps track of the execution state of all Algorithms,
       and the Event as a whole.
        Algorithm status kept in a new class ```AlgExecState``` which has
       ```
           bool m_filterPassed  {true};
           bool m_isExecuted    {false};
           StatusCode m_execStatus  {StatusCode::FAILURE};
       ```
        AlgExecStateSvc holds an AlgExecState for each Algorithm in each Event
       Slot, as well as an overall ```EventStatus``` for each EventSlot, which can
       be one of

       ```
         Invalid = 0,
         Success = 1,
         AlgFail = 2,
         AlgStall = 3,
         Other = 4
       ```
        Algorithms add themselves to the AlgExecStateSvc upon initialization, but
       the Service's initialization of  the data structures is deferred until the
       first time ```AlgExecStateSvc::reset()``` is called, at which point it's
       probably safe to figure out if there's a WhiteBoard, and the number of slots
       to allocate.
        The EventLoopMgr should call ```AlgExecStateSvc::reset()``` at the start of
       each event. If it's a concurrent EventLoopMgr, it should be
       ```AlgExecStateSvc::reset(EventContext)```, after the EventContext object
       has been updated to reflect the new event.
        Also added an EventContext object to the MinimalEventLoopMgr, so that
       serial/concurrent behaviour is similar.
        Concurrent queries to the AlgExecStateSvc must contain the EventContext, so
       the correct EventSlot can be determined. Serial access is via methods that
       don't have the EventContext as a parameter. For access from Algorithm base
       class (eg from setFilterPassed, isExecuted, etc), if the EventContext ptr
       (m_event_context) in the Algorithm is null, we assume we're running
       serially.
        See merge request !197

    ! 2016-10-19 - Marco Clemencic (commit e2c1f4a)

     - fixes and improvements for ROOT 6.08 and gcc 6.1

       * added option to use or not GCC old C++11 ABI (off by default)
       * added some missing #include for the usual headers clean up in gcc
       * fixed a few places where old GCC behaviour was assumed
       * fixed default C++ standard version for clang >= 3.7
       * fixed GAUDI-1242

        See merge request !187

    ! 2016-10-12 - Chris Jones (commit 5e8fd1c)

     - Default initialise the key value in KeyedObject.

       See merge request !196

    ! 2016-10-12 - Charles Leggett, Marco Clemencic (commit 5b17b33)

     - Add LockedHandle class, that locks/unlocks access around ptr

       usage:
       ```c++ std::mutex the_mutex; Obj *o = new Obj(); LockedHandle<Obj> lh(o,
       &the_mutex); o->doSomething();
       ```

       access to `o->doSomething()` will be protected by a mutex.

       uses a `std::mutex` by default, but this can be overridden via a second
       template arg:

       ```c++ LockedHandle<Obj_TYPE, Mutex_TYPE> lh(obj, &mut);
       ```

       CPPUnit test is also provided

           modified:   GaudiKernel/CMakeLists.txt
          new file:   GaudiKernel/GaudiKernel/LockedHandle.h
          new file:   GaudiKernel/tests/src/test_LockedHandle.cpp

       See merge request !195

    ! 2016-10-12 - Marco Clemencic (commit b5e05a1)

     - improved handling of package version in CMake configuration

       use project version if a package version is not provided
        See GAUDI-1215.
        See merge request !175

    ! 2016-10-03 - Illya Shapoval (commit 95cdba1)

     - A prototype of a scheduler for efficient handling of heterogeneous tasks

       The prototype is described in detail in
       [chapter 4](https://cds.cern.ch/record/2149420).
        See merge request !178

    ! 2016-10-01 - Marco Clemencic (commit 99b1001)

     - enable missing override warnings (gcc >= 5.1)

       Fixes GAUDI-1241
        See merge request !192

    ! 2016-10-01 - Chris Jones (commit 73dc799)

     - Add missing utility include, needed for std::forward

       See merge request !193

    ! 2016-08-19 - Marco Clemencic (commit f3050c3)

     - Fix compile time warnings

       fixed/hidden all warnings in GCC builds
        See merge request !189

    ! 2016-07-25 - Marco Clemencic (commit e3d4b07)

     - remove CMT configuration and related files

       * removed CMT configuration files
       * adapted scripts not to use CMT
        Fixes GAUDI-1216 Fixes GAUDI-979
        See merge request !186

    ! 2016-06-27 - Marco Clemencic (commit 17f2380)

     - added deprecation warnings to endreq and messageService()

       This is meant to help the merge of !79 and !80.
        Fixes GAUDI-1225
        See merge request !183

    ! 2016-06-23 - Sami Kama (commit 3735737)

     - Adding concurrent incident support and example utilization.

       `GaudiExamples/options/AsyncIncidents.py` demonstrates example utilization of
       asynchronous incident mechanism.
        Fixes GAUDI-1213
        See merge request !181

    ! 2016-06-13 - Charles Leggett (commit 5d76113)

     - ignore data dependencies for empty keys

       if a DataHandle has a blank key (which in any case is not allowed in the
       event store), ignore it when assembling the data dependencies of the
       Algorithm or AlgTool
        See merge request !169 and atlas/Gaudi!25

    ! 2016-06-10 - Marco Clemencic (commit 79fe8bc)

     - Remove references to GCCXML

       Fixes GAUDI-1202
        See merge request !148

    ! 2016-05-31 - Charles Leggett (commit 5a1481e)

     - intersection fcn for EventIDRange

       added a static function to EventIDRange which takes a variable number of
       EventIDRange arguments, and returns the intersection of them, but getting
       the maximum of the
       `start()` and minimum of the `stop()`.
        See merge request see atlas/Gaudi!22, !167

    ! 2016-05-31 - Charles Leggett (commit b29534a)

     - fix ToolHandle initialization in AlgTools and Algorithms

       (from Attila) The current implementation in these functions instantiates
       duplicate tools when we declare a public ToolHandleArray as a property to an
       algorithm or a tool. This modification fixes the duplication in the ATN
       tests that the error originally showed up in.
        See merge request !158

    ! 2016-05-31 - Marco Clemencic (commit 32fdc55)

     - restore fix to GAUDI-1018 removed by a875c69e

       See merge request !172

    ! 2016-05-18 - Sami Kama (commit 9eeef96)

     - allow build of Gaudi without LCG and fix ThreadPoolSvc

       Allow building of Gaudi with local externals.
        It also contains a fix to an issue introduced with merge request !160
       (GAUDI-1212).
        Fixes GAUDI-1211, GAUDI-1212.
        See merge request !166

    ! 2016-04-22 - Charles Leggett (commit 2a16f73)

     - GaudiHandle: add missing override keyword

       Fixes compilation warning in METReconstruction in the cmake build.
        See merge request !161

    ! 2016-04-19 - Steve Farrell (commit ff70ca3)

     - Thread tool termination

       This set of changes completes the work started by @leggett in
       a875c69e3ac6b1d1253e4086daea076860a95e52 on thread initialization tools. Such
       tools are invoked by the ThreadPoolSvc on each worker thread when the pool is
       initialized and can be used to setup thread-local workspaces in cases where
       necessary (e.g. for running multi-threaded Geant4).
        These commits enable the thread-termination part of those tools for
       corresponding cleanup/finalization of thread-local memory. This is done
       primarily by adding a terminatePool method to IThreadPoolSvc which is called
       at the end of ForwardSchedulerSvc::activate. The ThreadPoolSvc underwent some
       slight refactoring to support the thread-termination tasks.
        Also included in this merge request are a number of whitespace and
       indentation fixes, as well as some added class documentation in the affected
       classes.
        See merge request !142

    ! 2016-04-14 - Charles Leggett (commit 6117bd2)

     - EventContext: remove incomplete and useless operator=

       (from Scott Snyder)
        EventContext::operator= was not copying m_eid and m_proxy. since it does
       the same thing as the default, better just to delete it.
        See merge request !151

    ! 2016-04-14 - Charles Leggett (commit bdaade3)

     - updates for EventIDBase

       - add some methods to test payload of EventIDBase
       - use std::tie for comparisons
        See merge request !153

    ! 2016-04-12 - Attila Krasznahorkay (commit d7c1896)

     - fix CommonMessaging::outputLevel()

       See merge request !154

    ! 2016-04-09 - Charles Leggett (commit 84020b9)

     - Isolate EventContext from Algorithm

       in order to not have re-entrant Algorithms stomp on each others'
       EventContexts, we need to isolate the EventContext from the Algorithm, and
       move it to the AlgoExecutionTask. We can then pass the EventContext
       explicitly to the tbb::task, instead of carrying it via the Algorithm, which
       would fail for re-entrant Algs. This also requires a change to the signature
       of ForwardSchedulerSvc::promoteToExecuted.
        We should also make the EventContext* of the Algorithm const, to prevent any
       modification from inside the Alg.
        See merge request !147

    ! 2016-03-22 - Charles Leggett (commit d7ecf7e)

     - add GaudiKernel/EventIDRange class

       Adds an EventIDRange class to GaudiKernel, which holds 2 EventIDBase objects
        add sort methods to EventIDBase, to sort by Run/Event, Timestamp, and
       Lumi/Event
        See merge request !130

    ============================= GaudiKernel v33r1 ==============================

    ! 2016-03-10 - commit f84ad02

     - Register Tools declared in ToolHandleArray in parent Algorithm/AlgTool

       data deps of Tools in ToolHandleArrays are not pushed to parent Alg/AlgTool
        need to add a declareProperty(... ToolHandleArray<T> ...) to Algorithm and
       AlgTool, and add all ToolHandleArrays thus declared to a container that gets
       processed during initToolHandles. In order to avoid adding tools from Arrays
       that haven't been retrieved, we have to add a bool flag to the
       GaudiHandleArrayBase to detect if it's been retrieved. there's a bit of
       ugliness in extracting a ptr to an IAlgTool from the untemplated
       GaudiHandleArrayBase, as we have to explicitly retrieve the tool from the
       ToolSvc by name, but since it's already been retrieved when the Array gets
       retrieved, we won't be doing any new creations.
        I believe that the testing for whether the retrieved tool is public or
       private is redundant, as I don't think you can put a Public tool into a
       Private ToolHandleArray (at least you can't seem to do so in ATLAS), but I
       left it in just in case.

        See GAUDI-1190

        See merge request !124

    ! 2016-03-10 - commit 02f2560

     - use StringKey for Alg name, add IAlgorithm::setIndex

       this patch does 3 things:

       - makes Algorithm::index() const (as it should have been), set the initial
       value to 0 instead of 123 (!)
       - adds a protected Algorithm::setIndex(unsigned int) method. this allows you
       to distinguish between clones. AlgResourcePool is the one who does the
       setting, and is declared as a friend to IAlgorithm
       - turns Algorithm::m_name into a StringKey (from a string), so we can hash on
       the name of Algorithms more easily (a useful ability when dealing with Alg
       clones, and trying to treat them all the same way)
        See merge request !125

    ! 2016-03-10 - commit 2de9290

     - added metadata service

       The metadata service adds information about n-tuple production into the
       resulting n-tuple.
        Update and overrides !128
        See merge request !136

    ! 2016-03-10 - commit 4a18175

     - removed uses of templates implements[1-4], extends[1-4] and
       extend_interfaces[1-4]

       Since merge request !22 they are unnecessary.
        See merge request !133

    ! 2016-03-10 - commit 8a11f51

     - fixed unprotected debug messages

       I also added the possibility of dumping a stack trace for unprotected

       messages.
        Fixes GAUDI-1192
        See merge request !129

    ! 2016-03-09 - commit 8685ac9

     - various fixes and (minor) improvements to documentation

       See merge request !127

    ! 2016-03-03 - commit 5925940

     - restored DeclareFactoryEntry macros for ATLAS

       restored the (dummy) DeclareFactoryEntry macros for ATLAS compatibility.

       these are protected with a `#ifdef ATLAS` macro
        also fixed GaudiHive/CPUCruncher to remove this usage
        See merge request !126

    ! 2016-03-02 - commit a146191

     - separate thread local EventContext handling from ContextSpecificPtr

       Moved all the setting/getting methods for the thread local
       `EventContext` from `GaudiKernel/ContextSpecificPtr.h` to a new file
       `GaudiKernel/ThreadLocalContext.h`.
        See merge request !122

    ! 2016-02-29 - commit 223ce08

     - Merge branch 'GAUDI-1183' into 'master'

       reorganize DataHandleHolder visitor acces to avoid non-retrieved tools
        This is not a perfect fix, more a workaround.
        The method `initToolHandles` have been modified to fill the list of used
       `ToolHandle`s only with the tools retrieved explicitly in the `initialize`
       method.

       `GaudiCommon` required the introduction of a hook so that the custom _fixer_
       visitor could be created in the `GaudiCommon::initialize`, but used only at
       the end of `PBASE::sysInitialize` (eb39274).
        I also fixed an issue (double delete) with the use of `ToolHandle` from
       `GaudiCommon` (0a1bec8).
        Fixes GAUDI-1183.
        See merge request !120

    ! 2016-02-22 - commit acafe77

     - correctly initialize CommonMessaging::m_level

       Fixes GAUDI-1185
        See merge request !118

    ! 2016-02-17 - commit 7b13bd5

     - removed static_assert in ToolHandle.h

       Fixes GAUDI-1182
        See merge request !116

    ! 2016-02-17 - commit 3aa8fa9

     - Fixes for compatibility with ATLAS code

       * protect PATH from local directories
       * restore `outputLevel()` method removed with mr !76 (b0618f78)
        Fixes GAUDI-1181
        See merge request !115

    ! 2016-02-15 - commit 4dc9082

     - fixed handling of (multi line) strings and ';' in strings for .opts files

       Fixes GAUDI-1179
        See merge request !112

    ! 2016-02-11 - commit b0618f7

     - Improve CommonMessaging

       Implementation of GAUDI-1146: Improve CommonMessaging and use it in more
       places.

       See merge request !76

       Conflicts:
       GaudiExamples/tests/qmtest/refs/AlgTools2.ref
       GaudiExamples/tests/qmtest/refs/MultiInput/Read.ref
       GaudiExamples/tests/qmtest/refs/conditional_output/write.ref
       GaudiKernel/GaudiKernel/AlgTool.h
       GaudiKernel/GaudiKernel/Algorithm.h
       GaudiKernel/GaudiKernel/Service.h
       GaudiKernel/src/Lib/AlgTool.cpp
       GaudiKernel/src/Lib/Algorithm.cpp

    ! 2016-02-11 - commit dabf7a3

     - Restore fixed ToolHandle.h

       The version of ToolHandle.h before fa29ed33 included some improvements,
     as
       well as the fixes for https://sft.its.cern.ch/jira/browse/CFHEP-177 and
       GAUDI-1127.
        The version introduced with fa29ed33 does not work because of GAUDI-1127.
        See merge request !106

    ! 2016-02-09 - commit 11d42e4

     - DataHandles fixes for LHCb

       - renamed IDataHandleHolder::accept to acceptDHVisitor to avoid build time
       warnings in LHCb
       - fixed reference file for GaudiExamples.thistwrite

       See merge request !104

    ! 2016-02-09 - commit a4bea2b

     - remove unprotected DEBUG messages added in v27r0

       The merge of the 'hive' branch introduced several _unprotected_ DEBUG
       messages,
     which is against LHCb policies.
        Fixes GAUDI-1174.
        See merge request !102

    ! 2016-02-09 - commit dfa9d35

     - expanded EventContext and EventIDBase

       the EventContext class needs to be expanded in two ways
       - bring in event identifying information (event#, run#, timestamp,
        lumi#, etc)
       - some experiment dependent ptr for other stuff
        See merge request !103

    ! 2016-02-06 - commit d905569

     - introduce DataHandle and DataObjectHandle

       See merge requests !57 !94 !95

    ============================= GaudiKernel v33r0 ==============================

    ! 2016-01-21 - commit 1e44d49

     - made DataObjectDescriptor.__eq__ more robust

       Fixes GAUDI-1155.
        See merge request !99

    ! 2016-01-21 - commit f637ca4

     - ensure that destination vector for DataSvc::objectLeaves gets reset

       The change restore the implementation in 'master' before the merge of 'hive'.

        Fixes GAUDI-1166.
     See merge request !97

    ! 2016-01-12 - commit f5ed7cd

     - Add missing header to GaudiKernel/DataSvc.h

       Some packages in the ATLAS offline code started failing because of this

       missing include. Since the SmartIF<IConversionSvc> member variable does
     need
       a full declaration of this type.
        Fixes GAUDI-1163.
     See merge request !90

    ! 2016-01-12 - commit 8ec1b7b

     - return the just-added tool from addTool

       augment addTool to return the tool it just added.
     This allows one to write:
       ```python
     myToolWithName = myalg.addTool(tool_conf2,"ToolWithName")

       myToolWithName.String = "xyz"
       ```
     instead of
       ```python
     myalg.addTool(tool_conf2,"ToolWithName")

       myalg.ToolWithName.String = "xyz"
       ```
     which requires one to duplicate the "ToolWithName" -- once as string,
       and
     once as attribute, but only rarely does anybody use getattr for the 2nd

       case to just avoid the duplication.
        Of course, one could write
       ```python
     myalg.addTool(tool_conf2,"ToolWithName", String="xyz")
       ```
     or even pass in a complete dictionary with **, but the configuration of

       the tool isn't necessarily complete at the time of creation of its

       configurable.
        Fixes GAUDI-1162.
     See merge request !87

    ! 2016-01-11 - commit ce14297

     - change return type of Property::declare{Read,Update}Handler from void to
       Property&,

       The reason is that this way one can write code like this:
       ```C++
        declareProperty("trackMaxChi2", m_trackMaxChi2 = 25.)
          ->declareUpdateHandler( [this](Property&){ this->m_trackChi =
       std::sqrt(this->m_trackMaxChi2); } )
          .useUpdateHandler();
       ```
     this keeps m_trackChi in sync with m_trackMaxChi2. Without the call
     to
       useUpdateHandler, if there is no entry in the JobOptionsSvc,
     m_trackChi
       would not be set, and one would have to duplicate the
     code to 'derive'
       m_trackChi from m_trackMaxChi2 just to initialize
     it to the proper default.
        Fixes GAUDI-1160.
        See merge request !85

    ! 2016-01-11 - commit cd47f7e

     - add support for std::array in SerializeSTL

       Fixes GAUDI-1159.
        See merge request !86

    ! 2016-01-08 - commit 85c99bc

     - Speed up Configurable.isPropertySet

       Fixes GAUDI-1158.
        See merge request !88

    ! 2016-01-07 - commit fabc739

     - fixed compilation with clang 3.7 (after hive merge)

       * fixed compilation problems related to `operator<<` (gcc is more
        permissive than clang).
       * fixed also some clang warnings.
        Fixes GAUDI-1157.
        See merge request !84

    ! 2016-01-06 - commit 19beffc

     - add constructor from std::initializer_list to GaudiUtils::VectorMap

       add support to construct a GaudiUtils::VectorMap from an
       std::initializer_list
        Fixes GAUDI-1154.
        See merge request !82

    ! 2015-12-04 - commit 1652f3b

     - fixed logic of Gaudi::popCurrentDataObject()

       fixes GAUDI-1068
        See merge request !71

    ! 2015-11-11 - commit 0a0032f

     - Merge branch 'GAUDI-1130' into 'master'

       fixes to support native build on Ubuntu 15.10
        Fixes GAUDI-1130.
        See merge request !70

    ! 2015-11-11 - commit 0feb8ab

     - Merge branch 'GAUDI-1127' into 'master'

       removed the need for ToolHandle<IAlgTool> specialization
        Modified the implementation of BaseToolHandle so that the retrieve
     method
       can be implemented without conflicting with the retrieve method
     of
       ToolHandle<T> with T=IAlgTool.
        This, BTW, fixes GAUDI-1127.
        See CFHEP-177 and merge request !10.
        See merge request !67

    ! 2015-11-10 - commit 3c3e9d9

     - Merge branch 'GAUDI-1127' into 'master'

       removed the need for ToolHandle<IAlgTool> specialization
        Modified the implementation of BaseToolHandle so that the retrieve
     method
       can be implemented without conflicting with the retrieve method
     of
       ToolHandle<T> with T=IAlgTool.
        This, BTW, fixes GAUDI-1127.
        See CFHEP-177 and merge request !10.
        See merge request !67

    ! 2015-11-10 - commit 44b1ef5

     - update to DataObjID: switch order of parameters in constructor

       Change the order of the parameters in the DataObjID constructor from
       (Key,ClassID) to (ClassID,Key) in order to match more general usage in Atlas.

       Update to GAUDI-1102.

       See merge request !64

    ! 2015-11-10 - commit 148f1bc

     - Merge branch 'GAUDI-1126' into 'master'

       use external linkage for IncidentType constants
        Fixes GAUDI-1126.
        See merge request !69

    ! 2015-11-09 - commit c5f6d91

     - Merge branch 'GAUDI-1128' into 'master'

       change IInspector enum names to avoid conflicts with Oracle
        Changed IInspector::MUTABLE and IInspector::CONST to IInspector::Mutable

       and IInspector::Const.
        Fixes GAUDI-1128.
        See merge request !68

    ! 2015-11-09 - commit 2a28fda

     - Merge branch 'GAUDI-1127' into 'master'

       removed the need for ToolHandle<IAlgTool> specialization
        Modified the implementation of BaseToolHandle so that the retrieve
     method
       can be implemented without conflicting with the retrieve method
     of
       ToolHandle<T> with T=IAlgTool.
        This, BTW, fixes GAUDI-1127.
        See CFHEP-177 and merge request !10.
        See merge request !67

    ! 2015-11-09 - commit 0870b7f

     - Merge branch 'GAUDI-1124' into 'master'

       remove usage of "#pragma once"
        Fixes GAUDI-1124.
        See merge request !66

    ! 2015-11-02 - commit 57f356c

     - Merge branch 'hive' into 'master'

       Fixes GAUDI-978.

       See merge request !65

    ! 2015-10-29 - commit aa624e1

     - Allow compilation of Gaudi with clang 3.7 using gcc 4.9 externals

       To do so, some arguments have to be passed to cmake, assuming CMTCONFIG is
       x86_64-slc6-clang37-opt
        * LCG_SYSTEM: To specify the flavour of the externals to use
        * LCG_FORCE_COMPILER: To specify the compiler to use, with the
          format "<compiler>-<version>" (an lcg wrapper has to exist for
          this to work).

       Using the LHCb Makefiles, you just need to specify:
       ``` export CMAKEFLAGS="-DLCG_SYSTEM=x86_64-slc6-gcc49
       -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DLCG_FORCE_COMPILER=clang-3.7"
       ```

       Fixes GAUDI-1123 and LBCORE-934.

       See merge request !48

    ! 2015-10-27 - commit 1031fb3

     - Merge branch 'GAUDI-1121' into 'master'

       use `double` parser for floats with Boost 1.59

       * introduced a test to expose the problem
       * use the parser for doubles to parse strings into floats when Boost > 1.55

       Fixes GAUDI-1121.

       See merge request !60

    ! 2015-10-26 - commit de80db5

     - More modernization changes

       Fix (almost) all warnings from clang 3.7, and use clang-modernize to further
       modernize the code.

       Fixes GAUDI-1118.

       See merge request !49

    ! 2015-10-22 - commit ef41582

     - Fix GAUDI-1108: bad ObjectVector and ObjectList copy constructor

       mark copy constructor and assignment operator of ObjectList and ObjectVector
       as = delete as both ObjectList and ObjectVector assume they own the pointers
       they contain, and hence a plain copy or assignment will result in two object
       which both assume they own these pointers.

       See merge request !50

    ============================= GaudiKernel v32r0 ==============================

    ! 2015-10-08 - commit dfb4790

     - minor fixes to some interface files

       See merge request !44

    ! 2015-10-08 - commit c50c176

     - improvements to documentation and release tools

       See merge request !43

    ! 2015-10-08 - commit fa6ec2d

     - fixed DataObject constructor and assignment operator

       Fixes GAUDI-1076
       * fixed copy constructor
       * added assignment operator
       * added move constructor and assignment

       See merge request !42

    ! 2015-10-08 - commit 1abdd22

     - Merge branch 'dev/DataObjID' into 'master'

       update DataObjID

       fixed typo in DataObjIDProperty, updated release notes, added DataHandle
       placeholder prototype class

       * DataObjID: various classes used for DataObject and DataHandle
       identification
        * DataObjID: holds a unique key for an object in the store, with an internal
                    representation as a hash for fast lookup.
                    syntax is either Gaudi EDS path style "/path/to/object", or
       ATLAS
                    style with (ClassID,"key") or ("ClassName","key")
                    Collections of DataObjIDs are
       unordered_set<DataObjID,DataObjID_Hasher>
                    typedef to DataObjIDColl
        * DataObjIDProperty: jobOpt Property handler for DataObjID and DataObjIDColl
        * DataHandle: prototype placeholder for DataHande class

       See merge request !41

    ! 2015-10-06 - commit 8e30d3e

     - Merge branch 'dev/DataObjID' into 'master'

       added DataObjID

       Fixes GAUDI-1102

       this merge is needed to maintain functionality in both Hive and vanilla Gaudi
       branches.

       See merge request !36

    ! 2015-10-04 - commit 328c078

     - Merge branch 'dev-variadic-interface-base' into 'master'

       Take advantage of variadic templates to implement interface bookkeeping and
       interface casting

       This patch updates the implementation of the interface bookkeeping and
       casting from the current macros + boost mpl code to use variadic templates.

       See merge request !22

    ! 2015-09-29 - commit 10bf256

     - fixed a compile time warning

       warning: enumeral mismatch in conditional expression:
       'StatusCode::<anonymous enum>' vs 'IConversionSvc::Status'

    ! 2015-09-25 - commit c1d7111

     - Merge branch 'dev-stateful' into 'master'

       make IStateful baseclass of IAlgTool, IAlgorithm and IService

       IAlgTool, IAlgorithm and IService all declare the following pure virtual
       functions:
            configure,initialize,start,stop,finalize,terminate,reinitialize
            restart and FSMState which, presumable not by coincidence, also happens
       to be the functions which IStateful declares.

       This commit removes those declarations from IAlgTool, IAlgorithm and
       IService, and instead makes them inherit from IStateful

       Fixes GAUDI-1092

       See merge request !23

    ! 2015-09-25 - commit 35dd00c

     - Merge branch 'dev-smartif-use' into 'master'

       Provide (and use) C++11 smart pointer 'look and feel' for SmartIF

       The aim of this branch is to confine, for everything that inherits from
       IInterface, the calls to addRef(), release() and queryInterface() to the
       SmartIF implementation. Exceptions are a few places where interfaces
       (currently) return bare pointers (instead of SmartIF...) and where one thus
       has to addRef() explicitly to avoid returning a dangling pointer. This can be
       avoided by changing the relevant interface to return a SmartIF instead of a
       bare pointer.

       In addition, make SmartIF 'look and feel' like a smart pointer.

       - use explict bool conversion instead of .isValid()
       - add SmartIF::as<IFace>(), to return a SmartIF<IFace> to an alternate
          interface -- which (together with move) encourages the use of auto
       - add ISvcLocator::as<IFace>(), to return a SmartIF<IFace> to the current
       ISvcLocator.
       - add ServiceManager::service<IFace>() which return SmartIF<IFace> which
       encourages
          the use of auto

       And add a few other C++11 modernizations (eg. prefer STL over raw loop)

       Fixes GAUDI-1094

       See merge request !24

    ! 2015-09-24 - commit 8e8ad96

     - Merge branch 'componenthelp' into 'master'

       extract gaudiComponentHelp from hive

       gaudiComponentHelp is a tool to print a help message for a given component.

       Fixes GAUDI-1091.

       See merge request !17

    ! 2015-09-21 - commit a7d3a5a

     - Merge branch 'AppMgrUI' into 'master'

       Switch IAppMgrUI inheritance from Interface to INamedInterface and remove the
       pure virtual name()

       IAppMgrUI inherits from IInterface, and adds a pure virtual name() method
       with the exact same signature as the one in INamedInterface.

       As a result, the same effect can be obtained by inheritance from
       INamedIterface instead of IInterface.  The advantage is that if an
       implementation (virtually) inherits not only from IAppMgrUI but also another
       interface which (virtually) inherits from INamedInterface, there is no
       ambiguity in the definition of name(). With the 'old' code, one has to
       disambiguate between multiple name() members...

       See merge request !18

    ! 2015-09-17 - commit d53e750

     - Merge branch 'dev-common-messaging' into 'master'

       Generalize CommonMessaging, and use it to implement the messaging
       functionality ...

       ...in GaudiAlg/GaudiCommon

         CommonMessaging needs two methods to be available to implement its
       functionality:

               const std::string& name() const
              SmartIF<ServiceLocator>& serviceLocator() const

         As CommonMessaging is a mix-in class which uses the 'curiously recurring
       template'
        pattern, it can either demand that the 'Base' class it is 'mixed' into
       already
        provided this functionality, or it can add pure virtual methods to insure
       any
        derived class does so. As this depends on the template argument, one cannot
        a-priori decide which of the two solution is appropriate.

         To solve this problem in a generic way, this patch uses SFINAE to detect
        at compile time whether Base::name() and Base::serviceLocator() -- where
        Base is the template argument provided to CommonMessaging -- are valid
        expressions. If they are, no further action is taken. If not, the missing
        function(s) is (are) added as pure virtual. This is done by specialization
        of two template classes from which CommonMessaging inherits, prior to
        inheriting from Base.  Those specializations are either 'empty' classes,
        or add the missing interface requirement.

       See merge request !19

    ! 2015-09-16 - commit 1a1f906

     - Merge branch 'fix-regression-atlas' into 'master'

       Restore ModuleLoadedIncident::TYPE()

       Removal of ModuleLoadedIncident::TYPE() did not take into account the Atlas
       use of it, see GAUDI-1062.

       See merge request !27

    ! 2015-09-11 - commit c062cbe

     - C++11 modernization changes

       Some trivial - and some not so trivial! - changes which take advantage of
       C++11...

       See merge request !7
    ============================= GaudiKernel v31r6 ==============================
    ! 2015-06-09 - Marco Clemencic
     - GAUDI-1042: replaced "static const" with "constexpr" in physics constants.

    ============================= GaudiKernel v31r5 ==============================
    ! 2015-05-21 - Marco Clemencic
     - Fixed compilation with CMT.

    ! 2015-05-01 - Charles Leggett
     - compiler doesn't like nullptr. have to use std::nullptr_t

    ! 2015-04-29 - Charles Leggett
     - mark ToolHandle(nullptr) constructor as deleted to avoid abuse

    ! 2015-05-14 - Marco Clemencic
     - Fixed a build warning in test_PropertyMgr.

    ! 2015-05-05 - Marco Clemencic
     - Fixed GAUDI-1030: remove Algorithm property "ErrorCount"
       Renamed the property to "ErrorCounter".
       Added accessor Algorithm::errorCount().

    ! 2015-04-23 - Rosen Matev
     - Fixed GAUDI-1028: typo in ConfigurableUser

    ! 2015-04-21 - Marco Clemencic
     - GAUDI-1023: ensure that the warning is printed by genconf
       Also fixed the retrieval of the PropertyMgr owner name (if it was set).

    ! 2015-04-20 - Marco Clemencic
     - GAUDI-1023: issue a warning when re-declaring a property
       The anti-pattern is used a bit too often to just fail: we need some time to
       fix the code before before enforcing the correct behavior.

    ! 2015-04-20 - Marco Clemencic
     - Added a (C) function that returns the ROOT version (code), to be used in
       Python to get the version of ROOT without importing cppyy.

    ! 2015-04-13 - Marco Clemencic
     - Fixed visibility of gaudirun.py Python helper functions.

    ! 2015-04-13 - Marco Clemencic
     - Implemented printing of alg sequences in C++ as a private function
       (to avoid GaudiPython in gaudirun.py).

    ! 2015-04-12 - Marco Clemencic
     - Added I/O dictionaries for KeyedContainerManager, missing when we do not
       import GaudiPython in guadirun.py.

    ! 2015-04-10 - Marco Clemencic
     - Added C helper functions to bootstrap from Python without GaudiPython.

    ! 2015-03-15 - Marco Clemencic
     - GAUDI-1023: fail when re-declaring a property
       - added hasProperty method to IProperty.
       - added check to all the declareProperty methods in PropertyMgr
       - added unit test executable for PropertyMgr

    ! 2015-03-15 - Marco Clemencic
     - GAUDI-1024: Added deprecation warning to Tokenizer.h.

    ! 2015-03-14 - Marco Clemencic
     - GAUDI-1024: Added Gaudi::Utils::AttribStringParser to replace Tokenizer

    ! 2015-04-13 - Marco Clemencic
     - GAUDI-1018: Made empty VERBOSE equivalent to unset

    ! 2015-04-14 - Marco Clemencic
     - Hide warning introduced with fix to GAUDI-312.

    ! 2015-04-14 - Stewart Martin-Haugh
     - Fixed GAUDI-312: invalid read in Tokenizer.

    ! 2015-04-09 - Marco Clemencic
     - Use C++11 functional instead of boost/function.hpp in IFileMgr.

    ! 2015-04-08 - Marco Clemencic
     - Disable CPU features detection on aarch64 (ARM64).

    ! 2015-03-31 - Marco Clemencic
     - Removed inclusion of ParsersFactory.h from Parsers.h (added with GAUDI-1011)
       The inclusion of ParsersFactory.h simplify the creation of custom parsers,
       but (because of the way ROOT 6 used headers) was causing huge penalties in
       start up time (Gaudi tests taking twice the time) and an increased memory use
       (detected in some LHCb tests).

    ! 2015-03-20 - Marco Clemencic
     - GAUDI-1018: Respect VERBOSE setting in genconf and genconfuser.

    ! 2015-03-06 - Marco Clemencic
     - Fixed GAUDI-1017: GaudiUtils::Map cannot be used as property after GAUDI-1011

    ! 2015-03-05 - Sasha Mazurov
     - GAUDI-1011: Support std::tuple and std::array properties in jobs options

    ! 2015-03-05 - Marco Clemencic
     - GAUDI-1016: add GaudiHandle::isSet() or isValid() method
       Renamed getObject as isValid and made it public, added method "get" to get
       the wrapped pointer without trying to retrieve it, and the method isSet() to
       check if the wrapped pointer is not null (without trying to retrieve it).

    ! 2015-03-06 - Charles Leggett
     - make ToolHandle constructor explicit
             ToolHandle( const IInterface* parent = 0, bool createIf = true )
       as it is badly abused. Also declare ToolHandle(int) as deleted.

    ============================= GaudiKernel v31r4 ==============================
    ! 2015-02-06 - Marco Clemencic
     - Added methods to IToolSvc to get all the tool instances.

    ! 2015-02-03 - Marco Clemencic
     - Added small tool to report the CPU capabilities (GAUDI-999) and a simple test
       relying on the content of /proc/cpuinfo.

    ! 2015-02-03 - Gerhard Raven
     - GAUDI-999: Add code which determines the 'instruction level' of the CPU

    ! 2015-02-03 - Marco Clemencic
     - Fixed issue introduced with the fix to GAUDI-1001.

    ! 2015-02-02 - Marco Clemencic
     - Fixed GAUDI-1001: '\' and '\n' not correctly interpreted by gaudirun.py

    ! 2015-01-26 - Marco Clemencic
     - Removed duplicated tests.

    ! 2015-01-13 - Marco Clemencic
     - Fixed warning in genreflex with ROOT 6.02.03.

    ============================= GaudiKernel v31r3 ==============================
    ! 2015-01-13 - Marco Clemencic
     - Fixed regression introduced with commit f0b0a33
       (GAUDI-993: more speed improvements in DataSvc::retrieveEntry)

    ! 2015-01-12 - Gerhard Raven
     - GAUDI-993: Avoid recursion in DataSvc::i_retrieveEntry.

    ! 2015-01-09 - Marco Clemencic
     - Modified GCCXML exclusions to work with the ATLAS version of gccxml.

    ! 2015-01-08 - Marco Clemencic
     - Added the class StatusCode::ScopedDisableChecking to ignore all the
       StatusCode instances produced in a scope.

    ! 2015-01-07 - Gerhard Raven
     - GAUDI-995: improve Algorithm storage/management in AlgorithmManager

    ! 2015-01-07 - Gerhard Raven
     - GAUDI-993: removed recursion in DataSvcHelpers::RegistryEntry::i_find

    ! 2015-01-07 - Gerhard Raven
     - GAUDI-993: more speed improvements in DataSvc::retrieveEntry

    ! 2015-01-07 - Marco Clemencic
     - Fixed g++ 4.9 warning (unused typedef).

    ! 2015-01-07 - Gerhard Raven
     - Small performance improvements to StatusCode:
       - added move constructor
       - use std::make_shared instead of std::shared_ptr constructor

    ! 2015-01-06 - Marco Clemencic
     - Added StatusCode::checkingEnabled() static method to check if the checking
       is enabled or not.

    ! 2015-01-06 - Marco Clemencic
     - Fixed wrong "unchecked StatusCode" reporting after patch GAUDI-992.
       Modified the StatusCode::check() to correctly report the function also when
       StatusCode::~StatusCode() is not inlined.

    ! 2014-12-10 - Gerhard Raven
     - GAUDI-993: Improve string handling in DataSvc::retrieveEntry
       Use boost::string_ref too speed up string manipulations.

    ! 2014-12-10 - Marco Clemencic
     - Fixed mistake in patch GAUDI-992.

    ! 2014-12-09 - Gerhard Raven
     - GAUDI-992: improve StatusCode::~StatusCode
       Use small inlined destructor that delegates to another method for the check,
       instead of using an off-lined destructor.

    ============================= GaudiKernel v31r2 ==============================
    ! 2014-11-19 - Marco Clemencic
     - Fixed extra ';'.

    ! 2014-10-25 - Marco Clemencic
     - Fixed a problem with the interpretation of \n and \t in .opts files.

    ============================= GaudiKernel v31r1 ==============================
    ! 2014-10-06 - Marco Clemencic
     - Added (build-time) tests for GAUDI-905 and GAUDI-973.

    ! 2014-10-06 - Marco Clemencic
     - GAUDI-973: make it possible to use StringKey in std::unordered_map

    ! 2014-10-06 - Gerhard Raven
     - GAUDI-905: Add Gaudi::StringKey constructor from plain C-string

    ! 2014-09-18 - Marco Clemencic
     - Fixed a test after the change in PluginService.

    ! 2014-05-07 - Sebastien Binet
     - use new PluginService API (with C++11 variadic templates for the factories.)
     - hide the C++11 constructs from Reflex as GCC-XML parser predates C++11

    ! 2014-09-18 - Marco Clemencic
     - Fixed Eclipse Code Analysis warning.

    ! 2014-09-18 - Marco Clemencic
     - Fixed warnings from genreflex (ROOT 6).

    ! 2014-07-11 - Marco Clemencic
     - Removed references to the obsolete IFactory.

    ============================= GaudiKernel v31r0 ==============================
    ! 2014-07-04 - Marco Clemencic
     - Fixed the test for GAUDI-975 to work without build directory.

    ! 2014-07-01 - Marco Clemencic
     - removed some dead code in ConfigurableDb.py

    ! 2014-07-02 - Marco Clemencic
     - GAUDI-975: relax the checks in genconf to allow custom component factories
       Modified genconf not to fail if the return type of a factory is not known.
       Added a test to verify the it works (CMake only).

    ! 2014-06-16 - Illya Shapoval
     - Fix wrong handling of StatusCode in SysInitialize.
       (fixing thus git commit #59d184b2ca275ed6ba798e7eab7c279756ae6698,
       which broke compilation).

    ! 2014-06-03 - Charles Leggett
     - EventContext: turn it into a real class, remove thread info
     - ContextSpecificPtr: add evt num to thread local info
     - Message: print out current slot/evt/thread on demand
                via %E,%N,%X respectively

    ! 2014-05-08 - Charles Leggett
     - a few fixes for gcc47
     - backward compatibility for factories
     - unchecked statusCode in MinimalEventLoopMgr::stop

    #	modified:   GaudiKernel/GaudiKernel/Algorithm.h
    #	modified:   GaudiKernel/GaudiKernel/DeclareFactoryEntries.h
    #	modified:   GaudiKernel/doc/release.notes
    #	modified:   GaudiKernel/src/Lib/ContextSpecificPtr.cpp
    #	modified:   GaudiKernel/src/Lib/MinimalEventLoopMgr.cpp

    ! 2014-06-10 - Charles Leggett
     - fix unchecked StatusCodes in AlgTool sysXXX methods
    M       src/Lib/AlgTool.cpp

    ! 2014-06-05 - Marco Clemencic
     - Fixed crash in genconfuser in a special case.

    ! 2014-06-05 - Marco Clemencic
     - Fixed spurious warning coming from genconfuser after the switch to the new
       .confdb files.

    ! 2014-06-04 - Marco Clemencic
     - Tentative fix for genconfuser for the new .confdb files (without _merge).

    ! 2014-05-27 - Marco Clemencic
     - In order to remove the _merged.confdb and use a single installed .confdb:
       - Modified loadConfigurableDb to handle transparently both plain .confdb
         files and _merged.confdb files (if the merged one is present, ignore the
         others).
       - Minor code clean up in loadConfigurableDb.
       - Added tests for loadConfigurableDb (CMake only).

    ! 2014-05-06 - Sebastien Binet
     - fix bug #102404: implement a pure ascii based configurable-db.
       these ascii files are now named .confdb (for the per package ones)
       *_user.confdb (for the user ones) and *_merged.confdb (for the merged ones.)

    ============================= GaudiKernel v30r3 ==============================
    ! 2014-05-27 - Marco Clemencic
     - Minor fix to CMake configuration (CMT equivalence).

    ! 2014-05-21 - Marco Clemencic
     - Fixed minor typo in genconf.cpp.

    ! 2014-04-30 - Marco Clemencic
     - Added command line option --no-init to genconf.
       It disable to creation of the dummy __init__.py so that we can have better
       control on when it is created in the CMake build (was causing warnings with
       Ninja).

    ! 2014-05-21 - Marco Clemencic
     - Moved dictionary for InterfaceID from GaudiPython to GaudiKernel.

    ! 2014-05-21 - Marco Clemencic
     - Moved dictionary for GaudiHandle*Property from GaudiPython to GaudiKernel.

    ! 2014-05-15 - Beat Jost
     - Added the interface IPublishSvc.

    ============================= GaudiKernel v30r2 ==============================
    ! 2014-03-21 - Marco Clemencic, Rolf Seuster, David Quarrie
     - Re-enabled the DECLARE_FACTORY_ENTRIES family of macros (needed by ATLAS).

    ============================= GaudiKernel v30r1 ==============================
    ! 2014-03-18 - Ben Couturier
     - Fixed bug #104127: remove hwaf configuration.

    ! 2014-03-03 - Marco Clemencic
     - Changed the namespace used for __Instanitations in the dictionary to avoid
       clashes in ROOT 6;

    ! 2014-02-20 - Marco Clemencic
     - Added missing import to "GaudiKernel.Configurable".

    ! 2013-10-29 - Marco Clemencic
     - Added Gaudi::Hive::ContextSpecificData, a sort of "smart reference"
       equivalent to ContextSpecificPtr, but easier to use.
     - Added unit tests for ContextSpecificData and extended tests for
       ContextSpecificPtr.

    ! 2013-10-28 - Marco Clemencic
     - Added unit test for Gaudi::Hive::ContextSpecificPtr.

    ! 2013-10-27 - Marco Clemencic
     - Added Gaudi::Hive::ContextSpecificPtr, a smart pointer with independent
       values for different tasks.
       In addition to the standard smart pointer functionalities, it features:
         - ``accumulate`` to allow gathering of informations collected in different
                          contexts (slots)
         - ``for_each`` to call a function on each pointer
         - ``deleteAll`` to delete all the created objects

    ============================= GaudiKernel v30r0 ==============================
    ! 2014-02-10 - Marco Clemencic
     - Modified applyConfigurableUsers implementations to print the configurables
       applied on stderr if the environment variable GAUDI_DEBUG_CONF_USER is
       defined.

    ! 2014-02-10 - Marco Clemencic
     - Keep the buggy implementation of 'applyConfigurableUsers()' (bug #103803) to
       provide backward compatibility until all the problems with the configuration
       are fixed.

    ! 2014-02-07 - Marco Clemencic
     - Fixed bug #103808: regression introduced with the fix to bug #103803
       The problem was that ConfigurableUser instances not enabled were not
       correctly taken into account in the graph of dependencies.

    ! 2014-02-06 - Marco Clemencic
     - Fixed bug #103803: handle correctly ConfUsers created during the apply step.

    ! 2014-02-03 - Marco Clemencic
     - Do not generate configurables for the factory aliases used for backward
       compatibility with the Reflex Plugin Service.

    ! 2014-01-31 - Marco Clemencic
     - Replaced non-ASCII characters in string literals with the corresponding
       escape sequence.

    ! 2014-01-17 - Marco Clemencic
     - Fixed pretty-printer of Gaudi::StateMachine::State in Clang.

    ! 2014-01-14 - Marco Clemencic
     - Replaced dummy IDataSelector declaration with a typedef (fixes a C++11
       warning).

    ! 2014-01-08 - Marco Clemencic
     - Further fix (in System::loadDynamicLib) to cure the regression in the option
       --load-library of genconf.

    ! 2013-12-29 - Marco Clemencic
     - Fixed a regression with the option --load-library of genconf.

    ! 2013-12-11 - Sebastien Binet
     - Added hwaf configuration files.

    ! 2013-12-05 - Marco Clemencic
     - Re-disabled boost::shared_ptr to remove the dependency on ROOT in
       StatusCode.h.  For GCCXML we hide the actual implementation.

    ! 2013-12-05 - Marco Clemencic
     - Re-enabled boost::shared_ptr for ROOT 5 (gccxml does not understand C++11).

    ! 2013-12-04 - Marco Clemencic
     - Replaced boost::shared_ptr with std::shared_ptr when using C++11.
       See https://sft.its.cern.ch/jira/browse/ROOT-5806

    ! 2013-10-24 - Marco Clemencic
     - Added a small Python function to simplify enabling and disabling of
       specific ROOT 6 work-arounds.
       In Python use:

           from GaudiKernel import ROOT6WorkAroundEnabled
           if ROOT6WorkAroundEnabled('work-around-id'):
               # code for my work-around ...

       To disable the work-around set the environment variable ROOT6_WORK_AROUND
       to 'none' or '-work-around-id' (a comma separated list is accepted).

    ! 2013-10-03 - Marco Clemencic
     - Added missing (needed) include in StringKey.h.

    ! 2013-08-27 - Marco Clemencic
     - Fixed compile-time issue when symbol hiding is enabled (gcc 4.7).

    ! 2013-07-30 - Marco Clemencic
     - Applied the change to factory declarations needed for private/protected
       constructors to Converters too.
     - Removed the macros DECLARE_CONVERTER to avoid confusion with the obsolete
       ones with the same name.

    ! 2013-07-26 - Marco Clemencic
     - Ported new GaudiPluginService to CMT.

    ! 2013-07-26 - Marco Clemencic
     - Fixed a warning.

    ! 2013-07-25 - Marco Clemencic
     - Fixed mistake in the name of a macro.

    ! 2013-07-25 - Marco Clemencic
     - Fixed a "misbalance warning" in genconf.

    ! 2013-07-25 - Marco Clemencic
     - Minor updates to a couple of macros.

    ! 2013-07-25 - Marco Clemencic
     - Modified factory declarations to allow private/protected constructors.

    ! 2013-07-19 - Marco Clemencic
     - Improved the printout of genconf.

    ! 2013-07-19 - Marco Clemencic
     - Clean up in the use of the new PluginService.

    ! 2013-07-18 - Marco Clemencic
     - Removed the need of AlgFactory.h, SvcFactory.h, ToolFactory.h, AudFactory.h
       and CnvFactory.h.
     - Moved the factories typedefs from the global namespace to the class scope.
     - Introduced backward compatibility hacks to handle non-public constructors
       (the hack can be disabled defining the macro GAUDI_NEW_PLUGIN_SERVICE).

    ! 2013-07-18 - Marco Clemencic
     - Fixed compilation problem on slc6-gcc46.

    ! 2013-07-17 - Marco Clemencic
     - Use the new ROOT-free Plugin Service.

    ! 2013-07-17 - Marco Clemencic
     - Removed factories forward declarations.

    ! 2013-07-03 - Marco Clemencic
     - genconf.cpp: replaces Reflex::SharedLibrary::Load with the equivalent Gaudi
       function.
     - Added test for System::currentTime.
     - Added a GaudiKernel/PluginService.h to hide the technical implementation of
       the plugin service for the migration to ROOT 6.
     - Replaced references to ROOT::Reflex::PluginService with Gaudi::PluginService.

    ============================= GaudiKernel v29r1 ==============================
    ============================= GaudiKernel-29-00-02 =============================
    ! 2013-10-24 - Charles Leggett
     - add IIncidentSvc::getListeners(vector<IIncidentListeners*>, IncType) -
           return all clients of a specific incident type
     - add IncidentType::SvcPostFinalize

    M       GaudiKernel/IIncidentSvc.h
    M       GaudiKernel/Incident.h

    ============================= GaudiKernel-29-00-01 =============================
    ! 2013-09-30 - Charles Leggett
     - added io_finalize to IIoComponent.h
       currently not pure virtual, to ease client transition. will be made pure
       when transition complete.

    M       GaudiKernel/IIoComponent.h

    ============================= GaudiKernel-29-00-00 =============================

    ! 2013-06-24 - Marco Clemencic
     - restored presetting of Services outputLevel from MessageSvc (needed to use
       the properties SetDebug, SetVerbose, etc of MessageSvc).
     - restored inheritance of JobHistory on IVersHistoryObj to 'virtual public'.

    ! 2013-04-05 - Charles Leggett
     - add new optional parameter to genconf to allow import/declaration of
       user specified module
    M       src/Util/genconf.cpp

    ! 2013-04-02 - Charles Leggett
     - use a const int for default priority of services
    M       GaudiKernel/ISvcManager.h

    ! 2013-04-02 - Charles Leggett
     - change default priority of services to 100 from 10
    M       GaudiKernel/ISvcManager.h

    ! 2013-03-20 - Charles Leggett
    - fix FileIncident dtor
    M       GaudiKernel/FileIncident.h

    ! 2013-03-19 - Charles Leggett

    several fixes to bring trunk in line with GaudiKernel-27-13-25

     - fix inheritance structure of History objects
    M       GaudiKernel/AlgToolHistory.h
    M       GaudiKernel/JobHistory.h
    M       GaudiKernel/AlgorithmHistory.h
    M       GaudiKernel/ServiceHistory.h

     - Service.cpp: don't preset outputLevel
    M       src/Lib/Service.cpp

     - FileIncident.h: remove payload, move vdtor
    M       GaudiKernel/FileIncident.h

     - TypeNameString.h: include <ostream>
    M       GaudiKernel/TypeNameString.h

    ! 2013-03-06 - Charles Leggett
     - move virtual dtor of IFileMgr and IoComponentMgr to VirtualDestructors.cpp
    D       src/Lib/IIoComponentMgr.cpp
    D       src/Lib/IIoComponent.cpp
    M       src/Lib/VirtualDestructors.cpp
    D       src/Lib/IFileMgr.cpp

    ! 2013-03-06 - Charles Leggett
     - add/update IFileMgr and IoComponentMgr

    A       src/Lib/IIoComponentMgr.cpp
    A       src/Lib/IIoComponent.cpp
    A       src/Lib/IFileMgr.cpp
    A       GaudiKernel/IFileMgr.h
    M       GaudiKernel/IIoComponentMgr.h
    >>>>>>> master

    ============================= GaudiKernel v28r9 ==============================
    ! 2013-08-27 - Marco Clemencic
     - Fixed compile-time issue when symbol hiding is enabled (gcc 4.7).

    ! 2013-07-19 - Marco Clemencic
     - Replaced "#ifdef linux" with "#ifdef __linux" (more reliable: Rolf Seuster
       reported that "linux" is not defined when using C++11).

    ============================= GaudiKernel v28r8 ==============================
    ! 2013-07-04 - Marco Clemencic
     - Updated the exclusion list in make_patch.py.

    ! 2013-07-03 - Marco Clemencic
     - Added test for System::currentTime.

    ! 2013-06-27 - Marco Clemencic
     - Fixed CFHEP-78: configurables created after applyConfigurableUser()
       Force the instantiation of all Handles properties during the call to
       applyConfigurableUser.
       https://sft.its.cern.ch/jira/browse/CFHEP-78

    ! 2013-04-09 - Hubert Degaudenzi
     - src/Lib/System.cpp: fixed cppcheck warning.
     - GaudiKernel/KeyedObject.h: idem
     - GaudiKernel/ServiceHandle.h: idem

    ============================= GaudiKernel v28r7 ==============================
    ! 2013-04-25 - Marco Clemencic
     - Added virtual destructors for IConverter and IConversionSvc to fix issue
       CFHEP-87 <https://sft.its.cern.ch/jira/browse/CFHEP-87>.

    ! 2013-04-23 - Marco Clemencic
     - Fixed Eclipse static analyzer warning.

    ! 2013-04-22 - Marco Clemencic
     - Fixed more Clang warnings.

    ! 2013-04-16 - Marco Clemencic
     - Fixed Clang warnings.

    ============================= GaudiKernel v28r6 ==============================
    ! 2013-02-21 - Marco Clemencic
     - Fixed compilation with CMT on Ubuntu 12.10 (gcc 4.7.2).

    ! 2013-01-30 - Marco Clemencic
     - Fixed a problem in the detection of Boost 1.50 (Sleep.cpp).

    ============================= GaudiKernel v28r5 ==============================
    ! 2013-01-15 - Marco Clemencic
     - Minor change in ConversionSvc constructor to avoid a pointless call to
       queryInterface.

    ============================= GaudiKernel v28r4 ==============================
    ! 2012-11-12 - Marco Clemencic
     - Define the incident and return code for corrupted input files.

    ! 2012-11-05 - Marco Clemencic
     - Added tests/src/parsers.cpp to the QMTest test suite.

    ! 2012-10-22 - Marco Clemencic
     - Fixed SerialTaskQueue_test to compile with LCG g++ 4.6.2 on SLC6.

    ! 2012-10-21 - Marco Clemencic
     - Added implementation of a serial task queue: Gaudi::SerialTaskQueue (based on
       the TBB Pattern 'Local Serializer').
       Users of SerialTaskQueue must implement the tasks to be executed as
       specializations of the class Gaudi::SerialTaskQueue::WorkItem, overriding the
       member function 'run()'.
       Tasks are enqueued with the method 'add(WorkItem*)' of SerialTaskQueue.
       The destructor ensures that all the tasks are completed before giving back
       control.

    ============================= GaudiKernel v28r3 ==============================
    ! 2012-09-13 - Marco Clemencic
     - Fixed compilation warnings.

    ! 2012-09-10 - Benedikt Hegner
     - Added missing copy constructor and assignment operator to 'implementsN<>'
       base class.
       They should not be needed because components cannot not really be copied or
       cloned, but in some cases there are copy constructors and assignment
       operators defined in the derived classes and in those cases the reference
       count should be set to 0 in the initialization of a new object and not
       touched by an assignment.

    ! 2012-09-05 - Marco Clemencic
     - Fixed bug #96673: spurious warnings in GenConfUser
       Modified genconfuser.py to extend the submodules search path for the package
       being processed.

    ! 2012-08-25 - Marco Clemencic
     - Modified genconfuser.py to better discover the existing configurables in the
       CMake-based build.

    ! 2012-08-22 - Marco Clemencic
     - Added option --debug to 'genconfuser.py'.

    ! 2012-07-27 - Marco Clemencic
     - Modified ConfigurableDb.py to search for *_merged_confDb.py in all the dirs
       of PYTHONPATH and not only in the InstallArea.
       It is needed to be able to run the tests from the build directory (CMake).
     - Modified the test for bug #87340 to work without the installation of
       libGaudiKernel.so (CMake).
     - Rationalized the permissions of files in the repository.

    ! 2012-07-13 - Marco Clemencic
     - Fixed a problem with symbols visibility.

    ! 2012-07-12 - Marco Clemencic
     - Modified Gaudi::Sleep and Gaudi::NanoSleep to compile with Boost 1.50.

    ! 2012-06-28 - Marco Clemencic
     - Fixed bug #95733: GaudiKernel::ToStream truncates numbers < 1e-8
       Use ios::showpoint instead of ios::fixed.

    ============================= GaudiKernel v28r2 ==============================
    ! 2012-06-08 - Marco Clemencic
     - Added CMake configuration files.

    ! 2012-06-07 - Marco Clemencic
     - Fixed inconsistency in SharedObjectContainer (found by Clang).
     - Fixed compilation with Clang (lookup of operator<<).
     - Fixed Clang warnings.

    ! 2012-05-05 - Marco Clemencic
     - Fixed some doxygen comments.

    ! 2012-03-26 - Marco Clemencic
     - Added missing __init__.py in python/GaudiKernel

    ============================= GaudiKernel v28r1 ==============================
    ! 2012-02-13 - Marco Clemencic
     - Fixed compatibility problem with Python 2.7.

    ! 2012-02-06 - Sasha Mazurov
     - Patch #5204: GaudiKernel parsers: allow 'L' suffix in integer literals

    ============================= GaudiKernel v28r0 ==============================
    ! 2012-01-25 - Marco Clemencic
     - Added a specific application return code for failure during finalization.

    ! 2012-01-16 - Marco Clemencic
     - Added interfaces for tools used to add dynamic mapping to DataOnDemandSvc:
       IDODNodeMapper, IDODAlgMapper
     - Added output stream operator to Gaudi::Utils::TypeNameString.

    ! 2011-12-16 - Marco Clemencic
     - Fixed genconfuser.py to take into account the new location of the genConf
       directory during the build.

    ! 2011-12-10 - Marco Clemencic
     - Print an error message if the input data stream cannot be initialized.

    ! 2011-12-08 - Marco Clemencic
     - Fixed bug #89628: Missing const methods in CommonMessaging.

    ! 2011-12-07 - Marco Clemencic
     - Fixed bug #89653: Gaudi is not ready for Boost 1.48 (filesystem V3)

    ! 2011-12-05 - Marco Clemencic
     - Removed the unused FastContainerSvc.

    ! 2011-12-01 - Chris Jones
     - Fixed bug #85377: GaudiTuple tuple does not understand ulonglong
       Add support for long long and unsigned long long data types

    ! 2011-11-22 - Marco Clemencic
     - Fixed gcc 4.6 warning: cast to pointer from integer of different size
       (-Wint-to-pointer-cast)
     - Fixed Eclipse CDT Analyzer warning.

    ! 2011-11-16 - Marco Clemencic
     - Fixed the problem with undefined size_t in GaudiKernel/Map.h

    ! 2011-11-01 - Marco Clemencic
     - Moved core services out of GaudiSvc and into the new packages GaudiCoreSvc
       and GaudiCommonSvc. (patch #1816)
       Use GaudiCoreSvc for bootstrap and genconf.

    ============================= GaudiKernel v27r17 =============================
    ! 2011-10-27 - Marco Clemencic
     - Introduced the function System::getProcessTime(pid), the helper class
       ProcessTime and a templated version of adjustTime in GaudiKernel/Timing.h
       (bug #87341).
     - Added unit test for getProcessTime and ProcessTime.
     - Fixed bug #87341: performance problem in ChronoEntity
       Modified ChronoEntity to use getProcessTime and ProcessTime.
     - Added test to detect bug #87340
       (code bloat because of MessageStream operator<<)
     - Fixed bug #87340: code bloat because of MessageStream operator<<
       Added (as suggested) an explicit implementation of operator<< for
       "const char *".

    ! 2011-09-22 - Marco Clemencic
     - Set the Windows link-time option /expectedoutputsize explicitly only for
       GaudiKernel.

    ============================= GaudiKernel v27r16 =============================
    ! 2011-09-02 - Marco Clemencic
     - Fixed bug #86303: new parses not allowing empty maps

    ! 2011-09-01 - Sasha Mazurov
     - Patch #5027: fixed a problem in the parsing of map representations

    ============================= GaudiKernel v27r15 =============================
    ! 2011-08-26 - Sebastien Binet
     - Fixed bug #82435: Possible genConf bug in dealing with vector<double> filled
                         with zeros by default.

    ! 2011-08-08 - Marco Clemencic
     - Added the non-templated method AlgTool::service
       - This makes AlgTool more similar to Algorithm, in order to simplify some
         code in GaudiCommon.
     - Fixing bug #83775: unprotected MSG::DEBUG/VERBOSE
       - ServiceLocatorHelper
       - MinimalEventLoopMgr
     - Fixed a bug in Service that was causing an inconsistency between the output
       level of the service and the table in MessageSvc.

    ! 2011-08-07 - Marco Clemencic
     - Modified Gaudi::Cast to use InterfaceID instead of type_info.
     - Modified CommonMessaging to be able to get the current output level from the
       embedded MsgStream.

    ! 2011-08-05 - Marco Clemencic
     - Fixing bug #83775: unprotected MSG::DEBUG/VERBOSE
       Fixed Algorithm, Service, DataSvc
     - Modified CommonMessaging (and Service) to correctly take into account
       changes to the output level happening after the cached MsgStream is created.

    ! 2011-08-04 - Marco Clemencic
     - Fixed bug #84663: allow access to addresses of private members of StatEntity
       Changed the signature of the methods returning the internal data members
       to return a const& instead of a copy.

    ! 2011-08-04 - Charles Leggett
     - Patch #4941: Added interfaces IIoComponent and IIoComponentMgr

    ! 2011-08-04 - Marco Clemencic
     - Removed implementation of parsers that are not needed to reduce compilation
       time and size (patch #4891)

    ! 2011-08-03 - Sasha Mazurov
     - Renamed GaudiKernel/Grammars.h to GrammarsV2.h to allow easier backward
       compatibility.
     - Reintroduced the old (Spirit 1) headers Grammars.h and Parsers.icpp for
       backward compatibility (with the introduction of a deprecation warning).

    ! 2011-08-02 - Marco Clemencic
     - Fixed a compilation error on ICC (patch #4891)

    ! 2011-07-27 - Marco Clemencic
     - Hidden compilation warnings in Grammars.h using the pragma "system_header".

    ! 2011-07-26 - Marco Clemencic
     - Improved the stability of HistoryObj and IVersHistoryObj in dynamic_cast.

    ! 2011-07-26 - Markus Frank
     - Patch #4999: Added virtual destructor implementation for IUpdateableIF

    ! 2011-07-25 - Marco Clemencic
     - Fixed a compilation problem triggered by the changes in some header files.

    ! 2011-07-22 - Marco Clemencic
     - Divided the bulk of parsers in several small files to speed up the
       (parallel) compilation.

    ! 2011-07-22 - Sasha Mazurov
     - Patch #4891: New parsers for Gaudi Configuration
       - Fully rewritten parsers (less amount of code, more readable and more robust)
       - Based on Boost.Spirit 2
       - New parsers for std::set and std::list
       - Job options files: variables introduced

    ! 2011-07-21 - Charles Leggett
     - Patch #4943: Consolidate GaudiSvc and GaudiKernel patches in Atlas tags
       Update HistorySvc to use new HistoryObj base classes, and provide XML output

    ! 2011-07-21 - Marco Clemencic
     - Added use of 'UNLIKELY' in the destructor of StatusCode.

    ! 2011-07-21 - Charles Leggett
     - Patch #4975: check for uncaught exceptions in StatusCode destructor
       If a StatusCode is created in some alg, and an exception is thrown before
       it's checked, when the stack is unwound it will trigger an unchecked status
       code error from the StatusCodeSvc, which can mislead people as to the true
       cause of the problem.
       This patch checks for std::uncaught_exception() in the StatusCode destructor
       before calling the StatusCodeSvc.

    ! 2011-06-27 - Marco Clemencic
     - Fixed a problem with the compilation of genconf on ICC after the fix to
       bug #83433.

    ! 2011-06-24 - Hubert Degaudenzi
     - removed useless ";".

    ! 2011-06-23 - Marco Clemencic
     - Fixed bug #83433: reject invalid properties in genconf
       Modified genconf to use a regular expression to validate property names.

    ! 2011-06-23 - Hubert Degaudenzi
     - fixed warnings from the eclipse code analysis engine.

    ! 2011-06-23 - Marco Clemencic
     - Fixed bug #83524: Unprotected debug message in Service::initialize
     - Fixed bug #83525: Usage of THIS in GaudiKernel/implements.h
       Replaced THIS with T, as suggested.

    ============================= GaudiKernel v27r14 =============================
    ! 2011-04-19 - Marco Clemencic
     - Fixed a defect spotted by Coverity in KeyedObject (UNINIT_CTOR).

    ! 2011-04-18 - Marco Clemencic
     - Moved the LIKELY and UNLIKELY macros to GaudiKernel/Kernel.h

    ! 2011-04-15 - Charles Leggett
     - added LIKELY and UNLIKELY macros to improve branch prediction for linux
     A       GaudiKernel/likely.h

    ! 2011-04-15 - Marco Clemencic
     - Fixed a warning triggered by the macro NDEBUG.
     - Fixes to patch #4820.

    ! 2011-04-14 - Markus Frank
     - Patch #4820: fix bug #80947
       Fix bug accessing system-memory information, if process memory is > 4GB.

    ! 2011-04-08 - Marco Clemencic
     - Introduced two new incidents: BeginProcessing and EndProcessing.
       They are needed to reintroduce the signals around the processing loop as
       it was the case for BeginEvent and EndEvent before GaudiSvc v17r0.

    ! 2011-03-28 - Marco Clemencic
     - Fixed a typo.

    ! 2011-03-23 - Marco Clemencic
     - Fixed VC9 warnings.
       - Replaced C-style string manipulation and formatting with C++ (and Boost)
         implementations.
       - Disabled some warnings.
       - Removed some "empty" files (files producing empty objects files),
         replacing them with a test .cpp file to ensure that the headers do not
         contain syntax errors.

    ! 2011-03-22 - Marco Clemencic
     - Added a function to convert IAuditor::StandardEventType to const char*,
       (toStr) needed to simplify the implementation of some auditors.

    ! 2011-03-17 - Marco Clemencic
     - Modified DirSearchPath to remove boost::filesystem::no_check. It is not
       needed and breaks on MacOSX in debug mode (at least with Boost 1.44).
       See patch #4735.
     - Fixed PathResolver_test to work on MacOSX.

    ! 2011-03-16 - Charles Leggett, Marco Clemencic
     - Patch #4722: detect unprotected DEBUG and VERBOSE messages

    ============================= GaudiKernel v27r13 =============================
    ! 2011-02-21 - Charles Leggett
     - Fixed bug #77534: this-> needed in Property.h

    ============================= GaudiKernel v27r12 =============================
    ! 2011-01-19 - Markus Frank
     - Fixes for bug #77109.
       Add a virtual "update()" method to the DataObject.
       This method should then be called unconditionally by converters.
       Remove the obsolete "serialize()" methods.
       Apply this method to the keyed containers and replace the
       existing "configureDirectAccess()" method with "update()".
       (patch #4613)

    ! 2011-01-14 - Markus Frank
     - Patch #4607: Do not store process id.
       ProcessDescriptor.cpp Do not locally store the process id (pid).
       This causes problems e.g. after a call to fork(), because the data
       accessed are those of the parent process, not the newly created process.

    ! 2011-01-11 - Marco Clemencic
     - Fixed some ICC remarks.

    ! 2011-01-07 - Marco Cattaneo
     - Locally disable few ICC remarks.

    ! 2011-01-06 - Marco Clemencic
     - removed extra ';'
     - added QMTest wrapper for PathResolver_test and fixed compilation errors on
       windows

    ============================= GaudiKernel v27r11p1 =============================
    ! 2010-12-05 - Charles Leggett
     - Added PathResolver tests as per patch #4394
       M cmt/requirements
       A tests/PathResolver/...
       A tests/src/PathResolver_test.cpp
     - bug #76057: PathResolver looks for file as if fully specified first
       M src/Lib/PathResolver.cpp

    ! 2010-12-01 - Marco Clemencic
     - Fixed bug #70770: inconsistent order of stop/finalize of sub-algorithms
       As suggested, modified the order in which the sub-algorithms are stopped
       to match the order in which they are finalized.

    ============================= GaudiKernel v27r11 =============================
    ! 2010-09-20 - Marco Clemencic
     - Fixed bug #70956: Add method to find the reason for termination of the
                         event loop
       - Defined constants for application return codes and minor change to the logic
         (GaudiKernel/AppReturnCode.h)
       - Set appropriate return code in case of "scheduled stop" and unhandled exceptions
         (MinimalEventLoopMgr)

    ! 2010-09-17 - Vanya Belyaev
     - Fixed bug #72170: Python Parsers and map of <string, unsigned int>
       Added support for map<string,unsigned int>.

    ! 2010-09-17 - Marco Clemencic
     - Minor fix to make_patch.py

    ! 2010-09-14 - Marco Clemencic
     - Fixed a warning introduced with patch #4394.

    ! 2010-09-13 - Charles Leggett
     - Patch #4394: rewriting PathResolver using boost::filesystem
       - simplified the code
       - small change in behavior:
         if the search for "B/a.txt" is not successful, the original PathResolver
         would traverse the search list again looking for just "a.txt"; not it is
         not the case anymore

    ! 2010-08-23 - Marco Clemencic
     - Modified "loadConfigurableDb" to be able to find *_merged_confDb.py in any
       subdirectory of the InstallArea (needed to be able to install platform-
       independent files in the platform-specific directories, see GaudiPolicy).

    ! 2010-08-20 - Marco Clemencic
     - Modified src/Lib/Debugger.cpp to compile on VC9.

    ! 2010-08-19 - Marco Clemencic
     - Minor fix in SmartDataPtr.h to allow code analysis with Coverity.
     - Fix for ICC in GaudiKernel/StreamBuffer.h.

    ! 2010-08-18 - Charles Leggett
     - Patch #4323: allow user defined heavy ion handling in PartPropSvc

    ============================= GaudiKernel v27r10 =============================
    ! 2010-07-12 - Charles Leggett
     - Patch #4216: Don't check StatusCode when GaudiException is thrown

    ! 2010-06-25 - Charles Leggett
     - Patch #4215: updates to THistSvc
       - expanded interface to get all hists/trees in a file/dir
       - add class FileIncident
       (includes patch #3447)

    ! 2010-06-24 - Markus Frank
     - Patch #4211: Fix bug in data length calculation for fixed
                    length ntuple items arrays/matrices

    ! 2010-06-23 - Marco Clemencic
     - Fixed bug #67543: InputCopyStream copies data not defined in its OptItemList
       Added The interface for a tool that returns the list of objects of the
       transient store: IDataStoreLeaves.
     - Fixed bug #66973: Bug in SharedObjectsContainer
       Removed the copy constructor of SharedObjectsContainer.

    ! 2010-06-07 - Marco Clemencic
     - Fixed bug #66454: Fixing Converter::service_i

    ! 2010-06-21 - Charles Leggett
     - Fix to bug #68555: getting const services

    ! 2010-06-07 - Marco Clemencic
     - Fixed a warning introduced with patch #3677.

    ! 2010-05-25 - Vanya Belyaev
     - Patch #3677: Iteration over map-like containers in python
       Added an empty base class for Map and HashMap to be able to easily pythonize
       the maps and make them behave as Python dictionaries.

    ! 2010-05-11 - Marco Clemencic
     - Fixed bug #64571: Python 2.6 warnings
       Removed extra arguments in the call to "object.__new__".

    ============================= GaudiKernel v27r9 ==============================
    ! 2010-04-22 - Marco Clemencic
     - Use the property "ReturnCode" of the ApplicationMgr as return value of the
       application (Gaudi.exe).
     - Added a couple of helper functions to easily set/get the return code of the
       application (GaudiKernel/AppReturnCode.h).

    ! 2010-04-20 - Marco Clemencic
     - Removed ICC warnings and remarks.

    ! 2010-04-16 - Vanya Belyaev
     - Patch #3943: Good names for StatEntity methods
       - GaudiKernel/StatEntity.h: add new names for "ugly methods"
             flag        -> sum
             flagMean    -> mean
             flagMeanErr -> meanErr
             flagRMS     -> rms
                 ...
         All "flag" methods are moved into "legacy"-section.
         The old methods were OK when Counter has two fields "flag"(additive) and
         "weight" (multiplicative), but after removal of "weight" all these flag*
         methods are ugly.
     - Patch #3989: Tiny (but very important) fix for Gaudi::RangeBase_
       The patch removes the protected destructor form Gaudi::RangeBase_.

    ============================= GaudiKernel v27r8 ==============================
    ! 2010-03-16 -Charles Leggett
     - Patch #3718: Unchecked StatusCode in GaudiKernel/Algorithm.cpp
       Modified the code to avoid Unchecked StatusCode in case of failures.

    ! 2010-03-15 - Markus Frank
     - Patch #3912: Add a IInterface-based version of IUpdateable.

    ! 2010-03-08 - Charles Leggett
     - Fixed bug #63502: GaudiKernel/Converter.cpp don't assume converter
       is a ConverterSvc when retrieving name

    ! 2010-03-02 - Marco Clemencic
      - Improvements in ConfigurableUser:
        - Allow dependency between named ConfigurableUser instances.
          The entry in __used_configurables__ can be a tuple where the first element
          is the class (or class name) and the second element is the instance name.
          If the instance name is equivalent to False (None, "", etc.), the name of
          the instance is obtained through the method self._instanceName() that, by
          default, returns "<userclass>_<class>", but can be overridden.
        - Added a method to get a used instance by name: self.getUsedInstance().
      - Minor fix in Configurable: allow to instantiate it passing the name as a
        keyword argument (it was failing if the instance already existed).
      - Fixed a race condition in WatchdogThread.

    ! 2010-02-26 - Marco Clemencic
     - Added a simple generic class (WatchdogThread) for implementation of software
       watchdogs (in the sense of a secondary thread that periodically checks that
       an event has occurred).
       A derived class should implement (at least) the method "action()", which is
       invoked when the time-out occurs without that another thread called the
       "ping()" method of the watchdog.

    ! 2010-01-29 - Marco Clemencic
     - Fixed icc remark #1599: declaration hides variable
     - Fixed icc warning #858: type qualifier on return type is meaningless
     - Fixed icc warning #279: controlling expression is constant

    ! 2010-01-28 - Marco Clemencic
     - Fixed icc remark #424: extra ";" ignored
     - Fixed icc remark #111: statement is unreachable
     - Fixed icc remark #193: zero used for undefined preprocessing identifier
     - Fixed icc remark #522: function "X" redeclared "inline" after being called
     - Fixed icc remark #304: access control not specified ("private" by default)
     - Fixed icc remark #177: X declared but never referenced
     - Fixed icc remark #193: zero used for undefined preprocessing identifier X

    ============================= GaudiKernel v27r7 ==============================
    ! 2010-01-19 - Markus Frank
     - Fixed EventSelectorDataStream to fit with the changes in GaudiSvc
       (support of 'SVC=' in EventCollectionSvc) and removed references to SICB.

    ! 2010-01-15 - Marco Clemencic
     - Fixed compilation on icc 11.
       - cmt/requirements:
         removed the cppflag -Wno-unused-parameter because not understood by icc
         (only for icc).
       - GaudiKernel/HashMap.h:
         modified to use the same code as gcc < 4.3 (ext/hash_map)
       - GaudiKernel/SmartDataPtr.h:
         disabled (icc only) a trick to avoid problems with hidden operator=,
         otherwise icc gives the error
           internal error: assertion failed: add_symbol_to_overload_list
       - src/Lib/Bootstrap.cpp:
         removed the method <anonymous>::ShadowEntry::operator=, never used and not
         accessible outside the translation unit, to avoid a warning.
       - src/Lib/System.cpp:
         removed the declaration "extern char **environ;" from within the method
         System::getEnv() (if on linux), because not needed and icc was trying to
         resolve it as System::environ.
       - scripts/make_patch.py:
         updated the default exclusion list.

    ! 2010-01-15 - Marco Clemencic
     - Fixed a bug in genconf: the third argument passed to the factory of tools was
       IService* instead of IInterface* (it works as long as the memory address is
       the same).

    ! 2010-01-11 - Vanya Belyaev
     - Patch #3478: Registration for Algorithm Context Service
       Moved the registration for the context service from GaudiAlgorithm to Algorithm

    ! 2010-01-11 - Paolo Calafiura
     - Fixed bug #61169: confusing behavior of PathResolver when dealing with relative paths
       Fixed handling of paths like "../test/A:../test/B".

    ! 2010-01-08 - Marco Clemencic
     - Fixed bug #61144: configuration problem for 'empty' tool handles

    ! 2009-12-17 - Vanya Belyaev
     - Patch #3486: Class LockedChrono
       Helper class to measure CPU-performance of highly recursive objects.

    ! 2009-12-15 - Marco Clemencic
     - Fixed bug #59450: valgrind reports conditional or jump depends upon
                         uninitialized variable in ProcessDescriptor
       Fixed following the suggestion in the bug report.

    ============================= GaudiKernel v27r6 ==============================
    ! 2009-11-09 - Marco Clemencic
     - Fixed a problem with ConfigurableUser.propagateProperty when the property is
       a list (or dictionary).

    ! 2009-11-09 - Vanya Belyaev
     - Patch #3357: Comparison of floating point numbers
       GaudiKernel/Lomont.h, src/Lib/Lomont.cpp
         *  The equality comparison of double numbers using as the metric the maximal
         *  number of Units in the Last Place (ULP).
         *  It is a slightly modified version of very efficient implementation
         *  of the initial Bruce Dawson's algorithm by Chris Lomont.
       The functions are copied from Kernel/LHCbMath package

    ! 2009-11-09 - Marco Clemencic
     - Modified the dictionary for DataObject to make the version persistent.

    ! 2009-10-29 - Marco Clemencic
     - Fixed few minor problems (including a possible buffer overflow).

    ! 2009-10-23 - Marco Clemencic
     - Modified genconfuser.py to also print a stack trace in case of ImportError.

    ================ GaudiKernel v27r5 ====================================
    ! 2009-10-19 - Marco Clemencic
     - Improved error reporting in genconfuser.py in case of missing modules and
       always fail on ImportError.
     - Fixed a problem in genconfuser.py occurring when a ConfigurableUser was found
       in more than one python module of the package. Not it is reported as existing
       only in the first imported module.

    ! 2009-10-15 - Marco Clemencic
     - Minor change to ConfigurableUser to allow the declaration of
       __used_configurables__ with strings.
     - Fixed a compilation (visibility) problem on gcc43 with GAUDI_V21 tag enabled
       introduced by patch #2978.

    ! 2009-10-13 - Marco Clemencic
     - Fixed compilation problem on Windows caused by patch #3223.
     - Modified DirSearchPath_test to avoid "/tmp" to make it more Windows friendly.
     - Disabled the support for LorentzVector as Property (patch #3223) on Windows
       (compilation problem).

    ! 2009-10-12 - Marco Clemencic
     - Normalization of white-spaces in Python files.
       (using http://svn.python.org/projects/python/tags/r254/Tools/scripts/reindent.py)

    ! 2009-10-12 - Vanya Belyaev
     - Patch #2978: GaudiKernel/StringKey.h
       New class Gaudi::StringKey to be used as "Efficient" key.
       Essentially it is just a string with pre-computed hash.

    ! 2009-10-08 - Vanya Belyaev
     - Patch #3223: Add some more "Extended" property types to Gaudi

       "Vectors"
            Gaudi::Point3D
            Gaudi::Vector3D
            Gaudi::LorentzVector

        "SVector"
            ROOT::Math::SVector

        "BoostArrays"
            boost::arrays

        "CArray"
            C-arrays

        These properties are not available "on-default"  (why?)
        To use these properties one needs to include the corresponding files
           GaudiKernel/VectorsAsProperty.h
           GaudiKernel/SVectorAsProperty.h
           GaudiKernel/BoostArrayAsProperty.h
           GaudiKernel/CArrayAsProperty.h

        The usage is new proeprties is fairly trivial and illsutrated by
        new exampeles in GaudiExamples package:
           ExtenderProperties2,
           ArrayProperties
           BoostArrayProperties

        Attention:
          For *NOW* one needs to include these files before direct or
          indirect inclusion of  GaudiKernel/Property.h.
          The problem comes from some invalid design of "generic"
          function in GaudiKernel/ToStream.h  (mia culpa).
          I am goind to provide the redesigned version of ToStream.h,
          but it will take some time.
          For a time being one needs to take crea botu the
          inclusion of new headers

    ! 2009-10-07 - Marco Clemencic
     - Patch #3239: Moved Parsers.icpp to the public headers directory (GaudiKernel)

    ! 2009-10-02 - Marco Clemencic
     - Fixed bug #55292: Algorithms are never deleted
       - Fixed a problem in the reference counting of sub-algorithms.

    ! 2009-09-26 - Marco Clemencic
     - Reverted the changes in GaudiException while looking for a better
       solution (too many classes where relying on the internals of
       GaudiException).
       The other changes have been kept.

    ! 2009-09-25 - Marco Clemencic
     - Slightly modified GaudiException, MsgStream end few others to reduce the
       possibility of an exception in the middle of a catch block in case of
       std::bad_alloc (which would result in an immediate exit/abort).

    ! 2009-09-24 - Rob Lambert
     - Patch #3275: Patch to fix Incident consistencies
       - Change in name of FailedOutputFile -> FailOutputFile for consistency
         Incident.h

    ! 2009-09-15 - Rob Lambert
     - Patch #3240: Patch to allow backward compatibility of Incidents
       - Added a preprocessor define, which can be checked at compile time, and
         ensures backward-compatibility of the LHCb project.

    ! 2009-09-08 - Rob Lambert
     - Patch #3222: Patch to Issue incidents for Input Files
       - Details required for the documentation of output
         files in the Summary services
       - Added method to EventSelectorDataStream
         dbName, returns m_dbName, which contains the parsed dataset name
         required for the issuing of an incident
       - Added extra incident definitions to Incident.h
         BeginOutputFile BeginInputFile
         FailOutputFile FailInputFile
         EndOutputFile EndInputFile
         WroteToOutputFile

    ================ GaudiKernel v27r4 ====================================
    ! 2009-08-01 - Rob Lambert
     - Patch #3174: Added ICounterSummarySvc.
       This is a pure abstract interface to allow the persistance of
       counters in a file. This will be implimented by LHCb in the
       writing of an XMLSummary. StatEntities and Stat objects can be added.

    ! 2009-07-31 - Marco Clemencic
     - Modified genconfuser.py to find the local configurables also when the file
       python.zip does not contain them yet.

    ! 2009-07-30 - Marco Clemencic
     - Fixed some doxygen warnings.
     - Use of the tag "no-hide-warnings" to re-enable warnings due to external
       libraries.
     - Added a generic hash function in GaudiKernel/Hash.h (not used by default) to
       allow simpler transition to the new Hash class introduced with patch #2979.

    ! 2009-07-29 - Marco Clemencic
     - Modified the script genconfuser.py to accept an extra option to locate the
       locker module.
     - The scripts merge_files.py, ZipPythonDir.py and genconfuser.py can now be
       synchronized with a "global lock file" defined with the environment variable
       GAUDI_BUILD_LOCK (needed when using tbroadcast or equivalent).

    ! 2009-07-27 - Vanya Belyaev
     - Patch #2979: Modified version of file GaudiKernel/Hash.h
       - _WIN32 specific part (due to non-adequate stdext::hash_map) is removed,
          since stdext::hash_map is not used anymore - GaudiUtils::HahsMap for
          _WIN32 platform is using std::map instead
       - The generic a'la Stroustrup implementation is removed (may break existing
         code)
       - For generic implementation relies on availability of hash_value function in
         a spirit of boost. Boost provides the specializations for the basic
         fundamental types as well for the standard containers
       - there is no specialization for "void*"

    ! 2009-07-22 - Marco Clemencic
     - Modified genconfuser.py to explicitly avoid errors if the imported file tries
       to imports configurables that do not exist.
     - Removed the obsolete merge_genconfDb.py.

    ! 2009-07-20 - Marco Clemencic
     - Fixed a compilation warning in PropertyMgr.cpp.
     - Added '-no_static' to the declaration of the libraries (implemented since CMT
       v1r20p20081118).

    ! 2009-07-16 - Marco Clemencic
     - Support for zipped python directories.
       Modified loadConfigurableDb() to be able to locate the "*_merged_confDb.py"
       inside the .zip files too.

    ================ GaudiKernel v27r3 ====================================
    ! 2009-07-08 - Marco Clemencic
     - Removed the need for extend_interfaces1. Then necessary typedef is added by
       the macro DeclareInterfaceID, simplifying a lot the changes. The drawback is
       that when an interface extends more than one other interface, it must use
       DeclareInterfaceIDMultiBase instead of DeclareInterfaceID.
     - Removed the usage of extend_interfaces1.

    ================ GaudiKernel v27r2 ====================================
    ! 2009-06-29 - Marco Clemencic
     - Removed the special compile time flag for the dictionary (problem fixed in
       ROOT 5.22.00c)

    ! 2009-06-26 - Vanya Belyaev
     - Patch #3019: std::map<std::string,std::pair<double,double> > as property
       Useful for representation of ranges or value+/-error.

    ! 2009-06-26 - Gerhard Raven
     - Patch from bug #52359: Allow setting of logging stream in ProcessJobOptions
       A custom output stream can now be passed to
       GaudiKernel.ProcessJobOptions.InstallRootLoggingHandler().

    ! 2009-06-23 - Marco Clemencic, Vanya Belyaev
     - Patch #2980: Moved Range.h and NamedRange.h from GaudiUtils to GaudiKernel.

    ! 2009-06-22 - Marco Clemencic
     - Disable the macros for the visibility of symbols on Windows, because it is
       impossible (currently) to make coexists the gcc and VC ways.
     - Added a compile time flag for the dictionary to hide warnings.
     - Fixed some compilation problems on Win32.

    ! 2009-06-15 - Hubert Degaudenzi
     - use the new LCG tag convention.

    ! 2009-05-29 - Marco Cattaneo
     - Added "define NOMINMAX" in boost_allocator.h to avoid compilation problems on
       Windows.

    ! 2009-05-25 - Marco Clemencic
     - Fixed bug #45517: Units not taken into account in .opts files
       Added the function importUnits() to populate from python the units used in a
       .opts file.

    ! 2009-05-20 - Yushu Yao
     - Patch #2975: ServiceHandleArray
       Added ServiceHandleArray, similar to ToolHandleArray, but for services.

    ================ GaudiKernel v27r1 ====================================
    ! 2009-05-15 - Marco Clemencic
     - Fixed bug #50389: AppMgr.algorithm/tool/algorithms does not work for
                         GaudiPython::PyAlg<TYPE>
       Changed the inheritance from "implements#": replaced "virtual public" with
       "public" (more correct and does not confuse PyROOT).

    ! 2009-05-14 - Marco Clemencic
     - Fixed an extra "release" of EventDataSvc in EventSelectorDataStream.
       At each new file, the reference count was artificially decreased by 1,
       causing a segmentation fault during finalization.

    ! 2009-05-13 - Eric Van Herwijnen
     - Patch #2998: Extension of IMonitorSvc for StatEntity
       Added a declareInfo method for StatEntity instances.

    ! 2009-05-07 - Marco Clemencic
     - Added backward compatibility hack in SmartIF: SmartIF::pRef.
       Can be disabled with the macros GAUDI_V22_API and NEW_SMARTIF.
     - Added a temporary hack to allow the print out of a SmartIF instance.

    ! 2009-05-06 - Marco Clemencic
     - Simplified the implementation of SmartIF, removing the unnecessary base
       class. It requires some more code duplication in the implementation of
       SmartIF<IInterface>.
       Part of the simplification comes from auto_ptr and the Boost smart pointers.
       Note: NOT backward compatible.

    ! 2009-04-27 - Marco Clemencic
     - Added specific macros to disable specific backward compatibility hacks.
       The hacks are all enabled with the preprocessor macro GAUDI_V20_COMPAT,
       and they are all disabled if the macro is not defined.
       Each of them can be disabled independently of the others using the
       following macros (enabled with the same CMTEXTRATAG):
       - G21_NEW_INTERFACES: new interfaces and interfaces ids
       - G21_HIDE_SYMBOLS: enable symbol visibility control
       - G21_NO_ENDREQ: remove the obsolete endreq
       Some hacks are disabled by the macro GAUDI_V22_API and can be independently
       disabled with the macros:
       - G22_NEW_SVCLOCATOR: backward incompatible changes to ISvcLocator etc.
       Obsolete/deprecated methods and functions (kept with GAUDI_V20_COMPAT)
       can be removed with the macros G21_NO_DEPRECATED and G22_NO_DEPRECATED.

    ================ GaudiKernel v27r0 ====================================
    ! 2009-04-08 - Marco Clemencic
     - Fixed bug #47258: gaudirun.py -o option.opts option.py introduces
                         explicit \n and \t in strings

    ! 2009-04-08 - Marco Clemencic, Vanya Belyaev
     - Fixed bug #48401: No dictionaries for IStatSvc and IChronoSvc

    ! 2009-04-07 - Marco Clemencic
     - Moved back the namespace MSG to the global namespace.

    ! 2009-04-06 - Charles Leggett
     - Fixed bug #48889: Copy and paste errors in MinimalEventLoopMgr

    ! 2009-04-06 - Marco Clemencic
     - Renamed back the namespace Msg to MSG and moved it into the namespace Gaudi.
       The backward compatibility is obtained with a namespace alias, that is
       enabled with GAUDI_V20_COMPAT and can be selectively disabled with the macro
       NO_OLD_MSG_NAMESPACE.
     - Renamed back INamed to INamedInterface.

    ! 2009-04-02 - Charles Leggett
     - Patch #2867: Propagate finalize errors of sub-algorithms.
     - Patch #2871: Propagate errors in Property callbacks.
       Changed the return value of Property::useUpdateHandler() and added a
       try-catch to trap exceptions and return a failure in that case.

    ! 2009-03-18 - Marco Clemencic
     - Minor change in Service::service<T> to avoid a problem with an old gccxml
       (ROOT 5.18).

    ! 2009-03-13 - Marco Clemencic
     - Task #9061: Introduction of component managers
       - Added the IComponentManager interface to allow a common and generic
         handling of managers. A basic implementation is provided too
         (currently used only by ServiceManager and AlgorithmManager)
         The FSM transitions are accessed through the IStateful interface, instead
         of specific methods like initializeServices or finalizeAlgorithms.
     - Simplified the interfaces ISvcLocator, ISvcManager, IAlgManager reducing
       the methods. The new format is enabled with the cpp macro GAUDI_V22_API.
       The main function now returns a SmartIF instead of a StatusCode.
     - Added a templated base class (CommonMessaging) to instrument classes with
       common messaging functionalities: msgSvc(), caching of the message stream,
       info(), etc.
     - Disabled the constructor of InterfaceID from a long (conditional to
       GAUDI_V20_COMPAT). The result was not correct.
     - Removed "void** operator& ()" from SmartIF because prevents the creation of
       std::list<SmartIF<T> >.
     - Replaced the small class "ListItem" with a more explicit "TypeNameString"
       with the same implementation.
     - Code adapted to the changes in the API.

    ! 2009-03-05 - Marco Clemencic
     - Added a macro to disable the longlong typedef: NO_LONGLONG_TYPEDEF.

    ! 2009-02-19 - Marco Clemencic
     - Patch #2790: Rename the namespace MSG to Msg

    ! 2009-02-06 - Marco Clemencic
     - Moved the implementation of the methods addRef and release to the templated
       base class implements<> (avoids duplication).
     - Modified implements.h to use preprocessor macros instead of replicated code.
     - Fixed a problem with MinimalEventLoopMgr::executeEvent. An AbortEvent
       incident fired by the last top alg in the list caused the skipping of the
       following event.

    ! 2009-01-30 - Marco Clemencic
     - Fixed compilation warnings when using Boost 1.38 (Spirit changed includes).
     - Replaced all the occurrences of endreq with endmsg. Removed endreq and added
       a macro endreq for backward compatibility (enabled with -DGAUDI_V20_COMPAT).

    ! 2009-01-29 - Marco Clemencic, Sebastien Binet
     - Symbol visibility (includes patch #2641)
       Added the preprocessor macros GAUDI_API, GAUDI_EXPORT, GAUDI_IMPORT and
       GAUDI_LOCAL to allow the decoration of classes and functions with visibility
       attributes.
       Decorated all the classes and functions that needs to be exported. This means
       essentially:
         - classes with at least one method in a .cpp file
         - abstract/virtual classes (to have the virtual destructor only in one
           place, to allow a correct dynamic_cast)
         - non-inline functions (i.e. implemented in .cpp)
         - all the classes that are part of an hierarchy that has to be navigated
           with dynamic_cast
       Usually it is not needed to decorate the fully-inlined classes/functions and
       the templated ones (unless they are using globals or are not completely
       implemented in the .h).
       In some cases it is enough to decorate only the non-inline methods of a
       class, mainly if the ratio non-inline/inline is small.

    ! 2009-01-29 - Marco Clemencic
     - Restored the special implementation of queryInterface for PropertyMgr.

    ! 2009-01-23 - Marco Clemencic
     - Fixes
       - added Boost_linkopts_date_time to avoid a compilation problem on win32
         with the LCGCMT 56 candidate (Boost 1.37)
       - removed fake declaration of mpl_::na (Boost) used for GCCXML
       - constantness problems in the new code discovered by gcc 4.3
       - warning about non specified base class in a copy constructor

    ! 2009-01-22 - Marco Clemencic
     - Introduced Boost Meta Programming Library (MPL) code to allow automatic
       generation of queryInterface methods.
       - modified IInterface to provide the needed basic typedefs
       - added the class Gaudi::InterfaceId to collect the list of interfaces
         implemented
       - added the templated classes extend_interfaces#, implements#, extends#
         - extend_interfaces#: used to write interfaces that inherits from other
                               interfaces (IInterface too)
         - implements#       : used to write concrete classes based on interfaces
                               only
         - extends#          : used to write concrete classes that extend concrete
                               classes with other interfaces (the constructor of the
                               base class must be called via the base_class typedef)
         if these classes are used, the method queryInterface is generated
         automatically.
       - added the preprocessor macro DeclareInterfaceID to declare the interface id
         for the interface; it must be put in the public section of the interface
         declaration using the interface as first argument, then major and minor
         versions:

           class IMyFunctionality: virtual public extendInterfaces1<IInterface> {
           public:
             DeclareIterfaceID(IMyFunctionality,1,0);
           };

       - modified the interfaces to use the new functionalities
       - NOTE: An updated interfaces does not require changes in the concrete
               implementations if GAUDI_V20_COMPAT is enabled. On the other hand, an
               adapted concrete class requires that all its interfaces are adapted.
       - added the (automatically generated) method IInterface::getInterfaceNames
         which returns a vector with the names of the interfaces implemented by the
         component
       - all the IID_* constants had to be removed to avoid conflicts with the IDs
         generated with DeclareIterfaceID (note that they are not needed even in
         v20-compatible code)
     - Renamed INamedInterface to INamed. The old header and a typedef are provided
       for backward compatibility (only if the macro GAUDI_V20_COMPAT is used).
     - Removed the obsolete ITime.h, TimePoint.h and Algorithm.icc.

    ================ GaudiKernel v26r1 ====================================
    ! 2008-12-16 - Marco Clemencic
     - Modified the Configurable.getValuedProperties logic to use all the explicitly
       set properties and not only those different from the defaults.

    ! 2008-12-15 - Marco Clemencic
     - Added the possibility of declaring "passive" dependencies between
       ConfigurableUser instances (i.e. C.U.s from which the properties are taken).
       The dependency is declared with the class data member
       __queried_configurables__.
     - Modified Python logging formatter of configurables to add the prefix ("#") to
       each printed line.

    ! 2008-12-10 - Marcus Frank
     - Patch #2699: First version of run records service
       Generalize DataIncident to also pass arbitrary parameters.

    ! 2008-12-09 - Marco Clemencic
     - Fixed minor problem in Configurable.__new__ for ConfigurableUser.

    ! 2008-12-07 - Marco Clemencic
     - Fixed compilation warning with gcc 4.3.

    ! 2008-12-05 - Marco Clemencic
     - Improved the logic of ConfigurableUser.propagateProperty (see the code for
       details).

    ! 2008-12-01 - Marco Clemencic
     - Fixed bug #44504. Inconsistent default for createIf flag for services.
       Set the default of the flag to "true" in both IServiceLocator::service
       signatures.
     - Fixed bug #44279. Ambiguous signature in setProperty functions
       Removed the redundant declarations.
     - Fixed problems with ToolHandles.

    ! 2008-11-27 - Marco Clemencic
     - Fixed compilation problems with ROOT 5.21/06.

    ================ GaudiKernel v26r0 ====================================
    ! 2008-11-13 - Pere Mato
     - Added the functions pushCurrentDataObject and popCurrentDataObject, taken
       from GaudiPoolDb.

    ! 2008-11-12 - Marco Clemencic
     - Added the possibility of specifying post-config actions (functions to be
       called after the call of all __apply_configuration__ methods) with the
       functions appendPostConfigAction and removePostConfigAction from
       GaudiKernel.Configurable (exposed via Gaudi.Configuration too).

    ! 2008-11-11 - Marco Clemencic
     - Added a small script (make_patch.py) to simplify the generation of patches.

    ! 2008-11-10 - Marco Clemencic
     - Minor change to ISvcManager to allow enable/disable of the initialization
       loop check.

    ! 2008-11-07 - Marco Clemencic
     - Added automatic registration of ConfigurableUser specializations to the
       database of configurables.

    ! 2008-11-06 - Marco Clemencic
     - Re-enabled the GaudiHandleProprtyProxy.
     - Modified the ConfigurableUser base class so that the ConfigurableUser classes
       declared as used are not active by default and they get activated the when
       they get instantiated explicitly. The test has been updated too.

    ! 2008-11-01 - Marco Clemencic
     - Fixed bug #43420. IPartPropSvc not accessible from Python
       Added the missing interface to the dictionary.

    ! 2008-10-30 - Marco Clemencic
     - Fixed a compilation problem on gcc4.3 with properties of type vector<pair>.
       (order of specializations in GaudiKernel/ToStream.h)
     - Replaced operator<<(MsgStream,vector) with the one in GaudiKernel/SerializeSTL.h
     - Modified the base class ConfigurableUser to allow automatic apply. If the
       ConfigurableUser derived class should touch other ConfigurableUser instances,
       the classes must be added to the class data member __used_configurables__
       (see tests/scripts/test_configurable_users.py in the package Gaudi).
     - Added the function GaudiKernel.Configurable.applyConfigurableUsers() which
       actually does the job of calling the apply method of all the ConfigurableUser
       instances.
     - Added the methods getProp and setProp to Configurable (LHCb contibution) and
       propagateProperty and propagateProperties to ConfigurableUsers (adaptations from
       LHCb contributions).

    ! 2008-10-28 - Marco Clemencic
     - Fixed bug #43314. Memory leak in StatusCode
       Added protection against self-assignment and delete of the owned
       IssueSeverity instance.

    ! 2008-10-27 - Marco Clemencic
     - Fixed warnings reported by gcc 4.3:
       - type qualifiers ignored on function return type
       - ../src/Lib/StatusCode.cpp:59: warning: the address of ‘addresses’ will
         always evaluate as ‘true’
       - ISO C++ forbids casting between pointer-to-function and pointer-to-object
         (only active for gcc >= 4)
     - Modified ConfigurableAlgTool.toStringProperty to use getFullName (to get rid
       of the parent name in front of the instance name).
     - Fixed a glitch in Configurable.__str__ when the property is a GaudiHandle.
     - Do not use the full path to genconf.exe with install area.
     - Fixed compilation errors and some warnings on gcc 4.3.

    ! 2008-10-23 - Marco Clemencic
     - Reverted old implementation of the reinitialize method of Algorithm, Service
       and AlgTool, i.e. do nothing. Fixes bug #39706.
     - Fixed bug #42428. Properties of clones are not cloned.
       - Modified the method clone to create copies of the properties if they are of
         types: [ str, list, dict, tuple ].
     - Fixed bug #43065. Error when unpickling GaudiHandles.
       - Modified the constructor of GaudiHandle to accept a GaudiHandle (or any
         instance with the method "toStringProperty") as argument.

    ! 2008-10-21 - Marco Clemencic
     - Improvements in the logging of GaudiKernel.ProcessJobOptions. "Print OFF" and
       "print ON" can be obtained using the GaudiKernel.ProcessJobOptions.PrintOn and
       GaudiKernel.ProcessJobOptions.PrintOff functions.

    ! 2008-10-20 - Marco Clemencic
     - Fixed the cast of errno from "int" to "unsigned long". (Fixes bug #25460)

    ! 2008-10-17 - Sebastien Binet
     - Fixed bug #42005. System::typeinfoName is missing 'signed char'
       - Added the missing case.

    ! 2008-10-17 - Marco Clemencic
     - Patch #2303. Improve/extend IAlgorithm interface
       Added the methods
        - setExecuted
        - isEnabled
        - filterPassed
        - setFilterPassed
     - Fixed bug #39846. gaudirun.py creates invalid entries in flattened options
       Modified filter "getNeededConfigurables" (GaudiKernel.Proxy.Configurable) to
       exclude ConfigurableUser instances.

    ! 2008-10-15 - Marco Clemencic
     - Excluded a couple of problematic methods from the dictionary (not preseent with
       ROOT 5.18, but causing problems with ROOT 5.21).
     - Fixed a problem with patch #2261. The usage of "id" for the aliases was
       conflicting with its usage for the DataObject factories.

    ! 2008-10-10 - Vanya Belyaev
     - Patch #2073: SharedObjectsContainer and 'blind' access to TYPE::Container &
                    TYPE::Selection
       Added SharedObjectsContainer.

    ! 2008-10-09 - Pere Mato
     - Patch #2261. Introducing name alias for Algorithms and Services
       Added the new macros DECLARE_NAMED_ALGORITHM_FACTORY(type,name) to be used
       instead of the current DECLARE_ALGORITHM_FACTORY(type) for algorithms with
       templates. Similarly for Services.

    ! 2008-10-09 - Marco Clemencic
     - Modified the return type of the "size" methods of ObjectContainerBase,
       KeyedContainer, ObjectList and ObjectVector to be size_t (i.e. "unsigned long")
       instead of long.
       It avoids some compilation warnings.

    ! 2008-10-09 - Vanya Belyaev
     - Patch #2058. Extensions for AIDA::TProfile1D
       IHistogramSvc : few new methods are added for booking of 1D-profiles with
                       Y-range and options

    ! 2008-10-03 - Marco Clemencic
     - Added ITHistSvc::getGraphs(), needed by patch #1963.

    ! 2008-10-01 - Marco Clemencic
     - Minor change in System::backTrace interface.

    ! 2008-10-01 - Frank Winklmeier
     - Patch #1797: Backtrace utility for System
       Generalized version of the code taken from IssueLogger::getTraceBack()
       (GaudiSvc).
     - Patch #1796: Performance improvement for message reporting

    ! 2008-08-06 - Marco Clemencic
     - Fixed bug #39809 (wrong configuration of public tools).

    ! 2008-08-05 - Marco Clemencic
     - Fixed bug #39250. Cannot use configurable instances as values for properties
                         of type map<str,str>.
     - Fixed bug #39117. gaudirun.py export to old options does not handle correctly
                         GaudiHandles.
       Added the method getFullName.
     - Fixed bug #39116. gaudirun.py export to old options prints '#' instead of '//'
       The fix required a review of the way messages are printed across the whole
       Configurables machinery. The Python standard logging module is now used and
       the customization in GaudiKernel.Logging has been removed.
       In printout in Python job option files should be done with the log instance
       accessible from Gaudi.Configuration.

    ================ GaudiKernel v25r2 ====================================
    ! 2008-07-17 - Marco Clemencic
     - Added the interface IEventTimeDecoder (from LHCb detector description), and
       the Reflex dictionary for it.

    ! 2008-07-15 - Marco Clemencic
     - Fixed bug #38868. MinimalEventLoopMgr does not restart algorithms
       Implemented restart so that it calls the restart of all the algorithms.
       Fixed the implementation of reinitialize too.

    ! 2008-07-15 - Gerhard Raven
     - Fixed bug #38855. Inconsistent check in Service::sysRestart.
       Fixed a the result of a bad cut & paste.

    ! 2008-07-15 - Vanya Belyaev
     - Patch #1756. Decrease the probability for FPE in StatEntity::addFlag
       Added a check in StatEntity::addFlag to avoid floating point exceptions
       (underflows).

    ! 2008-07-11 - Charles Leggett
     - requirements: tweak genconfig_cmd macro to work with GAUDI_ATLAS tag

    ! 2008-06-30 - Marco Clemencic
     - Cleaned up Boost link options plus a fix for Boost 1.35.

    ================ GaudiKernel v25r1 ====================================
    ! 2008-06-25 - Marco Clemencic
     - Fixed bug #38206: gaudirun.py fails to set a list property from a property
                         reference.
     - Fixed bug #38194: gaudirun.py expands too many environment variables
       Avoid to expand the environment variables in the strings.

    ================ GaudiKernel v25r0 ====================================
    ! 2008-06-12 - Marco Clemencic
     - Modified the logic behind IFileAccess: the implementation must be able to
       tell which protocols it can handle.

    ! 2008-06-10 - Charles Leggett, Marco Clemencic
     - Fixed bug #37690. message svc release() in Auditor destructor
       - Moved the call the message service release to the finalize method, where it
         should be.

    ! 2008-06-10 - Marco Clemencic
     - Added platform-independent sleep functions:
       - Gaudi::Sleep(int)
       - Gaudi::NanoSleep(long long)

    ! 2008-06-06 - Marco Clemencic
     - Fixed Windows compilation warning (caused by patch #1756).

    ! 2008-06-05 - Marco Clemencic
     - Fixed bug #36742. Cannot pickle options using "PropertyReference"
     - Fixed a problem on osx105 (Undefined symbols: _environ).
     - Fixed bug #37479. gaudirun.py fails parsing old option lines with comments
                         and quotes.
     - Fixed bug #37488. importOptions does not expand environment variables.
     - Fixed bug #35347. Cannot import 2 Python option files with the same name.
       - Used execfile instead of __import__ for Python modules, following Paolo's
         suggestion).
     - Fixed bug #35913. Configurables type checking fails on Gaudi::Histo1DDef.
       - Fixed avoiding that tuples and lists are treated the same way.
     - Fixed bug #34769. Assigning a configurable to a list property does not fail.
       - Values for properties expecting lists, tuples and dictionaries must match
         the type (before it was possible to set a list from an iterable object).
     - Fixed handling of files starting with '#!' in gaudirun.py

    ! 2008-06-04 - Marco Clemencic
     - Fixed the last place where dylib was used on OSX (DsoUtils.h).

    ! 2008-06-04 - Charles Leggett
     - Patch #1865. Better printouts for HistorySvc.
       - Prints out more information about the various History objects to the output
         file.

    ! 2008-06-02 - Marco Clemencic
     - Task #5809. Extension to Gaudi Application state machine.
       First implementation of the proposed extension.
       A new interface (IStateful) has been added to provide a common way of
       interacting with the state machine.
       The interfaces IService, IAlgorithm and IAlgTool have been extended with the
       methods from IStateful, and ISvcManager and IAlgManager have been extended to
       support the new states.
       The states and the transition have been defined in enums
       (Gaud::StateMachine::State, Gaudi::StateMachine::Transition), and the
       constraints on the possible changes are enforced by the function
       Gaudi::StateMachine::ChangeState, which throws an exception if the transition
       is not allowed.
       Since algorithms and tools do not support all the states, the state
       Gaudi::StateMachine::CONFIGURED is reached after the constructor. Services
       are constructed in the state Gaudi::StateMachine::OFFLINE and become
       Gaudi::StateMachine::CONFIGURED in the base class initialize method (as
       defined in patch #1757).
       The methods Algorithm::setInitialized and Algorithm::setFinalized has been
       removed.
       IAuditor has been extended to support auditing of the new transitions (start
       and stop).
       The Reflex dictionary has been updated to include the new classes/enums.

    ! 2008-05-29 - Charles Leggett
     - Changed the name of the extension for libraries on OSX from ".dylib" to ".so".

    ! 2008-05-13 - Vanya Belyaev
     - Patch #1756. Improvements for Chrono/ChronoStat&IChronoSvc
       - Removal of many (ugly) obsolete lines, overall cleanup, improved flexible
         print-out and other improvements.
       - GaudiKernel/IChronoSvc.h
         - The basic type from IChronoSvc now is "double" instead of "longlong".
         - Change the return type from void to "(const)StatEntity*" for the methods
           chronoStart/Stop.
       - GaudiKernel/ChronoEntity.h, src/Lib/ChronoEntity.cpp
         - The class is essentially rewritten (keeping the same public interface) in
           terms of the generic counter StatEntity. And internally it is just a set
           of three generic counters (for user/kernel&elapsed time correspondingly).
           New features includes the better control over the printout through new
           methods: outputUserTime, outputSystemTime, outputElapsedTime, outputTime.
       - GaudiKernel/Chrono.h
         - Make this tiny helper class simpler and more efficient:
           - for the usage with IChronoSvc, avoid one virtual call
           - allow the usage with ChronoEntity class

    ! 2008-05-09 - Marco Clemencic
     - Added small interface (IFileAccess) for services/tools that allow read-only
       file access agnostic of the storage backend (filesystem, web, CondDB, ...).
     - Fixed a minor problem in ProcessJobOptions.py strip away spaces in component
       and property names ("MyAlg . MyProp" -> "MyAlg.MyProp").

    ================ GaudiKernel v24r0 ====================================
    ! 2008-04-04 - Vanya BELYAEV
     - Patch #1751. Fixed a typo in Stat::operator-=.

    ! 2008-04-04 - Marco Clemencic
     - Bug #35201. Python options parser '//' interpreted as comment in strings.
       Fixed by adding an extra check in ProcessJobOptions.py to allow '//' in
       strings (like URLs). The fix is not perfect because requires that the string
       is on a single line, but at least allows it.
     - Fixed Bug #34680. Bad implementation of Service::messageSvc.
       The obsolete methods now forward the call to the correct ones.
       (anyway they should be removed at some point)
     - Fixed a problem introduced with patch #1757.
       Modified DataStreamTool to call sysInitialize instead of initialize for
       conversion services.

    ! 2008-04-04 - Charles Leggett
     - Patch #1757. detect creation/initialization loops for services.
       Modified the way the state of the service is set:
        - the base class initialize sets the state to CONFIGURED
        - the service becomes INITIALIZED in the sysInitialized, after the
          specialized service completed (successfully) the initialization.

    ! 2008-04-03 - Sebastien Binet / Martin Woudstra
     - Bug #34752/Patch #1747. GaudiHandleArray.__getstate__ prevents pickling.
       Fixed.

    ! 2008-04-03 - Vanya BELYAEV
     - Patch #1751.
       Change the signature of declareProperty/declareRemoteProperty methods
        - for PropertyMgr form "void" to "Property*"
        - for Algorithm/Service/AlgTool/Auditor base classes from StatusCode to
          "Property*"

       The previous return value was completely useless:
        - either "void" or (always) StatusCode::SUCCESS

       With the pointer to the actual property returned, one can easily use it, e.g.
       to declare handlers as in:
       //----------------------------------------------------------------------
       class MyAlg : public Algorithm
       {

       public:

         // constructor

         MyAlg ( ... ): Algorithm ( ... )
                      , m_property( .... )
         {
           declareProperty ("Property" , m_property , "some documentation")
             -> declareUpdateHandler ( &MyAlg::handler ) ;
         }

       private:

         SOMETYPE m_property;

       };
       //----------------------------------------------------------------------

    ! 2008-04-03 - Marco Clemencic
     - Patch #1725. New IAuditor interface.
       - The Auditor member functions are now only 8, for all the combinations of:
         * before or after
         * standard event or custom event
         * INamedInterface* or string
       - All the after methods accept a StatusCode (if not specified, a SUCCESS with
         the checked flag set is used).
       - The obsolete member functions are kept for backward compatibility.
       - The default implementations of "before" and "after" are using the obsolete
         methods to make legacy Auditors to work.
       - IAuditorSvc is now an extension of IAuditor.
       - AuditorGuard has been adapted to the new interface and the audit with a
         status code check is simpler.
       - The standard event types defined in the enum IAuditor::StandardEventType
         can be printed and converted to strings with operator<<.

    ! 2008-04-02 - Marco Clemencic
     - Python job options:
       - Removed the possibility of assigning a tool to an attribute of a
         configurable if that attribute/property does not exists. It was intended to
         allow simple declaration of private tools, but it is dangerous because it
         avoids the checking of the spelling of properties.
       - Modified Configurable.addTool() to accept a subclass of ConfigurableAlgTool
         as first argument (as well as an instance) to avoid the instantiation of an
         unneeded instance of the public tool configurable.

    ! 2008-03-11 - Hubert Degaudenzi
     - added 2 patterns to create and use helper library for genconf. Some libraries
       need to have other preloaded libraries in order to perform the genconf
       procedure correctly. While this can be fixed on linux with the
       LD_PRELOAD environment variable, this is not possible on windows. Thus
       the genconf executable takes an extra argument "--load-library" to which
       the full path of the helper library is passed.

    ! 2008-03-07 - Marco Clemencic
     - Added a work around for ROOT bug #34282 in dict/dictionary.xml (excluded few
       data members of Gaudi::Time).
     - Fixed Bug #34046. False warning when mixing Python options and old options.
       The check on the case of old options have been improved.

    ================ GaudiKernel v23r4 ====================================
    ! 2008-02-28 - Marco Clemencic
     - Minor change to fix a regression. The line

         #include"file.opts"

       is understood by the JobOptsSvc, but it was not by the Python parser.

    ! 2008-02-27 - Charles Leggett
     - Patch #1711. Get all instances of a tool type.
       Function used in the Atlas event display.

    ! 2008-02-27 - Marco Clemencic
     - Hack to avoid a conflict in the way Configurables are used in Athena and
       Gaudi.  In GaudiPython they are used in the AppMgr constructor, while in
       Athena they are used in a different moment (and not even all of them are
       needed).
       The conflict is resolved by using a function to return the needed
       configurables, implemented to return the keys of allConfigurables for Gaudi
       and and empty list for Athena.

    ! 2008-02-27 - Wim Lavrijsen
     - Patch #1710. Convenience method for removing entries from GaudiHandleArray
       Add a simple convenience method for deleting tools from a ToolHandleArray by
       name, rather than having to locate them first.

    ! 2008-02-21 - Marco Clemencic
     - Moved the release of m_messageSvc and m_pAuditorSvc from Service::~Service to
       Service::sysFinalize.

    ! 2008-02-21 - Yushu Yao
     - Patch #1687. Adding getPropertyMgr() in AlgTool
       This is needed to develop double use tools (tools that can be used in Gaudi
       as well as in ROOT) in Athena.

    ! 2008-02-20 - Hubert Degaudenzi
     - added static function to Message.{h,cpp} in order to be able to access
       Message::DEFAULT_FORMAT and Message::DEFAULT_TIME_FORMAT.

    ! 2008-02-04 - Charles Leggett
     - Patch #1668.
       In Python 2.5, the method __str__ of ServiceHandles gets called causing some
       problems. The reason has to be investigated, but the patch allows to work.

    ! 2008-02-04 - Yushu Yao
     - Patch #1666: Add AlgTool::declareRemoteProperty
       Added the member function declareRemoteProperty to AlgTool (present in
       Algorithm and Service).

    ! 2008-02-04 - Marco Clemencic
     - Fixed bug #33209: Deprecated raising a string with Python 2.5
       Added a class for errors occurring during the parsing (ParserError).

    ! 2008-01-29 - Marco Clemencic
     - Python options:
       Modified added a flag to the Configurable base class to block assignments.
       The flag is set in GaudiPython.AppMgr after the application manager has been
       configured, to prevent that people try to manipulate the configuration when
       it is too late.
       The lock does not (and cannot) work for in-place changes (like += on a list).

    ! 2008-01-29 - Vanya BELYAEV
     - Modified IInterface::hash32 to use and return "unsigned int" instead of
       "unsigned long" for portability.

    ================ GaudiKernel v23r3 ====================================
    ! 2008-01-18 - Marco Clemencic
     - Fixed bug #32549.
       Changed the level of the message about the AbortEvent incident from ERROR to
       DEBUG.
     - Fixed a compilation warning in genconf.cpp with Boost 1.34.1 on Win32.

    ! 2008-01-14 - Vanya BELYAEV
     - Patch #1581.
       - GaudiKernel/Parsers.h, src/Lib/ParseMaps.cpp
          add the parser functions for parsion of following types:
          1) std::map<int,std::string>
          2) std::map<unsigned int, std::string>
        These types play important roles for LHCb-HLT and are requested
          by Gerhard Raven

    ! 2008-01-11 - Gerhard Raven
     - patch #1621 (bug #32466).
       Add to IToolSvc/ToolSvc the possibility of using observers to monitor the
       creation of and retrieval of tools.

    ! 2008-01-11 - Marco Clemencic
     - Python options:
       - Modified Configurable.addTool to set the property with the same name of the
         tool (if it exists), so that it not hides the tool reference.
       - Modified PropertyProxy.__get__ to allow direct access to the default for
         dictionaries as well as for lists.
       - Added the helper class Configurable.PropertyReference to allow the late
         binding of properties as it was possible in old options (mainly needed for
         backward compatibility).
         The option:

            MyAlg.MyProp = @AnotherAlg.AProp;

         translates to:

            MyAlg().MyProp = Configurable.PropertyReference("AnotherAlg.AProp")

       - Modified the parser of old job options to correctly translate references.
       - Modified ConfigurableAlgTool.getFullName to return only the instance name
         (instead of the fully qualified name).
       - Allow the wrong case for properties in old option files, but issue warnings.
       - Modified the default logger to print "GaudiKernel" instead of "Athena" and
         prepend a '#' to the message to allow evaluation of the standard output in
         Python (needed in Ganga).

    ! 2008-01-10 - Marco Clemencic
     - Fixed a problem in ProcessJobOptions.py occurring when option values have '\'
       inside (filenames on Windows).

    ! 2008-01-09 - Marco Clemencic
     - Python options:
       - Take the values for VERBOSE, DEBUG, INFO, WARNING, ERROR, FATAL always from
         GaudiKernel.Constants.
       - Made "Configurable" equivalent to "str", so that it is possible to set a
         string property from a configurable instance.  It allows something like:

           mySvc = AService("theService",...)
           myAlg = AnAlgorithm("theAlgorithm")
           myAlg.ServiceToUse = mySvc

    ! 2008-01-08 - Marco Clemencic
     - Fixed a problem in ProcessJoboptions.py: allow have white spaces before the
       '#' sign of directives.

    ! 2007-12-20 - Marco Clemencic
     - Improved the message of DataSvc when re-throwing a std::exception. Now the
       message contains the type of the exception.
     - Added a constructor for GaudiException accepting a std::exception. The type
       of the passed exception and its message are appended to the message of the
       GaudiException.
     - Fixed a problem in ProcessJoboptions.py when DOS new-lines were found on
       Unix.

    ! 2007-12-19 - Marco Clemencic
     - Fixed a couple of typos in Map.h (preventing the generation of dictionary).
     - Check if a value is in the list before trying to delete it when interpreting
       "-=" in old job options.
     - Restored the original logic for parsing list in old job options (replace all
       "{}" with "[]", unless there is a ':').

    ! 2007-12-12 - Marco Clemencic
     - patch #1585.
       - Added the templated function pp_cast<DEST>(SRC**) to replace the common casts
           (void**)&pointer
         and
           (IInterface *&)m_mySvc
         to avoid the warning
           "dereferencing type-punned pointer will break strict-aliasing rules"
       - Fixed warnings about breaking of strict-aliasing rules (gcc 4.1 optimized).

    ! 2007-12-03 - Markus Frank & Marco Clemencic
     - Implemented the Win32 version of the code in DsoUtils.h, with some
       simplification.

    ! 2007-11-30 - Marco Clemencic
     - Fixed DsoUtils.h to work on OSX too.
     - Fix for bug #31677.
       Move GaudiHandles.py from GaudiPython to GaudiKernel.

    ! 2007-11-28 - Sebastien Binet
     - patch #1560.
       Minor change to avoid possible injection of GaudiKernel.Configurable through
       importOptions.

    ! 2007-11-26 - Marco Clemencic
     - Fixed a problem with the dictionary and ROOT >= 5.16.

    ! 2007-11-21 - Marco Clemencic
     - Fixed few compilation warnings on osx in the dictionary.

    ! 2007-11-20 - Marco Clemencic
     - Fixed few compilation warnings on win32 in the dictionary.

    ================ GaudiKernel v23r2 ====================================
    ! 2007-11-16 - Marco Clemencic
     - Added a new incident type (AbortEvent) that force the (Minimal)EventLoopMgr
       to skips all the top algorithms still to be executed for the current event.
       It can be used when a reconstruction step fails so it does not make sense to
       process the event, but we do not want to stop the application.
     - Fixed a bug in the old job option interpretation if mixed with python
       options.
       The sequence:
         MessageSvc.OutputLevel = 1
         #include "SetMsgSvcOutLvlTo2.py"
         MessageSvc.OutputLevel = 1
       was not correctly setting the output level (if SetMsgSvcOutLvlTo2.py sets the
       output level).

    ! 2007-11-15 - Vanya Belyaev
     - patch #1523.
       Add possibility to have properties of the types std::map<int,int> and
       std::vector<std::pair<int,int> > (the second case is perfectly suited
       for Helder Lopez' request of the list of event/run numbers)
       modified files:
        - GaudiKernel/Parsers.h
          add two functions "parse" for parsing of new types
        - src/Lib/Parse*.cpp
          add the implementation of parsing functions

    ! 2007-11-14 - Marco Clemencic
     - Added the function GaudiKernel.Configurable.purge to clean up all the
       configurables and the list of already imported files from the memory.
       After a call to "purge" one is able to restart the configuration from scratch
       without having to leave the python session.

    ! 2007-11-13 - Marco Clemencic
     - Instead of generating *Conf.py files trying to import AthenaCommon and fail
       back on GaudiKernel, use the module GaudiKernel.Proxy, which internally does
       the same kind of trick but only once.

    ! 2007-11-13 - Sebastien Binet
     - patch #1520 (bug #31097)
       Removed a duplicated data member in ServiceHandle (same information already
       available in the base class).
     - patch #1158
       Modified genconf.exe to generate modules (*_confDb.py) with a smaller memory
       footprint. The code to fill the DB is encapsulated in a function that is then
       deleted after being called.

    ! 2007-11-12 - Marco Clemencic
     - Moved the *.qmt files to the implicit suite (directory) "gaudikernel.qms".

    ! 2007-11-08 - Marco Clemencic
     - task #5807.
       Added the header GaudiKernel/SerializeSTL.h to provide implementations of
       operator<< for some common STL containers and GaudiUtils::*Map.
       The implementations live in the namespace GaudiUtils. To use them, one have
       to add "using namespace GaudiUtils" (in the relevant scope).
       Tests have been added too.

    ! 2007-11-02 - Marco Clemencic
     - Added a temporary work-around for OSX in ProcessDescriptor.cpp.
       To get timing information, it tries to open /proc/$PID/stats, which does not
       exist in OSX. The alternative is to use some other mechanism, but the one
       implemented in ProcessDescriptor seems to cause a segmentation fault.
       (to be investigated)

    ! 2007-10-31 - Marco Clemencic
     - Rewritten ProcessJobOptions.py. Major changes:
       - honor the #pragma print on/off in old options
       - print a warning if a file is included twice (the second time it is ignored)
       - allow inclusion of ".py" and ".pkl" files from ".opts" files (this is the
         main reason fror the rewrite)
       - moved importOptions from Gaudi.Configaration to ProcessJobOptions to allow
         better recursion

    ! 2007-10-31 - Marco Clemencic
     - Minor change to the IUpdateManagerSvc interface (added the function :purge")

    ! 2007-10-29 - Pere Mato
     - KeyedObjectManager.cpp: changed order of specialization and instantiation
       to please gcc 4.0

    ! 2007-10-22 - Marco Clemencic
     - Use the pattern QMTest and add a .qmt file (QMTest test description) to run
       the DirSearchPath test.
     - Modified DirSearchPath_test to work on Windows too.

    ! 2007-10-16 - Paolo Calafiura
     - patch #1416. new DirSearchPath method and test
       - Added DirSearchPath::find_all
       - Moved the test from GaudiSvc to GaudiKernel

    ================ GaudiKernel v23r1 ====================================
    ! 2007-10-10 - Pere Mato
     - Corrected bug of ProcessJobOptions.py detected by Marco C. when using filenames with
       environments.

    ! 2007-10-09 - Marco Clemencic
     - Moved DirSearchPath from GaudiSvc/src/JobOptionsSvc to GaudiKernel
       (requested by Paolo Calafiura).
       Note: the 2 tests using DirSearchpath are still in GaudiSvc.

    ! 2007-10-02 - Pere Mato
     - Patch #1400.
       Support for pickle files in python configurations.
       Fixed various bugs in parsing old joboptions files

    ! 2007-09-28 - Vanya Belyaev
     - Patch #1345.
       minor modifications to improve Tuples::TupleObj (GaudiAlg package)
       - GaudiKernel/NTuple.h
           1) substitute the explicit specialization for NTuple::Range with
              the regular calls of std::numeric_limits<T>::min()/max()
           2) disable "#ifndef ALLOW_ALL_TYPES"

    ! 2007-09-26 - Vanya Belyaev
     - patch #1375. Allow configuration of Histogram1D from job options.
       - New class Gaudi::Histo1DDef for histogram description/definition.
       - Implementation of parsing for new histogram properties.
         (Sascha Mazurov)

    ! 2007-09-25 - Vanya Belyaev
     - Patch #1357.
       Minor improvements to Gaudi::Utils::setProperty():
        - allow to set the documentation of a property
        - allow to set a property from a PopertyType

    ! 2007-09-24 - Sebastien Binet (& Marco Clemencic)
     - patch #1247. (partial)
       - avoid duplication of symbols in files generated by genconf.
         (Warning: Win32 implementation missing)
       Note: the patch was providing a patched version of genmap which cannot be
             included in Gaudi, but should be proposed to ROOT.

    ! 2007-09-24 - Hubert Degaudenzi
     - changed back Configurables.py into Configurable.py (it was
       a mistake).

    ! 2007-09-24 - Marco Clemencic
     - modified the way to pass  fallback module to genconf: comma-separated list
       instead of a dedicated option.

    ! 2007-09-24 - Markus Frank
     - fixed bug #29806. Wrong call to setDataProvider.

    ! 2007-09-21 - Hubert Degaudenzi & Marco Clemencic
     - factored out the main application part to the Gaudi package.
     - added the GaudiKernel prefix when importing python modules in order
       to avoid local imports.
     - changed the name of Configurable.py into Configurables.py for
       compatibility with the Athena module.
     - added an option to genconf that adds a fallback module for the
       location of Configurables and ConfigurableDb
     - modified the genconfig CMT pattern for the previous change to have
       AthenaCommon by default and if it doesn't exist fall back to
       GaudiKernel. This is a temporary fix until both approaches are merged.

    ! 2007-08-31 - Hubert Degaudenzi & Paolo Calafiura
     - Patch #1260.moved the MinimalEventLoopMgr from GaudiSvc to GaudiKernel. The factory
       for this service is still in GaudiSvc

    ! 2007-08-06 - Vanya Belyaev
     - patch #1231.
       - Splitted IChronoStatSvc.h into IChronoSvc and IStatSvc.
       - Remove ICounterSvc::CountObject and replaced it with Stat.
       - Added few free functions to format StatEntity objects as table rows.

    ! 2007-07-27 - Marco Clemencic
     - Added the file cbrt.h, which provides an implementation of cbrt (cubic
       root) to all the platforms (it is a built-in function of gcc).

    ! 2007-07-24 - Vanya Belyaev
     - patch #1246.
       Introduced 2 new classes:
         * Gaudi::Guards::ExceptionGuard
           executes a functor in a "standard" try-catch block.
         * Gaudi::Guards::AuditorGuard
           executes a function of an object when the instance is created and
           a second one when destroied, allowing automatic "clean-up" (in case
           of early exit).
       See GaudiKernel/Gaurds.h (doxygen) for more details.

    ! 2007-07-24 - Charles Leggett
     - patch #1253.
       This patch fixes Algorithm.cpp, AlgTool.cpp and Service.cpp such that
       there is a consistent use of the auditorSvc-after[whatever] in the catch
       loops when an exception is thrown. It also gets rid of some needlessly
       verbose comments.

    ! 2007-07-24 - Pere Mato
     - patch #1250.
       Removed the default constructor of Service because it is causing a memory
       leak in Reflex.

    ! 2007-07-24 - Vanya Belyaev
     - patch #1227.
       Added the functions "Gaudi::Utils::setProperty(IInterface*,...)", simpler
       counterparts of "Gaudi::Utils::setProperty(IProperty*,...)".

    ! 2007-07-23 - Vanya Belyaev
     - patch #1226.
       * SmartIFBase<TYPE>:
         + explicitely disable copy constructor and assignement
         + add "checking operator", operator!()
       * SmartIF<TYPE> and SmartIF<IInterface>
         + add "const" into copy constructor
         + add the constructor from underlying pointer
         + add "const" into standard assignement
         + add "const" into template assignemet
         + remove line duplicates between standard assignement and assignement
           from the regular pointer
         + fix typo in return type of assignement from the base
         + add "checking operator", operator!()

    ! 2007-07-17 - Sebastien Binet
     - patch #1182.
       Improved precision for timing measurements in ProcessDescriptor
       (on linux).  The patch allow to use the function getrusage when
       possible to get a us precision instead of ms. When getrusage cannot
       be used, the timing is measured in the old way.

    ! 2007-07-16 - Marco Clemencic
     - changed the syntax for specialization of templated function in namespace
       for gcc 4.1 future use

    ! 2007-07-16 - Hubert Degaudenzi
     - added the possibility to use the universal time for the messages.
       there is a new "%u" format for this. It replaces the usual "%t" in
       the MessageSvc.Format.

    ! 2007-06-18 - Vanya Belyaev
     - patch #1178.
        * The patch substitute the internal counters, used for
          (I)CounterSvc by generic counters of type StatEntity.
        * This allow to reuse the useful functionality of StatEntity class.
        * In addition it will allow an easy publishing and integration of
          counters with monitoring tasks.
        * Also it adds more functionality for grouping of counters, in
          particular the extraction of the whole group of counters
          (required by Matt Needham)
        * The printout of counters is now coherent with printout of
          generic counters through GuadiCommon<T>.

    ================ GaudiKernel v23r0 ====================================
    ! 2007-06-11 - Sebastien Binet
     - Fix to bug #26919. Explicit implementation of the copy constructor
       and assignment operator for the PropertyWithValue class.

    ! 2007-05-24 - Pere Mato
     - Added specialization of ROOT::Reflex::TypeDistiller for strings in
       AudFactory.h (was missing).

    ! 2007-05-24 - Marco Clemencic
     - Extended the IIncidentSvc interface to make it possible to register
       a listener for only one occurrence of the requested event
       (see bug #25552).

    ! 2007-05-24 - Vanya Belyaev
     - patch #1171. The enhancement of existing Algorithm Context Service
       is the primary goal of the proposed patch. The existing
       AlgContextSvc is not safe with respect to e.g. Data-On-Demand
       service or to operations with subalgorithms. The patched service
       essentially implements the queue of executing algorithms, thus the
       problems are eliminiated. In addition the enriched interface
       provides the access to the whole queue of executing algorithms.

    ! 2007-05-24 - Vanya Belyaev
     - patch #1163. Patch to allow the following syntax:
    	 setProperty ( "OutputLevel" , "4" ) ;
    	 setProperty ( "OutputLevel" , 4 ) ;  //new
    	 setProperty ( "Enable" , "False" ) ;
    	 setProperty ( "Enable" , false ) ; //new
    	 setProperty ( "ErrorMax" , "10" ) ;
    	 setProperty ( "ErrorMax" , 10 ) ; //new
    	 std::vector<double> data = ... ; //new
    	 setProperty( "Data" , data ) ; //new
    	 std::map<std::string,double> cuts = ... ; //new
    	 setProperty( "Cuts" , cuts ) ; //new
    	 std::map<std::string,std::string> dict = ... ; //new
    	 setProperty( "Dictionary" , dict ) ; //new
       The setting of properties through strings is still possible.

    ! 2007-05-23 - Marco Clemencic
     - patch #1168. Added specialization for void* to GaudiUtils::Hash.

    ! 2007-05-23 - Charles Leggett
     - patch #1176. Added few missing functions in ITHistSvc
       (already present in THistSvc)

    ! 2007-05-23 - Vanya Belyaev
     - patch #1161. Improvements and clean-up in StatEntity:
        - Removed "weight"-related functions and methods (unused)
        - Added binomial error calculation for efficiency-like counters
        - Improved print-out format
        - Added methods to make StatEntity mode DIM friendly
        - Some clean up in comments

    ! 2007-05-23 - Marco Clemencic
     - patch #1160. Changed the returned value of
        - Algorithm::setExecuted()
        - Algorithm::resetExecuted()
        - Algorithm::setFilterPassed()
       from StatusCode to void.

    ! 2007-05-22 - Marco Clemencic
     - patch #1166. Splitted ParseVectors.cpp in 6 pieces:
        * ParseVectorsBool.cpp
        * ParseVectorsChar.cpp
        * ParseVectorsInteger.cpp
        * ParseVectorsReal.cpp
        * ParseVectorsString.cpp
        * ParseVectorsVector.cpp
       to reduce memory usage at compile time (with a modest increase of
       disk space and compilation time).

    ! 2007-05-15 - Sebastien Binet
     - patch #1157. Here is a simple patch to harmonize the interaction
       with the underlying m_outputLevel data member of each of these main
       Gaudi components. It makes sure that the 3 of them have:
    	int outputLevel () const;
    	void initOutputLevel(Property&); //update handler
       also added this method to MsgStream:
    	void setMsgSvc( IMessageSvc* svc ) {
    	     m_service = svc;
    	}

    ! 2007-05-15 - Chris Jones
     - patch #1136: Updates to Algorithm and AlgTool required for
       changes in GaudiAlg for automatic registration of data to the
       monitoring service
      + Addition of the same declareInfo(...) methods in AlgTool as in
        Algorithm
      + Replace hardcoded monitor service name with new job option
      + New method to provide 'easy' direct access to monitor service
        via pointer

    ! 2007-05-15 - Sebastien Binet
     - patch #1129: Add the method outputLevel() to Auditor.

    ! 2007-05-14 - Marco Clemencic
     - fix to bug #25852 bis
       Fixed compilation problem on windows by adding the definitions for
       the missing functions localtime_r and gmtime_r
       (header GaudiKernel/time_r.h).
       Removed also a couple of compilation warnings.

    ! 2007-05-10 - Ivan Belyaev
     Patch #1126:
     - GaudiKernel/StatEntity.h, src/Lib/StatEntity.cpp
       1) Add the assignment operator from the scalar value according to
          the request by Ulrich Kerzel (LHCb/RICH)
       2) Add two new methods "efficiency" and "efficiencyErr" for
          evaluation of binomial estimate of the efficiency, associated
          with the counter. If the counter could be interpreted as
          efficiency, these methods produce right results. Method
          "efficiency" returns either "flagMean" or -1, if the
          interpretation of counter as efficiency is not possible. In a
          similar way "efficiencyErr" returns the binomial estimate of the
          uncertainty or -1, if the interpretation of counter as
          efficiency is not possible. Note that there could be sizable
          difference between RMS estimate "flagMeanRMS" and the binomial
          estimate "efficiencyErr", however for large statistics and for
          non-extremal (close to ~0 or, especially ~100%) efficiencies,
          these estimates should be very similar.
     - GaudiKernel/ToStream.h
       1) Add the printout for std::list
       2) Add the template parameters for std::vector, std::set, std:map,
          GaudiUtils::Map, GaudiUtils::VectorMap, GaudiUtils::HashMap. It
          allows to use all these function for containers with non-default
          optional template arguments, e.g. allocators, comparison
          criteria, hash functions or underlying containers,
       3) Remove the unused local variable "delim".
     - GaudiKernel/VectorMap.h, GaudiKernel/Map.h. Improve doxygen
       comments according to the request by Marco Cattaneo)

    ! 2007-05-10 - Hubert Degaudenzi
     - fixed warning for gcc 4 (on MacOSX) about non-existing virtual
       destructors in NTuple.h for NTuple::Array, NTuple::Matrix,
       NTuple::Item etc.

    ! 2007-05-09 - Sebastien Binet
     - patch #1141. Fix return statement of GaudiHandleArray::operator=.

    ! 2007-05-02 - Hubert Degaudenzi
     - fix to bug #25460. The return value of getLastError is now an
       unsigned long. A static_cast was added.

    ! 2007-04-30 - Andy Salnikov
     - fix to bug #25852. The patch is quite small and touches only two
       classes - Message and MessageSvc. Messages now have one more format
       flag '%t' which is replaced with the formatted timestamp on
       output. Default format string has not changed so default output
       will look identical to what it was before. The format of the
       timestamp can be changed through the additional format string
       similarly to the message format string. Time format can contain
       anything that is accepted by strftime plus additional '%f' code for
       milliseconds.

    ! 2007-04-27 - Sebastien Binet
     - patch #25888. Fixed uninitialized variable in Algorithm.cpp.

    ! 2007-04-09 - Marco Clemencic
     - patch #1125. Fixed INamedInterface in order to provide the right
       IInterfaceID. An empty virtual destructor has been added.

    ! 2007-04-05 - Martin Woudstra
     - Patch #1103. The attached 2 patches (one for GaudiPython and one
       for GaudiKernel) contain the changes needed to support
       ToolHandleArray's (a 'vector' of ToolHandles). This is a new
       feature, and is already in use in ATLAS. In addition to the
       ToolHandleArray and its associated base classes, there is the
       GaudiHandleArrayProperty, and an update to genconf to support it

    ! 2007-03-25 - Chris Jones
     - Patch #1099. Add Specialization stream operator for
       std::vector<T,A> to MsgStream.h Allows print out of vector created
       with custom allocators e.g. std::vector< RichSmartID,
       boost::pool_allocator< RichSmartID > >

    ! 2007-04-04 - Chris Jones
     - Patch #1092. There is a bug in the current implementation of the
       format(..) method in MsgStream.(cpp,h) which means if a user uses
       the format method twice in one message request, wrong information
       is printed. The attached patch fixes this by returning instead a
       std::string.  However, if somewere a user is explicitly using the
       returned char * pointer (They really shouldn't be...) a small
       change to their code would be required. i.e.
          char * c = format("XXX,x);
          to
          std::string s = format("XXX,x);
          c = s.c_str();

    ================ GaudiKernel v22r2 ====================================
    ! 2007-03-14 - Sebastien Binet
     - Patch #1081 (fix to bug #24704): fix the crash that happens when
       the destinatin file of genconf has a "+" in its path.

    ! 2007-03-13 - Sebastien Binet
     Patch #1080: fixes to GaudiKernel/src/Util/genconf.cpp:
     - fix handling of templated components
     - fix handling of (default value of) BooleanProperties
     - fix handling of NaN DoubleProperties (follows the good old Garbage
       In, Garbage Out pattern, even though a warning is issued during
       genconf processing...)

    ! 2007-03-12 - Vanya Belyaev
     - Patch #1073. Simple modification of IExceptionSvc interface (and
       the implementation ExceptionSvc) to avoid the explicit appearence
       of class Algorithm in the interface. The interface is modified to
       substitute Algorithms with INamedInterface. It allows to use the
       service in much wider context, in particular with tools, services
       and auditors.

    ! 2007-03-9 - Sebastien Binet
     - Patch #1058 (partially). Makes sure a DoubleProperty is understood
       as a double on the python side (and not converted into an int as it
       was the cast)
     - added merge_genconfDb.py scripts to merge configurables.

    ! 2007-03-9 - Hubert Degaudenzi
     - Clean up genconf pattern left over.

    ! 2007-03-08 - Martin Woudstra
     - patch #1070. The python configurables generated with the current
       genconf.cpp return the python (mangled) class name from the
       function getType(). This should be the C++ class name, otherwise
       the ToolSvc will not find tools from classes in namespaces and/or
       templated classes. This is critical as many classes in ATLAS as of
       these categories and all those are broken now.
     - patch #1071. The GaudiHandle version used in ATLAS has since some
       time an 'empty()' member function to indicate that no component is
       supposed to be retrieved nor used. For some reason this member
       function did not make it into Gaudi 19, so now the ATLAS code is
       broken. patch adds this member function to the GaudiHandleBase
       class, and allows the users to specify an 'empty' handle in the
       constructor (i.e. "" is kept is-as and does not trigger the setting
       to the default type).

    ! 2007-02-26 - Sebastien Binet
     patch #1041
     - removes some warnings wrt hidden methods

    ! 2007-02-26 - Paolo Calafiura
     - patch #1049: do a full include of SmartDataPtr.h instead of a
       forward declaration.

    ================ GaudiKernel v22r1 ====================================
    ! 2007-02-23 - Hubert Degaudenzi
     - moved the factory declaration of DataStreamTool to GaudiSvc

    ! 2007-02-16 - Hubert Degaudenzi
     - fixed genconf for the Auditors.

    ! 2007-02-16 Charles Leggett
     - patch #1019: refactor of the library into a component library.

    ! 2007-02-16 - Sebastien Binet
     Patch #1033
     - patch to genconf which prevents it to segfault when no property
       could be dyn-casted.

    ! 2007-02-15 - Marco Clemencic
     Patch 1032:
     - Added a helper class to allow the usage of IUpdateManagerSvc from
       python.  The helper class is IUpdateManagerSvc::PythonHelper,
       declared as friend of IUpdateManagerSvc. The implementation
       consists of 2 static functions implemented in dictionary.h.

    ! 2007-02-14 - Pere Mato
     - Fixed bug #23811: patch #1001 is breaking Configurables generation

    ! 2007-02-14 - Vanya BELYAEV
     Patch #1001
     - a) couple of fixes, which allows to retrieve the private tools not
          only from Algorithm, Services and AlgTools, but also from
          Auditors.
       b) Update the queryInteface method for AlgTool,Algorithm,Auditor
          and Servicebase classes to allow query for INamedInterface, in
          addition "C-cast" is substituted with "static_cast"
       The modified files:
           src/Lib/AlgTool.cpp
           src/Lib/Algorithm.cpp
           src/Lib/Auditor.cpp
           src/Lib/Service.cpp

    ! 2007-02-13 - Pere Mato
     - Reverted change in Booststrap.cpp. This fixes "bug #23684: BootSvcLocator is breaking athena.py"
     - genconf.cpp: applied "patch #1016: configurable genconf"
                    fixed "bug #23649: ICounterSvc inheritance tree and Reflex::PluginSvc"

    ! 2007-02-08 - Pere Mato (David Quarrie)
     - Bootstrap.cpp:
       Introduced a dual-stage boostrap mechanism to ensure an orderly startup
       of the ApplicationMgr. If the Gaudi::svcLocator() function is called before the singleton
       ApplicationMgr instance exists, a BootSvcLocator singleton instance is
       created. This responds to any subsequent requests for services by
       returning StatusCode::FAILURE, unless the ApplicationMgr singleton
       instance has been created in the interim. In this case, the BootSvcLocator
       forwards the request to the ApplicationMgr instance. The motiviation for
       this is to handle static object instances where the constructor attempts
       to locate services and would otherwise instantiate the ApplicationMgr
       instance in an unorderly manner. This logic requires that the
       ApplicationMgr instance is created explicitly.

    ! 2007-02-07 - Martin Woudstra
     - fix to patch #1009. Avoid infinite recursion.

    ! 2007-02-05 - Pere mato (Sebastien Binet)
     - Applied patch #1009: patches to fix XyzHandle parsing from python
       jobOptions

    ! 2007-02-05 - Paolo Calafiura
     Patch #1007
     - turned the templated member functions operator << (T&) and its
       partial spec operator << (vector<T>&) into open functions. This
       appears to remove ambiguities a user defined MsgStream operator <<
       template (typically in a data object header file). The compiler
       sees the user defined template as a better specialization and
       matches that with no ambiguity.
     - removed the MsgStream& operator(std::ostream&) recently proposed as
       a patch since it does not serve any useful purpose

    ! 2007-01-31 - Pere Mato
     - Applied patch #1000: improvement in ConfigurableDb output for genconf

    ! 2007-01-30 - Pere Mato (
     - Applied [partially] patch #997: genconf.cpp patch
     - It adds to genconf.cpp:
          - a "double loading" libraries to shield against dual_use
            libraries (which could bring lots of external
           libraries into the generated  Configurable)
          - the generation of an ASCII file (a-la-rootmap) to describe
            Configurables for the benefit of the (athena)
            PropertyProxy.py.

    ! 2007-01-27 - Pere Mato (Paolo Calafiura)
     - Variation of the templated streamer that should provide the same
       functionality and address the ambiguous overload problems ATLAS saw
       with the template

    ! 2007-01-18 - Charles Leggett
     - patch #977 on MsgStream.

    ! 2007-01-18 - Charles Leggett
     patch #972.
     - add messageCount to IMessageSvc
     - extend Auditor::(sys)afterExecute to pass a const StatusCode&,
       which is the return code of the algorithm
     - new auditor to monitor algorithms, issue message if algorithm
       writes out an ERROR or FATAL, but returns SUCCESS

    ! 2007-01-17 - Marco Cattaneo
     - removed GCCXML_CXXFLAGS definition following fix in reflex.

    ! 2007-01-17 - Charles Leggett
     - patch #971: added ServiceHandle and GaudiHandle.

    ================ GaudiKernel v22r0 ====================================
    ! 2007-01-23 - Pere Mato
     - AlgFactory.h, SvcFactory.h, ToolFactory.h: added template specialization for Reflex::TypeDistiller to
       overcome a problem with Reflex and the name given to std::string. The change can be removed when Reflex
       will be modified.
     - MsgStream.h: Corrected compilation error.

    ! 2007-01-12 - Marco Clemencic
     - fix to patch #954. Modification of the interface of IDataStreamTool
       to avoid explicit reference to std::vector.
     - added the method addStream, in parallel to addStreams.

    ! 2007-01-12 - Hubert Degaudenzi
     - bug #22799. changed the return value of chronoStart, chronoStop,
       chronoPrint, stat and statPrint method of the IChronoStatSvc from
       StatusCode to void.

    ! 2007-01-10 - Eric van Herwijnen
     - Patch #943 & #946. Update of the IMonitorSvc interface. To be
       compatible with the DIM format. Added declareInfo for the special
       case of general structure monitoring to Algorithm.h.

    ! 2006-12-22 - Andres Osorio & Marco Clemencic
     Patch #954
     - Moved EventSelectorDataStream from GaudiSvc to GaudiKernel
     - Added IDataStreamTool and the basic implementation DataStreamTool
       (to be used by EventSelector to loop over the files)
     - fixed a few StatusCode checks.

    ! 2006-12-21 - Pere Mato
     - ConversionSvc.cpp(.h): added method
       ConversionSvc::loadConverter(DataObject*) to load anything
       necessary (typically a dictionary) for finding/initializing a
       converter. Dummy at the base class level.

    ! 2006-12-18 - Pere Mato
     - ServiceLocatorHelper.cpp: added the code that declares the service
       pair type/name. It was removed by mistake ( I guess) after the
       merge with all the changes from ATLAS.

    ! 2006-12-15 - Pere Mato
     - VectorMap.h: removed protected find() method to avoid compilation error in
                    Event/HtlEvent package

    ! 2006-12-14 - Hubert Degaudenzi
     - removed duplicated dictionary entry for InterfaceID (it is located in the
       GaudiPython dictionary)

    ! 2006-12-14 - Charles Leggett & Hubert Degaudenzi
     - fixed the SimpleProperty constructors for ATLAS usage (with Ivan
       Belyaev's help).
     - a few StatusCode checks fixing.
     - removed unused static function PR_indent in PathResolver.cpp

    ! 2006-12-10 - Charles Leggett
     - requirements: added "-pedantic" to Linux compilation in private
     - extra ";": AllocatorPool.h/.cpp, ChronoEntit, Debugger.h, Environment.h
                  KeyedObject.cpp, KeyedObjectManager.h/.cpp, KeyedTraits.h
                  Memory.h,  NTupleImplementation, NTupleItems.h, ProcessDescriptor
                  Property.cpp, PropertyMgr.cpp, Selector.h, Stat.cpp,
                  StatEntity.cpp, TimePoint.h
     - auditors: Algorithm.h/cpp, AlgTool.h, Auditor.h/cpp, IAuditorSvc,
                 Service.h/cpp
     - doc string for props: Algorithm.h, AlgTool.h, Auditor.h/cpp, Property.h/.cpp
     - service creation on demand: ServiceLocatorHelper.cpp, ISvcLocator
     - setPriority of services: ISvcManager
     - fire ModuleIncident when module loaded: IClassManager,
    	ModuleIncident.h (new)
     - IIncidentSvc.h: rethrow incident if requested with extra param to
                       addListener()
     - ToolHandle: GaudiHandle, ToolHandle, AlgTool::refCount, dictionary.h/.xml

    ! 2006-12-08 - Pere Mato
     - added Transform3DTypes.h, Transform4DTypes.h, Vector3DTypes.h,
       Vector4DTypes.h, Plane3DTypes.h, Point3DTypes.h, Point4DTypes.h,
       SymmetricMatrixTypes.h, Coord3DTypes.h, GenericMatrixTypes.h,
       GenericVectorTypes.h. These are typdefs to ROOT types.

    ! 2006-11-30 - Pere Mato
      Adpated package to the new PluginSvc
      - Removed protected from constructor/destructors and fiendship of
        Factory class
      - Removed files: FactoryTable.h, IAlgFactory.h, IAuditorFactory.h,
        ICnvFactory.h, IObjManager.h, IObjectFactory.h, IRndmGenFactory.h,
        ISvcFactory.h, IToolFactory.h, FactoryTable.h, ICnvManager.h
      - Deep changes in the XXXFactory.h files to take into account the
        new plugin service

    ! 2006-11-29 - Hubert Degaudenzi
     - this is the beginning of the release notes for the merge with the
       v20r13 release (v20r9b branch).

    ! 2006-11-26 - Vanya BELYAEV - patch #922
     - GaudiKernel/VectorMap.h
        1) On the request form ATLAS (Savannah reports  #21395 and #21394)
           add the method "update" to class GaudiUtils::VectorMap.
           NOTE: It is nor STL-compliant!
           It behaves like "insert", but it OVERRIDES the mapped value
        2) Also  "const-look-up" is added through the methods
           "operator()" and "operator[]"
           Again it is nto STL-complient signature:
           the methdod are "const" , and there are no
           "non-const" analogues

         *  For typical usage of this class in LHCb context
         *  as "ExtraInfo" field I would like to recommend
         *  to AVOID this method

        3) Add also the checked access in STL-spirit:
            GaudiUtils::VectorMap::at
           throw std::out_of_range exception for non-existing keys
     - GaudiKernel/ToStream.h
        add the partial specialization for printout of following classes:
         1) GaudiUtils::Map
         2) GaudiUtils::HashMap
         3) GaudiUtils::VectorMap
        The printout done in a style of "Python-dictionary", similar to
         std::map
        Also print out for std::set is added
     - src/Lib/VectorMap.cpp
         new file fith implementtation of action for nonexisting key

    ! 2006-11-22 - Hubert Degaudenzi
     - added environment variable GCCXML_CXXFLAGS=" -m32" for 32 bits
       compilation on amd64 machines (with the slc4-ia32 tag)
     - added environment variable GAUDIEXE which points to the Gaudi
       executable.

    ! 2006-11-02 - Hubert Degaudenzi
     - modified rootmapdump.py in order to match any file *beginning* with
       "rootmap" and not only the "rootmap" filename. This is the same
       matching behavior as the one in ROOT itself.

    ! 2006-10-27 - Ivan Belyaev
     - patch #870. Added operator << for StatusCode.

    ! 2006-10-26 - Marco Clemencic
     - Patch #736. Improvemts to TransientFastContainer. Now it allows to
       use for new objects the default constructor, the copy constructor
       and a user specified constructor (via placement new).

    ! 2006-10-12 - Marco Clemencic
     - Patch #879. Fixed a bug in DataSvc. When retrieving an object from
       the transient store, it fails if the root node has not yet been
       loaded. I added a check on the root node for those cases and I
       explicitely load it if needed.

    ! 2006-10-06 - Marco Clemencic
     - Patch #863. Add the function System::setEnv to set an environment
       variable.  Setting the variable to "" results in removing it from
       the environment (same behavior on windows and linux). The parameter
       overwrite define the behavior in the case the variable is alredy
       present (0=no change, 1=overwrite).

    ! 2006-11-29 - Hubert Degaudenzi
     - this is the end of the release notes for the merge with the
       v20r13 release (v20r9b branch).

    ! 2006-11-27 - David Quarrie
     - fixed compilation problems for MacOS 10.4

    ! 2006-11-17 - Pere Mato
     - ISvcLocator.h: Added new function eraseService() to erase a service
       from the list of known services
     - Service.cpp: The destructor calls eraseService() to cleanup the
       service list
     - Minor corrections for StatusCode.

    ! 2006-11-10 - Markus Frank -Patch #908
     - Removed access to histogram factory.
     - Added storage types for online usage to CLID.h
     - new header HistogramBase.h to allow access to ROOT implementation
       of AIDA histograms.

    ! 2006-11-09 - Pere Mato
     - Added classes JobHistory, AlgorithmHistory, AlgToolHistory,
       DataHistory, ServiceHistory from "GaudiHistory" package such that
       it can be removed. The goal is to have less packages
       (i.e. complexity)
     - requirements: added pattern to generate Python configuration file
     - genconf.cpp: adapted to new properties

    ================ GaudiKernel v21r0 ====================================
    ! 2006-10-31 - Pere Mato
     - StatusCode.h(.cpp) - Reworked to avoid copying complicated objects
       all the time

    ! 2006-09-25 - Hubert Degaudenzi
     - added the scripts folder with the rootmapdump.py utility. This
       scripts allows to dump the ROOTMAPs present in the
       LD_LIBRARY_PATH. It can also check the duplication of entries.

    ! 2006-09-21 - Hubert Degaudenzi
     - factored out the stacktrace function from the StatusCode class to the
       System.cpp file.

    ! 2006-09-09 - Hubert Degaudenzi
     - added dictionary generation for ExceptionSvc, IssueLogger,
       StatusCodeSvc, THistSvc.
     - fixed compilation problem for win32 in the StatusCode.cpp file.

    ! 2006-09-09 - Charles Leggett & Hubert Degaudenzi
     - Imported new services interfaces from ATLAS: IExceptionSvc,
       IIssueLogger, IStatusCodeSvc, ITHistSvc.
     - StatusCode.h has been modified (and has now an implementation)
     - new IssueSeverity.cpp.

    ! 2006-09-09 - Vanya BELYAEV - patch #839
     - GaudiKernel/Grammars.h
         Add a method StringGrammar::matchString, which allows to
         substitute all "std::isspace" symbols with the blank.
         It is a bit incorrect operation, but it allows
         to split very long string into few lines.
         It is incorrect since the overall number of blank symbols
         in the string is a quantity which is difficult to control.
         One still needs to be very careful with CR/LF symbols in the
         opts-files.
         This particular fix solves the problem with configuration
         of DataOnDemandSvc, where long string are unavoidable.
         The solution  ( 'std::isspace' --> ' ' ) has been discussed with
         Marco Cattaneo. We have agreed that this solution is not safe,
         but it solves the particular problem.

         The fix is kindly provided by Sasha Mazurov (Alexander.Mazurov@gmail.com)

     - GaudiKernel/Property.h
        1) reshuffle the property assignment/load methods to eliminate the
           duplication of actions, from now Property::load is implemented
           through Property::assign. It provides a bit more coherency in
           the code.
        2) the actual action for Property::assign and Property::load is
           been released a bit, not one can load/assign either from the
           property of the same type or from the valid string representation
           of property of any type. Previously only StringProperty has been
           allowed.
        3) The full template specializations of
           PropertyWithValue<std::string>::toString and
           PropertyWithValue<std::string>::assign are provided
            - there are no "extra" confusing double quotes now in the
              string printout
            - the string is always parsed at assign, in particular it means
              that all surrounding pairs of quotes will be removed
              automatically as redundant
     - GaudiKernel/ToStream.h
          - modify a bit the implementation of Gaudi::Utils::toStream
            for std::string to use single quotes if the string containt
            double quotes
          - add the implementation of Gaudi::Utils::toStream for boolean values
            to print boolean values "à la Python" as "True" or "False"
          - add the implementation for float/double/long double to print them
            with reasonable precision. It is important since the default
            precision of ios_base is 6, which could be not enough, and
            the precision of boost::lexical_cast is
             std::numerical_limit<...>::digit10+1,
            which is much more than we need.
      - GaudiKernel/Property.h, src/Lib/Property.cpp
         add few useful functions to descrease the number of ugly
         technical lines in some public code

         namespace Gaudi { namespace Utils {
           bool      hasProperty ( const IProperty*  p  , const std::string& name ) ;
           bool      hasProperty ( const IInterface* p  , const std::string& name ) ;
           Property* getProperty ( const IProperty*  p  , const std::string& name ) ;
           Property* getProperty ( const IInterface* p  , const std::string& name ) ;
           bool      hasProperty
           ( const std::vector<const Property*> , const std::string& name ) ;
           const Property* getProperty
           ( const std::vector<const Property*> , const std::string& name ) ;

         }}

    ================ GaudiKernel v20r9 ====================================
    ! 2006-08-21 - Ivan Belyaev
     - patch #817. For new associatiove properties, e.g. map
       the implemented behaviour do not fulfill the naive expectations. E.g:

       A.a = { "a" : 1 , "a" : 2 , "b" : 3 , "a" : 10 } ;
       A.a += { "a" : 100 , "a" : 200 };

       The result will be the map:

       { "a" : 1 , "b" = 2 } ; // "The first wins"

       this result is not in agreement with "naive" expectation for
       std::map, where "the last wins". the attached patch solves the
       problem, and now the behaviour of the properties is more coherent
       with behaviour of std::map.

    ! 2006-08-06 - Markus Frank
     - System.cpp: do not free strings after calls to strerror() or
       dlerror().  This is known to cause valgrind errors because libc
       internally allocates memory, but is the **correct** usage of these
       functions according to the docs. Otherwise repeated calls tend to
       screw up malloc.

    ! 2006-07-31 - Pere Mato
     - Changed interface IJobOptionsSvc from pointer to reference to fix
       bug #18581 overview: Memory leak due to changed behaviour of
       JobOptionsSvc

    ================ GaudiKernel v20r8 ====================================
    ! 2006-07-14 - Stefan Roiser
     - fixed type in dictionary for m_typeinfo member of the Property
       class in the xml selection file.

    ! 2006-07-07 - Hubert Degaudenzi
     - bug #17843: fixed extra semicolon and DOS end of lines.

    ! 2006-07-07 - Marco Clemencic
     - patch #748: fixed the recipient of the std::string::find method. It
       should not be assigned to int but to std::string::size_type since
       it has a different size on 64 bits plateforms.

    ! 2006-06-26 - Hubert Degaudenzi
     - bug #17739. Changed the return value of GaudiMain. Before it was always
       returning 0 and now it returns the StatusCode of the ApplicationMgr
       in the UNIX command line way.
          - "0" for success
          - "1" for failure
       to test it for examples one could do:
         >Gaudi.exe some.opts && echo "Gaudi has succeeded"

    ! 2006-06-15 - Hubert Degaudenzi
     - Fix gcc 3.4.5 compilation problems in the new property parser.

    ! 2006-06-06 - Alexander Mazurov & Ivan Belyaev
     - new property parser installed. It relies on the Boost::spirit
       lexer/parser.

    ! 2006-06-06 - Vanya Belyaev
     - fixed const problem in VectorMap.

    ! 2006-05-31 - Marco Clemencic
     - patch #730. Fixes a bug in the constructor of
       TransientFastContainer when it is called with an argument different
       from 0.

    ================ GaudiKernel v20r7 ====================================
    ! 2006-05-22 - Marco Clemencic
     - patch #727. Fixed a compilation problem on Win32 after using
       std::map instead of hash_map in GaudiUtils::HashMap.

    ! 2006-05-19 - Marco Clemencic
     - patch #725. Fixed a warning on Win32.

    ! 2006-05-11 - Marco Cattaneo
     - patch #723. Redefines the unit "pascal" to "Pa" to avoid a name
       clash that causes a compiler warning on on Windows in
       SystemOfUnits.h

    ! 2006-05-11 - Vanya Belyaev
     - added templated SmartRefVector constructor with first and last
       iterator pointers as arguments

    ================ GaudiKernel v20r6 ====================================
    ! 2006-05-04 Marco Clemencic
     - patch #720. Added TransientFastContiner<T> (and related helper classes
       TransientFastContainerBase and DefaultObjectCleaner<T>).
       The new container does its own memory management, recycling the objects not
       used and not deleting them when it is cleared (just reset an internal
       counter).

    ! 2006-05-02 Hubert Degaudenzi
     - Added PhysicalConstants.h and SystemOfUnits.h (from CLHEP) in
       GaudiKernel. The constants and units are in the Gaudi::Units
       namespace.
     - patch #715. Added boost allocator wrapper (Marco Clemencic).
     - patch #719. Added 2 functions to make the UpdateManagerSvc work
       safely in multi-thread environment. They allow to block the
       activities of the service while interacting with it (Marco Clemencic).

    ! 2006-04-20 Hubert Degaudenzi
     - clean up of the legacy lines of code for obsolete compiler version
      (before gcc 3).

    ! 2006-04-20 Marco Clemencic
     - patch #705. The default hash functions is extremely expensive for
       integers. This causes extremely poor performaces for the standard
       KeyedContainer<>. The patch introduces efficient specializations of
       Hash<> for int, long and long long (and unsigned).

    ! 2006-04-13 Charles Leggett and Hubert Degaudenzi
     - inserted ATLAS feature INamedInterface.

    ================ GaudiKernel v20r5 ====================================
    ! 2006-03-15
     - modified the returned values of the Auditors
       beforeExecute/afterExecute (etc) to be void instead of StatusCode::SUCCESS.

    ! 2006-03-09 Markus Frank
     - patch #691. Add support for objects in N-tuples. Note: This only works for
       NTuple::Item.  NTuple::Array and NTuple::Matrix is __NOT__
       supported for objects. If you need this functionality store an
       std::vector<Object*>. See GaudiExamples/POOLIO/EvtCollectionWrite
       for an example of the usage.
     - Added GaudiMain.cpp in the library.

    ! 2006-03-09 Markus Frank
     - patch #668. Fix retrieval of error string in System::getErrorString().
       The routine caused a core dump on linux when dl_error() returned NULL.

    ! 2006-02-24 Marco Clemencic
     - patch #678. It has been reported that MS implementation of hash_map
       is extremely slow. The idea is to use std::map instead (which is
       faster than hash_map on win!!!), while we investigate to find a
       better solution.

    ! 2006-02-23 Hubert Degaudenzi
     - fix compilation warnings with Gcc 3.4.4

    ! 2006-02-14 Ivan Belyaev
     - added new allocator imported from GEANT4. They should decrease the
       allocation time significantly. Please have a look at the
       GaudiExample "Allocator".

    ! 2006-02-06 Hubert Degaudenzi
     - fixed windows compilation warning (bug #14852).

    ================ GaudiKernel v20r4 ====================================
    ! 2006-01-27 Hubert Degaudenzi
     - corrected constructor call syntax of fstream in genconf to be
       compatible with Linux.

    ! 2006-01-26 Pere Mato
     - Added new program genconf to generate the python configuration file for component libraries
     - Fix bug #14665 overview: IID_IAlgorithm and IID_IConversionSvc Conflict
     - Moved some class in the dictionary of GaudiPython to the dictionary in GaudiKernel

    ! 2006-01-25 Marco Clemencic
     - Added class Gaudi::Time (based on seal::Time). Updated interfaces
       IDetDataSvc, IValidity and IUpdateManager in order to use the new class.
       Modified dictionary.h and dictionary.xml in order to produce dictionaries
       for Gaudi::Time.

    ! 2006-01-25 Hubert Degaudenzi
     - added IUpdateManagerSvc in the dictionary generation.

    ! 2006-01-19 Pere Mato
     - Adapted to use genreflex (Reflex from ROOT)

    ================ GaudiKernel v20r3 ====================================
    ! 2006-01-18 Hubert Degaudenzi
     - fixed forward declarations in GaudiKernel/IMagneticFieldSvc.h

    ! 2006-01-12 Pere Mato
     - Added std::vector<const ContainedObect*> in the dictionary

    ! 2006-01-10 Hubert Degaudenzi
     - moved the macro definitions DECLARE_XXX_FACTORY and
       DECLARE_NAMESPACE_XXX_FACTORY from DeclareFactoryEntries.h to their
       own header files where XXX are Algorithm, Auditor, Converter,
       Object, Service, Tool.
     - corrected wrong syntax in macros.
     - moved the remaining macros (DECLARE_XXX and DECLARE_NAMESPACE_XXX)
       from DeclareFactoryEntries.h to their corresponding header files.

    ! 2005-12-20 Hubert Degaudenzi
     - Commented out AIDATupleSvc.

    ! 2005-12-20 Marco Clemencic
     - Added UpdateManager interface.

    ! 2005-12-05  Manuel Domenech
     - added setCriteria method to IAIDATupleSvc interface to allow passing
       a preselection criteria for reading data from a tuple.

    ! 2005-11-15 Markus Frank
     - Fix problems of KeyedContainer when using keys with explicit constructors.

    ================ GaudiKernel v20r2 ====================================
    ! 2005-11-22 Pere Mato
     - Booststrap.h: converted Gaudi class into a Gaudi namespace

    ! 2005-11-22 Vanya Belyaev
     - Added class GaudiUtils::VectorMap (former _VctMap from Vanya) that implements associative version inspirer
       from the Loki library by Andrei Alexandrescu.

     an associative vector
       inspired from Loki associative vector.
       Fix problems of KeyedContainer when using keys with explicit constructors.

    ! 2005-11-21 Markus Frank
     - Fix problems of KeyedContainer when using keys with explicit constructors.

    ! 2005-11-21 -  Pere Mato
      - Added new methods in IAlgorithm: isInitialized(), isFinalized() and isExecuted() (suggested by Vanya)

    ! 2005-11-18 -  Marco Clemencic
      - Added 3 classes to replace the HashTable and the hacks in stl_hash.h

        * GaudiUtils::Map is a simple associative container. It is implemented as a proxy
          to a template class implementing the underlying container (defaulting to std::map).
          It features "operator[](key) const" and "operator()(key) const". It has a virtual
          destructor so that it can be extended via inheritance.
        * GaudiUtils::Hash is a simple hash function (based on Stroustrup's example) which
          correctly handle pointers, std::string and char*. It is portable between Linux and Windows.
        * GaudiYUtils::HashMap is a Map which uses internally a hash_map. The differences
          between gcc and VC7 are taken into account in order avoid users having to put "#ifdef"s.

    ! 2005-11-09 - Chris Jones
     - Change output level data member in Algorithms and AlgTools from int
       to IntegerProperty, and add a non-const access method for this
       property. Allows uses to attach callback handle methods to this
       property (Such as in GaudiAlg) to allow them to react as needed
       to changes in the output levels. Needed in GaudiAlg to force the
       creation of a new cached MsgStream object.

    ================ GaudiKernel v20r1 ====================================
    ! 2005-11-03 Pere Mato
     - added the changes to dictionary.xml delection file. Removed the dictionary_rflx.xml file.

    ! 2005-10-13 Hubert Degaudenzi
     - removed obsolete files GaudiKernel/KeyedDictionary.h and
       GaudiKernel/SealDictonary.h.

    ! 2005-10-10 Hubert Degaudenzi
     - added the transient state to the refCount and hasKey Methods of
       KeyedObject in the dictionary_rflx.xml selection file (Markus Frank).

    ================ GaudiKernel v20r0 ====================================
    ! 2005-09-12  Pere Mato
     - MsgStream.h: removed special stream function for StatusCode. It did
       not help on WIN32
     - GaudiException.h: added explicit call to accessor of StatusCode to
       unsigned long code

    ! 2005-08-05  Hubert Degaudenzi
     - added "long long" format in the instantiation of SimpleProperty and
       SimplePropertyRef templates.

    ! 2005-08-05  Hubert Degaudenzi
     - applied patch #502. Minor polishing of Stat and StatEntity classes
       to improve their functionality (in absolutely backward compatible
       way). From now the usage of StatEntyty in 'standalone' mode is
       greatly simplified (previously it has been tightly coupled to
       Chrono&Stat Service, and "public" interface was ugly). The
       functionality of Stat class is also improved (Vanya).

    ! 2005-07-25 - Hubert Degaudenzi
     - fixed bug #9475. Missing #include <stdexcept> (Mattias Ellert).

    ! 2005-07-25 - Hubert Degaudenzi
     - fixed bug #9474. fixed bad friend declaration. According to the C++
       standard typedef'ed typenames may not be declared friends. (Mattias
       Ellert).

    ! 2005-07-25 - Hubert Degaudenzi
     - fixed bug #9468. Missing typname keyword within templates (Mattias Ellert).

    ! 2005-07-21 - Hubert Degaudenzi
     - fixed bug #9467

    ! 2005-07-21  Markus Frank
     - patch #445. Move basic dictionaries from GaudiPoolDb to GaudiKernel
       gccxml inputs in new subdirectory dict
       output id a dictionary DLL called "GaudiKernelDict"
       Reflex dictionary produced in parallel: "GaudiKernelRflxDict"
     - Fix inline bug in SmartDataPtr (function was never instantiated,
       hence problem did not appear)
     - Fix data member access in RndmGenerators.h

    ! 2005-07-21 Hubert Degaudenzi
     - patch #476. Compilation of some Reflex dictionaries currently
       fails. I'd need an overload for the MsgStream::operator << for
       StatusCode to cure this. The attached patch is one proposal how it
       could be done (Stefan Roiser).

    ! 2005-07-18  Hubert Degaudenzi
     - fixed bug #9466. extra semicolon (Mattias Ellert).

    ! 2005-07-15  Hubert Degaudenzi  <Hubert.Degaudenzi@cern.ch>
     - fixed bug #9476. Missing keyword "class". (Mattias Ellert)

    ================ GaudiKernel v19r3 ====================================
    ! 2005-07-13  Hubert Degaudenzi  <Hubert.Degaudenzi@cern.ch>
     - fixed bug #9479

    ! 2005-05-10  Hubert Degaudenzi  <Hubert.Degaudenzi@cern.ch>
     - modifications for the new service StagerSvc. Added IStagerSvc and a
       new incident "EndStream" that will trigger the end of the
       processing of one file.

    ================ GaudiKernel v19r2 ====================================
    ! 2005-05-10  Hubert Degaudenzi  <Hubert.Degaudenzi@cern.ch>
     - added path access to SmartRef (Marco Clemencic)

    ! 2005-04-22  Hubert Degaudenzi  <Hubert.Degaudenzi@cern.ch>
     - GaudiKernel/IValidity.h (IValidity): added some const qualifiers
       to function members of the IValidity class (Marco Clemencic).

    ================ GaudiKernel v19r1 ====================================

    ! 2005-04-14 - Eric VAN HERWIJNEN
     - modification of the IMonitor.h interface

    ! 2005-04-14 - Hubert Degaudenzi
     - removed the following interface files:

      GaudiKernel/IDetectorElement.h
      GaudiKernel/IGeometryInfo.h
      GaudiKernel/ILVolume.h
      GaudiKernel/IPVolume.h
      GaudiKernel/ISolid.h
      GaudiKernel/ITransportSvc.h

    ================ GaudiKernel v19r0 ====================================
    ! 2005-03-02 - Markus Frank
     - Obsolete interface call: StatusCode IAlgManager::declareAlgModule
     - New interface call:      StatusCode IAlgManager::getFactory(const std::string& alg_type, IAlgFactory*& fac);
     - Obsolete interface call: StatusCode ISvcManager::declareSvcCreator
     - Obsolete interface call: StatusCode ISvcManager::declareSvcModule
     - New interface call:      StatusCode ISvcManager::getFactory(const std::string& svc_type, ISvcFactory*& fac);

    ================ GaudiKernel v18r3 ====================================
    ! 2005-02-25 - Pere Mato
     - System.cpp: applied patch to overcome CXXABI problem (merge from v17r1)

    ! 2005-02-24 - Manuel Domenech
    - Added the interface IAIDATupleSvc.h for the AIDA-based tuple service.
    - ClassID, Algorithm.h and lib/Algorithm.cpp: added declarations for the AIDATupleSvc.

    ================GaudiKernel v18r2=====================================
    ! 2005-02-15 - Markus Frank
     - SealDictionary.h - fix for SmartRefDict.

    ! 2005-02-11 - Pere Mato
     - Algorithm.cpp: removed the name extensions such as  ".sysInitialize()", ".sysExecute()"
       and ".sysFinalize()" in the messages generated by the base class.
       It makes it simple to control over the threshold messages from algorithm. (suggested by Vanya)

    ! 2005-02-02 - Pere Mato
     - System.cpp(typeinfoName):  removed extra spaces between types and "*" and "&"

    ================GaudiKernel v18r1=====================================
    ! 2005-01-19 - Pere Mato
     - DataObject.h(.cpp) Added copy constructor. Problem reported by Mikhail Kirsanov (HARP)
     - IMagneticFieldSvc.h: Changed forward declarations for CLHEP classes.

    ================GaudiKernel v18r0=====================================
    ! 2004-12-10 - Markus Frank
     - GaudiKernel/IDataProviderSvc.h
       Update doc for unregisterObj entries, which was uncorrect.

    ! 2005-01-12 - Pere Mato
     - IHistogramSvc.h: Added profile histograms
     - ClassId.h: Added profile histograms CLID's

    ! 2005-01-11 - Pere Mato
     - Changed IEventProcessor interface to add stopRun() method
     - Changed System.cpp to load dynamic libraries with RTLD_GLOBAL flag and commented out
       the special typo_info implementation

    ! 2004-12-10 - Pere Mato
     - Added interface IMonitorSvc.h (from Gaucho)
     - Algorithm.h,.cpp: Added new method declateInfo(...) to declare monitoring variables

    ! 2004-12-06 - Markus Frank
     - SealDictionary.h
       Make use of ReflectionBuilder/CollectionProxy.h
       for new container handling using ROOT CollectionProxy mechanism.
     - Service.cpp:
       Inhibit printing of services before the properties are properly
       set. Until the properties are set, each service inherits the
       output level of the message service.
       This was apparently screwed with the invention of the
       OutputLevel update handler for services.
       This removes the "ignored" global printout level of the
       sub-eventselector instances when opening new files.

    ! 2004-09-13 - Markus Frank
     - Protection in KeyedContainer::configureDirectAccess()
       To protect against reading NULL pointers - a problem
       reported by M.Cattaneo.

    ! 2004-10-27 - Pere Mato
     - Changed order of finalization of Algorithm/Sub-algorithms
       bug #3903 overview: finalize and nested algorithms

    ================GaudiKernel v17r0=====================================
    ! 2004-10-25 - Pere Mato
     - Algorithm.cpp: added setFinalized() at the end of of the finalization to avoid doing it
                      more than once.
     - Service.cpp: added protection on accessor msgSvc() for the MessageSvc itself.
     - Changed IAlgManager interface.
       - Added initializeAlgorithms() and finalizeAlgorithms()
       - Removed declareAlgCreator()
       - Added optional argument to createAlgorithm() to tell if the Algorithm should be managed
     - Removed PathResolver.h,cpp because of compilation problems on Windows

    ! 2004-08-10 - Charles Leggett
     - new class ServiceLocatorHelper used to implement service methods
       in Algorithm.(h,cpp), Service.(h,cpp), AlgTool.(h,cpp), Converter.(h,cpp)
     - ISvcLocator.h:  new method service<T>(type, name, T*, bool) to
        create/retrieve a non-default instance of a service

    ! 2004-08-10 - Charles Leggett
     - PathResolver.h,cpp: added
     - Service.(h,cpp): callback for output level

    ================GaudiKernel v16r2=====================================

    ! 2004-08-03 - Vanya BELYAEV
     - GaudiKernel/ParticleProperty.h
       Two methods for particle<-->antiparticle relations
           const ParticleProeprty* antiParticle() const ;
           void setAntiParticle( const PArticleProeprty* ) ;
     - GaudiKernel/ChronoEntity.h, GaudiKernel/StatEntity.h
       src/Lib/ChronoEntity.cpp,   src/Lib/StatEntity.cpp
       Files are moved from GaudiSvc package to allow run-time
       public inspection of Chrono & Stat counters
     - GaudiKernel/IChronostatSvc.h
       Two method are added to allow run-time publc inspection of
       Chrono & Stat counters:
         const ChronoEntity* chrono ( const ChronoTag& tag ) const ;
         const StatEntity*   stat   ( const StatTag&   tag ) const ;

    ================GaudiKernel v16r1=====================================
    ! 2004-07-22 - Pere Mato
      - DataObject.h: Added ostream operator << . In this way we can output DataObjects using ostream or MsgStream. This was
                      already possible with ContainedObjects.
    ! 2004-07-20 - Pere Mato
      - KeyedDictionary.h: Reverted typo removal in KeyedContainer<> class name. Otherwise the existing files are not
        readable.
      - Incicent.h: Added doxygen comments (from Chris Jones)
      - Property.h/MsgStream.h: added more specialized templates for handling MsgStream operator << and
        stream operator << for ArrayProperties and vector<T>. This should avoid compilation errors
        detected by Marco.

    ! 2004-07-19 - Pere Mato
      - System.h/cpp: added implementation for Windows
      - MsgStream: replaced a bunch MsgStream& operator <<(MsgStream&,...) by a templated one
        MsgStream& operator <<(MsgStream&,T) to handle any type for which the standard
        ostream& operator << (stream&, T) exists.
      - Property.h: added standard ostream& operator <<(ostream&,SimpleProperty<T>)

    ================GaudiKernel v16r0p1=====================================
    ! 2004-07-16 - Charles Leggett
      - DataObject.h: addeed refCount() method
      - System.h/cpp: added methods to get env vars and system parameters

    ================GaudiKernel v16r0=======================================
    ! 2004-07-13 - Charles Leggett
      - Additions for History Objects: HistoryObj.*, IHistorySvc.h, IAlgContextSvc.h

    ! 2004-07-13 - Pere Mato
      - ParticleProperty.h: added pdgID() and setPdgID() as alises to jetsetID() and setJetsetID()
      - Property.cpp: added template specialization to support string booleans in setProperty()
                      ("false", "true", "False", "True", ...)

    ! 2004-26-06 - Markus Frank
      - Small update in SmartIF.h to get a cleaner API
      - New interface: IPartitionControl
        Generic interface to manipulate services with several
        encapsulated instances "Partitions"
      - New Interface: ICounterSvc
        Interface to manage/create/access counters and groups of counters

    ! 2004-07-02 - Pere Mato
      - IInterface.h    Removed IID typedef to finally avoid clashes with windows.h

    ! 2004-15-05 - Markus Frank
      - DataSvc.h/cpp     Let the DataSvc connect to the incident service
                          - Generate incident on persistent data access
                            Enable using        DataSvc.EnableAccessHandler = 1;
                            Set incident name:  DataSvc.DataAccessName = "EventDataAccess";
                          - Generate incident on data fault:
                            Enable using        DataSvc.EnableFaultHandler = 1;
                            Set incident name:  DataSvc.DataFaultName = "EventDataAccess";

    ! 2004-01-05 - Markus Frank
      - IEvtSelector.h    New upgraded interface from C.Cioffi - NOT backwards compatible
      - Environment.h/cpp New header file extending the System namespace to handle
                          standard environment manipulations
      - Tokenizer.h/cpp   Allow for environment resolution in token values - if requested.
                          Default is backwards compatible

    ================GaudiKernel v15r4=======================================
    ! 2004-04-22 - Vanya Belyaev
      - Added changes from Vanya to fix the problems reported by Matt on output level for AlgTools

    ================GaudiKernel v15r3=======================================
    ! 2004-04-19 - Markus Frank
     - KeyedContainer.h: Modified erase() method to use a temporary vector to improve performance.
       Tested by Chris Parkes: The new keyed container code
         VeloSim:execute  238ms/event
       to be compared with the old timing
         VeloSim:execute  638ms/event - old code, using original keyed container

    ================GaudiKernel v15r2=======================================
    ! 2004-03-04 - Gloria Corti
     - IParticlePropertySvc.h: Changed interface to add the Pythia ID
     - ParticleProperty.h: Changed to Pythia ID in constructor and remove obsolete
                           accessors.

    ================GaudiKernel v15r1=======================================
    ! 2004-01-23 - Markus Frank
     - SmartRef.h/SmartRefbase.h  Replaced inheritance by object embedding. This change
                                  is neded to optimize CPU for persistency based on POOL.

    ! 2004-01-20 - Vanya BELYAEV
     - Algorithm.h  1) add protected accessor to m_outputLevel field
                    2) add shortcuts evtSvc() and svcLoc()
                    3) resurrect default(empty) Algorithm::initialize()
                       and Algorithm::finalize() methods
                    4) split 'long' lines to please LHCb-flavour Emacs
     - AlgTool.h    1) add protected accessor to m_outputLevel field
                    2) add shortcut svcLoc() to serviceLocator() method
                    3) split 'long' lines to please LHCb-flavour Emacs

    ================GaudiKernel v15r0=======================================
    ! 2004-01-08 - Werner Wiedenmann
     - System.h:        use gaudi "__linux" #define rather than LINUX
     - class AlgTool:   same MT-naming treatment as for Algorithm andService (use service_i)
     - ThreadGaudi.cpp: deal with AlgTool parents name
     - Converter.cpp:   get thread name from conversion svc

    ! 2004-01-08 - Vanya Belyaev
     - IJobOptionsSvc interface has been modified to add new method (readOptions(...)) to be
       ab;e to read additional option files.

    ! 2003-12-12 - Markus Frank
     - Added Keyed container as intrinisc Gaudi container object for Keyed objects
     - Added POOL storage types to ClassID.h

    ! 2003-12-12 - Markus Frank
     - Added Keyed container as intrinisc Gaudi container object for Keyed objects
     - Added POOL storage types to ClassID.h

    ! 2003-12-09 - Markus Frank
     - A bunch og changes in preparation to the integration with SEAL/POOL
     - Added dependency with SEAL

    ================GaudiKernel v14r2=======================================
    ! 2003-12-03 - Grigori Rybkine
     - Added using AIDA::<ClassName> to allow use of AIDA in applications
       without prefix AIDA:: (as before)

    ! 2003-11-26 - Pere Mato
     - Adapted to new version of AIDA (namespaces)
     - Replaced macro WIN32 by _WIN32

    ================GaudiKernel v14r1=======================================
    ! 2003-11-25 - Pere Mato
     - Modifications for Mac OSX (Guy Barrand)

    ! 2003-11-25 - Pere Mato
     - Added GaudiKernel/stl_hash.h to provide hash maps and sets

    ! 2003-11-20 - Pere Mato
     - Added IncidentTypes namespace with incident type names
       [ Bug #1085 ] 'Standard' incidents

    ================GaudiKernel v14r0=======================================
    ! 2003-07-03 - Markus Frank
      Major upgrade for use of POOL. Main change: extend technology specifier to
      int from unsigned char. Please note, that the changed interfaces are NOT BACKWARDS
      compatible. In particular in the converter area concrete user classes must
      support integer technology types. To create a compiler error, the converter
      base class does no longer have the method repSvcType().

      ModuleInfo.cpp        Remove signed/unsigned warning
      MsgStream.h           Added missing header file

      DataObject.cpp
      LinkManager.cpp/h     Dynamic link manager creation for POOL

      ClassID.h
      CnvFactory.h
      ConversionSvc.h
      Converter.cpp/h
      GenericAddress.h
      IAddressCreator.h
      ICnvFactory.h
      ICnvManager.h
      IConverter.h
      IOpaqueAddress.h
      IPersistencySvc.h      Integer technology types

      NTuple.h
      SmartRef.h
      SmartRefBase.cpp/h     Extend and allow customization for the usage in POOL

    ================GaudiKernel v13r5=====================================
    ! 2003-07-03 - Pere Mato
     - MsgStream.h: added op << for std::vector

    ! 2003-06-25 - Paolo Calafiura, Pere Mato
     - SmartDataObjectPtr: added const in operator = argument
     - Algorithm.cpp, Converter.cpp, Service.cpp: Fixed service_i() [ Bug #927 ]

    ================GaudiKernel v13r4p1=====================================
    ! 2003-06-26 - Pere Mato
     - System.cpp: removed white spaces in System::typeinfoName() for templated classes with more than one argument.

    ================GaudiKernel v13r4=====================================

    ! 2003-05-07 - Paolo Calafiura
     - Algorithm.cpp: sysExecute returns immediately if isEnabled() false

    ! 2003-05-06 - Paolo Calafiura for RD Schaffer
     - IAddressCreator.h and ConversionSvc: new creatAddress from string interface

    ! 2003-04-29 - Sebastien Ponce
     - solution to the gcc 3.2 dynamic_cast problem. For deeeeeep explanations
       of both the problem and the solution, see doc/dynamic_cast.pb

    ! 2003-04-18 - Paolo Calafiura
     - DataSvc.cpp: protect registerObject against null DataObj pointer (fail)

    ! 2003-04-15 - Paolo Calafiura
     - NTupleImplementation.cpp: delete m_buffer mismatched with array new in
       RootHistCnv::RCWNTupleCnv::book
     - System.cpp: fix memory leak in getErrorString

    ! 2003-04-10 - Marco Cattaneo
     - RndmGenerators.cpp: Fix a memory leak at finalisation

    ! 3002-04-04 - Pere Mato
     - Updated IAddressCreator interface with two convert IOpaqueAddresses to
       string format and vise versa (proposal by RD Shaffer)
       virtual StatusCode convertAddress( const IOpaqueAddress* pAddress,
                                          std::string& refAddress) = 0;
       virtual StatusCode createAddress( const std::string& refAddress,
                                         IOpaqueAddress*& refpAddress) = 0;

    ! 2003-04-01 - Sebastien PONCE
     - some coding convention applications
     - bug fix in PropertyMgr concerning the output of property names

    ! 2003-03-13 - Paolo Calafiura
    - moved pthread handle and "_self" call to System.h

    ! 2003-03-11 - Paolo Calafiura
    - MsgStream: define MSG::hex and MSG::dec for gcc 3.2
    - rename ThreadLibGaudi.h as ThreadGaudi.h

    ! 2003-02-27 - Charles Leggett & Paolo Calafiura
    - IMessageSvc: added two new abstract methods useColor and
      getLogColor (all existing MsgServices needs updating!).
      Added MSG::Color enum
    - MsgStream: support colored messages

    - changes to Converter service method (see Algorithm and Service
      below). TO DO: extract common service_i implementation

    ! 2003-02-25 - Werner Wiedenmann & Paolo Calafiura
     - add ThreadLibGaudi.{h,cpp}: utilities to get and parse thread
       instance names
     - changes to Service and Algorithm:
             - service method asks first for thread specific service
    	   instance, if not available get generic service instance
             - allow for setting of thread specific and generic properties
             - create thread specific sub-Algorithms automatically

    ! 2003-01-21 - Markus Frank
      - Add second connectOutput call to conversion service interface.
        Second argument allows to specify the opening mode
        (NEW, RECREATE, UPDATE)
      - DataTypeInfo: add 2 new types: LONG_STRING, LONG_NTCHAR
      - (I)SelectStatement: Allow for more generic selects than
        only FUNCTION and STRING

    ! 2003-01-06 - Sebastien Ponce
     - improvements in support for gcc 3.2

    ================GaudiKernel v13r3=====================================
    ! 2002-11-21 - Sebastien Ponce
     - fixes in Converter.cpp to avoid memory leaks

    ! 2002-11-19 - Pere Mato
     - Added setExecuted() after execute() in Algorithm::sysExecute(). Requested by
       Vanya.

    ================GaudiKernel v13r2=====================================
    ! 2002-11-06 - Sebastien Ponce
     - fixes in order to remove deprecated warnings on gcc 3.2
     - coding conventions applications

    ! 2002-11-11 - Markus Frank
     - Timing.cpp: Use routine ::gettimeofday(...) to measure current time.
       This improves the precision of several timing measurements
       (current time, elapsed time) to 1 micro second.
       The change affects linux only.

    ! 2002-11-08 - Markus Frank
     - Move CLID for N-tuples into ClassID.h
     - Fix bug in ISvcLocator.h: If service initialization failed, status was still OK.

    ! 2002-11-06 - Markus Frank
     - DeclareObjectFactory.h - add declarations for containedobject factories
       and dataobject factories.

    ================GaudiKernel v13r1=====================================
    ! 2002-10-21 - Pere Mato
     - IRegistry.h - the typedefs in this class are now public.

    ! 2002-10-21 - Sebastien Ponce
     - Bug fix in StreamBuffer for deserialization of char*

    ! 2002-10-11 - Paolo Calafiura
     - Added protection in ConversionService::setDataProvider: since ATLAS use
       StoreGate and pass a NULL pDataSvc pointer.

    ================GaudiKernel v13r0=====================================
    ! 2002-10-04 - Pere Mato
     - Changed interface IJobOptionsSvc to add accessors to the JobOptions
       catalogue

    ! 2002-09-27 - Sebastien Ponce
     - fixes in order to compile on gcc 3.2
     - lots of coding conventions applications

    ! 2002-09-25 - Markus Frank
     - Add declarations for object factories to DeclareFactoryEntries.h
     - Remove windows compiler warning in Bootstrap.cpp

    ! 2002-09-25 - Sebastien Ponce
     - Implementation of the reinitialize method for DataSvc

    ! 20020916 Pere Mato
     - Changes to clean the reference counting and memory deallocation
       detected by the "valgrind" tool.

    ! 20020703 Paolo Calafiura
     - RegistryEntry.h: put DataSvc in the global ns when declaring as friend
     - Service.h: add ISvcLocator include for service() inline implementation

    ! 20020628 Pere Mato, Sebastien Ponce
     - Improved error reporting when loading dynamic libraries
     - Changed INFO messages to DEBUG when initializing services
     - Replaced forward class declarations by including the concerned header files. This
       is to aliviate user confusion.
     - Added function format(string fmt, ...) that can be used to format messages
       within the MsgStream class.
       Example:
       log << MSG::INFO << format("Evt: %8d Run: %8d", evt, run) << endmsg;
    	 Caveat: Since the unspecified argument list is used (...) the arguments can not
    	 be cheched for the correct type and possible conversions are not triggered.

    ! 20020529 Paolo Calafiura
     - Auditor.h: service() needs IServiceLocator header file
     - DeclareFactoryEntries.h: typo in AudFactory name

    ! 20020506 Paolo Calafiura
     - PropertyMgr: use interface hub (Massimo ApplicationMgr refactoring)

    ! 20020506 Andrea Valassi
     - Change in MsgStream.h to allow the use of std::hex on Windows

    ================v12r2=====================================
    ! 20020506 Pere Mato
     - Bug fix in AlgTool.cpp. Pointer to ToolSvc not initialized
       (Reported by O. Callot)

    ! 20020502 Pere Mato
     - Bug fix in base classes Service and Converter. The accessor msgsvc() shpould
       returns always a valid MessageSvc (Reported by RD Schaffer)
     - Added templated function service() in Converter base class.
     - Bug fix in Service.cpp. The finalize method access violates if called before
       initialize (Reported by Wim Lavrijsen)

    ================v12r1=====================================
    ! 20020426 Markus Frank
      - Bug fix in DataSvc, which inhibited automatic directory
        generation if intermediate leafs were present.

    ================v12r0=====================================
    ! 20020408 Pere Mato
      - Included ISvcLocator.h and IMessageSvc.h in Algorithm.h instead
        of the existing forward declaration

    ! 20020405 Pere Mato
      - Added two new accessors to AlgTool base class
        templated  service( name, svc, createif) to access any service
    		tooSvc() to access the tool service

    ! 20020327 Pere Mato
      - Changes needed for Solaris (by Wim Lavrijsen). Details:
        +++ GaudiKernel/src/Lib/Property.cpp
           getQuotedItem() in unnamed namespace instead of static
        +++ GaudiKernel/src/Lib/ModuleInfo.cpp
           explicit cast added: "if ( 0 != ::dladdr((void*)System::moduleHandle,...
        +++ GaudiKernel/src/Lib/System.cpp
           in System::typeinfoName(), added a #elif defined(sun)
        +++ GaudiKernel/CnvFactory.h
           removed virtual inheritence in class CnvFactory & CnvFactory2
        +++ GaudiKernel/ObjectFactory.h
           removed virtual inheritence in class ObjectFactory & ObjectFactory2

    ! 20020315 Markus Frank
      - Kernel.h
        Properly #ifdef LONGLONG_MAX, LONGLONG_MIN
      - MsgStream.h
        Add operator<<(longlong), operator>>(longlong&)
      - StreamBuffer.h
        Add serialization for std::vector, std::list
        Add operator<<(longlong), operator>>(longlong&)
      - Converter.cpp
        Do not dereference dataProvider if pointer is invalid
      - TimePoint.h
        Add StreamBuffer& operator<<(), StreamBuffer& operator>>(),
        MsgStream& operator<<()
      - TimePoint.h
        Add MsgStream& operator<<()
      - ITime.h
        Add MsgStream& operator<<()

    ! 20020213 - Markus Frank
      - Added clear() method to ObjectVector<T> and ObjectList<T>
        clear() removes all elements from the ObjectVector and  ObjectList<T>

    ! 20020215 Pere Mato
      - Removed dependency with AIDA
      - Eliminated the old IHistogramXXX interfaces. Users should use the
        AIDA ones directly
      - Changed ClassId.h and IHistogramSvc.h to include 3D histograms

    ! 20020225 Markus Frank
      - Problem reported by Kambiz Mahboubi fixed concerning the
        user defined random number generator (i.e. DefinedPdf)
      - GaudiKernel/RndmGenerators.h

    ! 20020213 - Pere Mato
      - Algorithm.cpp: Fixed bug
        The status code of sysInitilize() of sub-algorithms was not
        checked. Now it should fail and report an error.

    ================v11r1=====================================
    ! 20020128 - Markus Frank
      - DataObejct.cpp: Fixed bug
        Automatically create leaves on registerAddress if the
        Option "ForceLeaves" is set to true
      - SmartRefs.cpp:
        Fixed Feature: For smart refs to ContainedObject(s), resolve
        parent pointer only when needed.
      - ConversionSvc.cpp:
        Bug fix: Converters were never finalized. Done from now on, whenever the
        converter gets disconnected from the conversion service.

    ================v11r0=====================================
    ! 20011212 - Pere Mato
      - Added dependency to AIDA requested by David Quarrie

    ! 20011207 - Sebastien Ponce
      - Changed interface IConversionSvc.h. Added method converter(const CLID&) to get
        the converter with that CLID.

    ! 20011126 - Markus Frank
      - MsgStream.cpp
        Any change of the printout level from the application program
        using MsgStream::setLevel(...) is ignored by the message service.
        Update the local printout level on a by message bases and restore
        the previous printout level.

    ! 20011120 - Markus Frank
      - NTuple.h
        the function entries addItem(...) are DEPRECATED for
        Ntuple columns, which depend on an index column.
        The replacement is: addIndexedItem(...).
        This has repeatedly caused confusion for users.
        Also added doxygen information for these entries.

    ! 20011115 - Pere Mato
      - Added initialize() and finalize() methods in IAlgTool interface.
      - The base class AlgTool implemements them as dummy but allows an implementation
        of  them on specific Algorithm Tools
      - Removed the need to implement a queryInterface() in specific Algorithm tools. Instead
        use the expresion declareInterface<Ixxxx>(this) in the constructor.
      - Added releaseTool() method in IToolSvc.

    ! 20011111 - Pere Mato
      - Many Changes from Markus for the DataStore classes re-design.

    ! 20011108 - Pere Mato
      New versions of interfaces:
      - ISvcManager.h (incompatible) Added more functionality to offload ApplicationMgr
      - ISvsLocator.h (compatible) Changed getServices() to const

    ! 20011105 - Sebastien Ponce
      Added new methods in DataSvc to be able to set the root without clearing
      the store

    ! 20011009 - Pere Mato
      Removed CLID_Event from ClassID.h to avoid clashes with Event.h generated from
      GaudiObjDesc tools

    ! 20011005 - Pere Mato
      Changed IInterface.h Introduced a new constructor for InterfaceID that
      uses a name (class name) instead of the interface number. A hash
      function converts the name into a number.

    ! 20011003 - Pere Mato
      Changed SmartDataLocator.h reported by David Rousseau

    ! 20010914 - Pere Mato
      Modified ClassID.h to include CondDB stuff
      Solved bug in DataSvc.cpp reported by Andrea Valassi

    ! 20010710 - Pere Mato
      Removed interfaces IGiGaSvc.h and IGiGaSetUpSvc.h

    ! 20010706 - David Quarrie
      Extend IChronoStatSvc to support retrieving the delta-time between
      start/stop pairs.

    ! 20010629 - Pere Mato
      Changes in interfaces needed for improved interactivity support :
      IService.h   : Added new method reinitialize() to allow services to
                     take into account changes after the first time initialization
      IAlgorithm.h : Added beginRun() and endRun() methods. These are called each time
                     the event loop is executed.
      IEventProcessor.h : Added executeRun() and nextEvent() methods. This is to
                          eliminate the need to use the IAppMgrUI interface in the
                          EventLoopMgr components.
      IAppMgrUI.h  : Renamed method state() to stateName().
      IScriptingSvc.h : Deleted

    ! 20010627 - Markus Frank
      Bootstrap.h/cpp : Allow to set the instance of the service locator
                        in case several ApplicationMgr instances are present.
      ObjectVector.h,
      ObjectList.h    : Add forward typedefs for pointer and const_pointer
                        (Requested by P.Calafiura/LBL)
      RefTable.h      : Implement serialize methods
      RegistryEntry.h/cpp,
      DataSvc.h/cpp   : Implement several bug-fixes
                         - allow for objects in locations like /AA/BB/BB/BB/...
                         - allow to access objects with omission of the root
                           directory: "/Event/MC" is equivalent to "MC"
                         - execution optimization
      SmartDataObjectPtr.h : Fix annoying compiler warning
      SmartRefBase.h,
      SmartRef.h      : operator==() was badly implemented (Found by O.Callot)
      strcasecmp.h    : WIN32 needs an additional #include <cstring>

    ! 20010625 - Pere Mato
      - Added remote properties functionality. Changed PropertyMgr and base classes Service
        and Algorithm
      - Added MsgStream::endmsg with same functionality as endreq. (Request from ATLAS)
      - Using AIDA Historams instead of LHCb private ones. The existing include files
        include the new ones but generating a warning. The IAnnotation interface is added
        because it does not exists in the used AIDA release

    ! 20010618 - v10 (Flr)
      requirements - use GaudiPolicy v5
                     apply pattern package_stamps

    ! 20010518 - Pere Mato
      Changed CLIDs in Reftable.h (re-tagged v9)

    ! 20010508 - Pere Mato
      Fixed bug reported by M. Cattaneo. The OutputLevel of AlgTools was not
      set correctly if the parent Algorithm didn't set it explicitely.

    ! 20010503 - Markus Frank
      Allow access to data store items without specification of the top level
      directory. It is equivalent to specify an histogram like "/stat/simple/1"
      or simply "simple/1". Note that the the entire prefix "/stat/" must be
      omitted. The use is backwards compatible.
      Added a qualifier ALWAYS to the message service specifying that a given
      message should always be printed.
      ie.
      MsgStream log (msgSvc(), "Name")
      log << MSG::ALWAYS << "Hello." << endreq;
      will result in
      Name      SUCCESS Hello.
      and will not be omitted.

    ! 20010430 - Markus Frank
      Bug fixes:
      GaudiKernel/DllMain.icpp WINNT: Processhandle should no longer be closed
                               since the handle is shared for all DLLs.
      GaudiKernel/INTuple.h    Interface extended to directly use NTuple pointer
                               to write/read n-tuple. It is no longer necessary to
                               use the n-tuple service for these actions.
      NTupleImplementation.h/cpp dto.
      GaudiKernel/SmartDataPtr.h        Bug fix:
                                        SmartDataPtr<Object> obj (...)
                                        if ( obj ) {...}
                                        Check succeeded if object is present however
                                        had bad type. Now this check checks for the
                                        presence of the object AND the data type.
                                        Moved pointer to object from SmartDataObjectPtr
                                        to SmartDataStorePtr (template class).
                                        Also moved corresponding check operators.
      GaudiKernel/SmartDataLocator.h    dto.
      GaudiKernel/SmartDataStorePtr.h   dto.
      GaudiKernel/SmartDataObjectPtr.h  dto.
      GaudiKernel/SmartDataObjectPtr.cpp dto.

    ! 20010320 - Sebastien Ponce
      - PropertyMgr.h Avoid compiation errors for egcs 2.95.2
      - Debugger.cpp, ProcessDescriptor.cpp Avoid compilation errors for 2.95.2
      - MsgStream.h Added the bool type in the operator<<().

    ! 20010320 David Quarrie
     - Fix Linux macro problem in Kernel.h (should be __linux, not linux).  Fix
       memory leak in Property.h. Fix a destructor problem in PropertyMgr.h by
       adding a std::vector<bool> to keep track of Property ownership. Add
       a protected state() member function to Service to allow subclasses to
       access the current state.

    ! 20010319 Pere Mato
     - Fixed interface IAddressCreator

    ! 20010316 Markus Frank
     - New Interface added IEventProcessor

    ! 20010315 Andrea Valassi
     - Minor changes in IValidity.h, MsgStream.h ClassID.h

    ! 20010314 Pere Mato
     - Removed const in IProperty::getProperty(const string&, string&)
       Implies to modify all the classes implementing such interface

    ! 20010314 David Quarrie
     IScriptingSvc.h Add execute( const std::string& ) to allow for execution
                     of a script.
     Property.cpp    Fix problem in dealing with either double or single quotes
                     as delimiters for string values.

    ! 20010313 Markus Frank

     - GaudiKernel/
    	Bootstrap.h    Add entry point to create multiple Application Managers
            StreamBuffer.h Change in buffer allocation (See Gaudi Developers message)
            strcasecmp.h   Make inline function for WIN32 to standardize on Linux str(n)casecmp
                           without all the #ifdefs
            HashTable.h    Bug fix by Traudl Hansl-Kozanecka (GLAST)
            RefTable.h     dto. Moved from LHCbEvent to GaudiKernel.
            IRunable.h     new interface for Runable
            IAppMgrUI.h    Allow access to the application managers state.
    			  (May need changes to ApplicationMgr in GaudiSvc)
            SystemBase.h   ->@System
            System.h       ->@System
            Timing.h       ->@System
    	Memory.h       ->@System
            ModuleInfo.h   ->@System
            Debugger.h     ->@System

     - src/static/  Move all files to LIB - static is no longer needed at all!

     - src/Lib
    	Bootstrap.cpp  Add entry point to create multiple Application Managers
            DataObject.cpp Remove warning on linux in acceptInspector()
            ConversionSvc.cpp Bug-Fix: if on creating persistent objects no converter was
                              found success (!!) was returned. No correctly returns error.

    	System.cpp                ->@System
    	Debugger.cpp              ->@System
    	Memory.cpp                ->@System
            Timing.cpp                ->@System
            ModuleInfo.cpp            ->@System
            Win32PsApi.h              ->@System
            ProcessDescriptor.h       ->@System
            ProcessDescriptor.cpp     ->@System

     -@System:
           Major code reshuffeling.
            - Static class was changed to namespace. This will make it much simpler to
            extend the functionality without actually having the default header System.h.
            System.h containes the declarations of all functions in a backwards-compatible way.
          - All other functionality was factorized out:
            Memory.h/cpp 		Info about memory consumption
            Timing.h/cpp   		Info about time consumption
            ModuleInfo.h/cpp	Info about running modules
    	Debugger.h/cpp          Invoke debugger from running program (NT only)
            ProcessDescriptor.h/cpp **Internal** access to process specific information
            + Win32Api.h            as it is exported by Linux/NT. This header is PURELY internal
                                    and should never be included directly.

    ! 20010313 Pere Mato
     - Moved files ISolid.h, IPVolume.h, ILVolume.h, IDetectorElement.h, IGeometryInfo.h
       ITransportSvc.h to the DesDesc package. Forward links to the new position have been
       left in place.

    ! 20010312 Markus Frank
     Changes to the job options processing
     - implemented PropertyMgr::setProperty( const std::string& n, const std::string& v )
     - Properly implement the macro QUOTEDELEMENTINPUT.
       CTDay ir right when he quotes that this is "HACK Big Time". It's also undebuggable.

    ! 20010305 Pere Mato
     - Corrected bug reported by O. Callot that the OutputLevel was not working
       for Algorithms.

    ! 20010228 David Quarrie
     - ARM page 210 tweaks to IToolFactory.h to avoid compiler warnings. Add
       DECLARE_ALGTOOL(X) and DECLARE_TOOL(X) macros to DeclareFactoryEntries.h

    ! 20010226 Pere Mato
     - Small changes to make it compile in NT

    ! 20010223 David Quarrie
     - Changes for Solaris support, which is incomplete. The package compiles on
       this platform, but some of the required template specialization "hacks" are
       not fully understood and need to be revisited. Run-time debugging hasn't
       yet begun.
     - Changes to avoid compiler warning messages. These are all due to function
       overloading across class hierarchies. The policy is described on Page 210
       of the ARM. It's not yet clear whether these are compatible with the Visual
       C++ compiler on NT. Modified files:
           GenericLink.h IAlgFactory.h IAuditorFactory.h IDataDirectory.h
           IFactory.h IHistogramSvc.h ISvcFactory.h ObjectContainerBase.h
           ObjectFactory.h ObjectList.h ObjectVector.h
     - Changes to support the scripting service. SimpleProperties now support
       callback handlers for both reading and updating. The IProperty interface
       has been extended to allow more flexible setting & retrieving of properties
       from streams and strings. Modified files:
           IProperty.h Property PropertyMgr PropertyVerifier
     - Add support for explicitly specifying the CLID and name of the root
       object in the transient event store (defaults are CLID_Event and "/Event").
       Modified files:
        DataSvc IDataManagerSvc
     - Other details:
       AlgTool Algorithm Auditor Service
           Support new IProperty interface. Use function template for
           declareProperty. Support deferred service instantiation in service
           accessors.
       FactoryTable.h
            Fix compiler warning because of missing comment characters
       System.cpp
            Minor tweak to avoid SOlaris compiler warning.

    ! 20010223 Pere Mato
     - Changes to deal with the template specialization in the new version of GNU c++ compiler

    ! 20010208 Pere Mato
     - Modified System.cpp. Added suffix in the DLL name when loading

    ! 20000125 Pere Mato
     - Changed CLID& by CLID in Converter base class to avoid weird problems with some
       converters in Linux.
     - Corrected bug in Algorithm::service()
     - In Bootstrap.h, added static method Gaudi::svcLocator() to get the ISvcLocator*
       in isolation.
     - In ISvcLocation.h added a templated method ISvcLocator::service() to facilitate
       retrival of services.

    ! 20010122 - GaudiKernel v8r1 and head revision (Flr)
      GaudiKernel/IGiGa*.h - update include file path to new schema.

    ! 20000119 Pere Mato
     <<< Changes are not compatible with existing packages. Everything should be re-built >>>>
     - Eliminated static library GaudiBase.
     - Eliminated the constant data files IInterface.cpp and Kernel.cpp
     - Renamed class IID to InterfaceID
     - Added de definition of the InterfaceID (IID) constants in each interface Ixxxx.h file
     - Introduced new file ClassID.h which constains some the definition of CLID and some basic
       constants.
     - Changes asked by Vanya for the classes: ILVolume, IPVolume, ISolid, IGeometryInfo,
       IDetectorElement

    ! 20001215 Pere Mato
     - Renamed Time::Time class by TimePoint class
     - The constants Time::time_absolutepast and Time::time_absolutefutre are now defined
       in the TimePoint.h. The namespace Time has been removed.

    ! 20001213 Pere Mato
     - Cleanup and adaptation to the new way of documenting the code based
       on Doxygen (JavaDoc style)
     - Incorparated changes done by D.Quarrie in the old LHCb repository

     - Add isInitialized() and seInitialized() member functions and handling to prevent
       multiple initialization attempts on the same Algorithm. This protection is needed
       when scripting is in use.

    ! 20001119 - David Quarrie
     - Implemented a new service called ScriptingSvc. This is a service (with an
       initial implementation based on Python), which provides a scripting capability
       at run-time as opposed to the JobOptionsSvc which is limited to run startup
       time. This service has entailed some changes to the Gaudi kernel classes, which
       are mainly extensions to existing interfaces, but with some backwards-compatible
       rework of several of the Property classes.
       + Added new interface: IScriptingSvc

    - Auditor/Auditor
      Same changes as for Algorithm.

    - Interfaces/IServiceLocator
      Add list<IService*> getServices() for symmetry with the IAlgManager.

    - JobOptionsSvc
      A major rework of the Property class hierarchy to better support the scripting
      interface. For the most part the changes are backwards compatible, with the
      exception that bounds checking involves use of a verifier().  Note that the
      PropertyRef.cpp & .h files are obsolete since that class is now typedef'd.
      The PropertyList class for nested properties is not yet functional. Both of
      these classes have been retained but bypassed in the build for now.

    - Kernel/Service
      Replace overloaded declareProperty function by function template.
      Add PropertyMgr* accessor

    - ApplicationMgr/AppMgrUI
      Add AppMgrUI class as intermediate class between IAppMgrUI and
      ApplicationMgr. This simplifies the scripting interface.

    ! 20001204 Pere Mato
      Moved in ObjectVector<T> and ObjectList<T> from the LHCbEvent package.
      Removed iterator from ObjectContainerBase class

    ! 20001122 Pere Mato
      Various changes needed for CMT v1r7 and Nmake

    ! 20001128 GaudiKernel v8
      move *.cpp into src/static/ and src/Lib/
      move *.h, *.icpp and GaudiFactory.cpp into GaudiKernel/
      update #include statements

    !=============================================================================
    ! 20001018 - Pere Mato
     - Implemented a new service called IncidentSvc. This allows to communicate
       asynchronously things that happen in the system. The ApplicationMgr uses it to inform
       when begining and ending the processing of one physics event.
       + Added new interfaces related to the new service: IIncidentSvc.h, IIncidentListener.h
       + Added new base class: Incident.h

     - Changed IHistogramSvc to be consistent with the (HTL) histogram implementation using
       double for defining histogram edges instead of float. Code using histograms needs to
       be re-compiled!!. (CT0000000035488)

    ! =====================================================================
    ! 20001310 - Markus Frank
     Changes files:
    	DataSvc/DataSvc.cpp
    	DataSvc/DataSvc.h
    	PersistencySvc/ConversionSvc.cpp;
    	System/System.cpp;

          New Interfaces:
          Interfaces/IDataSourceMgr.h;
          Interfaces/IInspectable.h;
          Interfaces/IInspector.h;
          Interfaces/ISelectStatement.h;

          Changed interfaces:
          Interfaces/INTuple.h      Extension for N-tuples to accept pre-selections
          Interfaces/IPersistencySvc.h;

    	Kernel/DataObject.cpp;    Extended to make dataobject inspectable
    	Kernel/DataObject.h;      dto.

    	// New files:
          Kernel/DataTypeInfo.cpp;  allow access to primitive type information
          Kernel/DataTypeInfo.h;    dto.
          Kernel/SelectStatement.h; base calss for selct statements (e.g. for N-tuples)
          Kernel/Tokenizer.cpp;     small parser for qualified strings of type: ITEM='value'
          Kernel/Tokenizer.h;       dto.

        	Kernel/GenericAddress.h; Fix bug when returning object name from datadirectory
          Kernel/IInterface.cpp;   Added Interface and storage types

          Kernel/ObjectFactory.h;
          Kernel/StreamBuffer.h;
    	MessageSvc/MsgStream.h;

          NtupleSvc/NTuple.h;       Extension for N-tuples to accept pre-selections
          NTupleSvc/NTupleImplementation.cpp;  dto.
          NTupleSvc/NTupleImplementation.h;    dto.
          NTupleSvc/NTupleItems.cpp;           dto.
          NTupleSvc/NTupleItems.h;             dto.
          NTupleSvc/Selector.cpp;              Base class for user preselectors
          NTupleSvc/Selector.h;                dto.

    !=======================================================================================
    ! 20001009 - Vanya Belyaev
       (1) Gaudi/Kernel/IInterface.cpp - added definition of IID_IGiGaCnvSvc
                  and 2 definitions of pseudy-technology types, needed for GiGa
       (2) remove obsolete method from IGiGaSvc interface, the functionality of these
           method is replaced by  GiGa Conversion Sercice

    !========================================================================================
    ! 20001009 - David Quarrie, Pere Mato
     - Added the support for "Auditors". The following existing files has been changed:
       Algorithm.h (.cpp), ISvcLocator.h, IInterface.cpp
       New interfaces: IAuditor.h, IAuditorFactory.h
       New classes: Auditor.h (.cpp), AudFactory.h

    ! ======================================================================================
    ! 20000731 - Vanya Belyaev
      - Gaudi/DetectorDataSvc/DetectorElement.h bug fix
           (1) remove empty default constructor         (incorrect initialization)
           (2) now default construction is not empty!!!

    ! ======================================================================================
    ! 20000720 - Gaudi v7

    ! 20000717 - Radovan Chytracek
      - Fixed inheritance order for DetectorElement class + class ID getters

    ! 20000710 - Gloria Corti
      - Introduce the interfaces and base classes for the ToolSvc
         new files in Interfaces: IAlgTool.h, IToolFactory.h, IToolSvc.h
         new files in Kernel: AlgTool.h, AlgTool.cpp, ToolFactory.h
         modified IInterface.cpp (in Kernel) to add the IID for IAlgTool,IToolFactory and
         IToolSvc
      - requirements: introduce AlgTool.cpp in Gaudilib
      - Change obsolete comment in IParticlePropertySvc

    ! 20000709 - Markus Frank
      - Bug fixes for release
      - Randm number wrapper as described in the Sotfware week

    ! 20000704 - Pavel Binko
      - Interfaces - the interfaces IAxis, IHistogram and IHistogramSvc
                     have been enhanced by function :
                     - returning all edges in a given axis
                     - setting the histogram title
                     - allowing to register, unregister, retrieve and find
                       a histogram in the transient histogram data store

    ! 20000704 - Marco Cattaneo
      - requirements : use LHCbCMT v3r1 (to pick up EXTLIB v2r1)

    ! 20000630 - Pere Mato
      - Removed implementations of initialize(), finalize() and execute()
        in Algorithm base class as a response to the e-discussion concerning
        the spelling of such methods.

    ! 20000622 - Vanya Belyaev
      - System.cpp : introduce "more correct" coefficient between time clocks and seconds :-))

    ! 20000622 - Vanya Belyaev
      - System.cpp : introduce "correct" coefficient between time clocks and seconds

    ! 20000621 - Marco Cattaneo
      - requirements: insert underscore in name of Gaudi_shlibflags macro,
                      to please CMT v1r5

    ! 20000617 - Vanya Belyaev
      - Bug fix in Gaudi/System/System.cpp file in method char** System::argv()

    ! 20000616 - Pere Mato
      - Changed Algorithm base class. Added an error counter and max error
        limit to allow continuation of trhe program. Default is one.
        Added accessor to RndmGenSvc from base class.

    ! 20000615 - (Pere Mato, David Quarrie)
      - Changed interface IAlgorithm and base class Algorithm to support
        Algorithm sequences (Babar style). Added some more algorithm flags
       (enabled, executed, fileter passed, ...) in base class. Added method
        reasetExecuted() in the IAlgorithm interface.
      - Changed IProperty interface to support property browsing. Added the
        following methods:
        const Property& getProperty( const std::string& name ) const = 0;
        const std::vector<Property*>& getProperties( ) const = 0;
      - Changed base class Property to introduce the possibility of asking
        to a property for its type.
      - Introduced new classes: PropertyList, CommandProperty
        A PropertyList is a Property that contains an array of other properties
        A CommandProperty has a callback function associated that is called
        when a new value of the property is set.
        The PropertyList can handle property nesting. The name convention is
        that names are separated by ":".
      - Changed PropertyMgr to base its implementation with PropertyList

    ! 20000609 - (Markus Frank)
      - Main improvement:
        Implementation of the public part of the random number generator package.

      Besides this I **had** to do some code cleanup:
      - Algorithm.h: Removed Algorithm::create(...)
        Function was declared but never implemented.
      - IChronoStatSvc.h: "long double" is not really a ansi data type.
        Changed to double.
      - IDataManagerSvc.h
        IID_IDataManagerSvc_NO_ERROR = SUCCESS becomes
        IID_IDataManagerSvc_NO_ERROR = IInterface::SUCCESS
      - ITime.h: use longlong data type from kernel.h instead
        of __int64 and "long long" + #ifdef.
      - PropertyRef.h: Simple typedefs of simple properties.
        e.g. typedef SimplePropertyRef<int> IntegerPropertyRef;
        just as it is done in "Property.h".
      - DataObject.cpp: Actually implement 2 member functions which
        were always in the header, but never made it to code.
      - Kernel.h: If neither Linux nor WIN32 is the platform,
        fix "longlong" to a 64 bit structure capable of holding
        the variable.
      - StreamBuffer.h: Clean up internal classes ContainedLink and
        IdentifiedLink, get rid of macros
      - Message.h: There is no such class "ostream". Use #include <iostream> instead;
      - MsgStream.h: Added copy constructor
      - NTuple.h:    Get rid of a few macros and write the proper code instead.
      - Get rid of NTupleFile.h and NTupleDirectory.h - should never have
        been used at all. The classes were always defined in NTuple.h!

    ! 20000525

    - Fixed template instantiation in Ntuple::Item (For version 6 of Visual C++
    - Corrected "OuputLevel" bug in Service.cpp. This would not take into account
      a change in the OuputLevel for services.

    ! 20000523

    Markus Frank Make System.cpp compile under VC 6.0 which opposite to VC 5.0
                 defines STRICT by default.

    ! 20000410 - Gaudi v6

    New EventSelector Interface  06/04/2000
    ----------------------------------------
    Gonzalo Gracia Abril: IEvtSelector.h modified

    Gaudi splited into Gaudi and GaudiSvc
    -------------------------------------
    - Nearly all services moved into the new package GaudiSvc
    - Gaudi remains to contain only interfaces, base classes,
      DataSvc and ConversionSvc
    - Gaudi uses the new package LHCbCMT
      (Pavel Binko)

    Small correction in Service.cpp/h
    ---------------------------------
    - Added const function messageService() which was
      necessary to get a MsgStream in any constant function
      (Gonzalo Gracia Abril)

    New Functionality
    -----------------
    - New histogram 1D and 2D interfaces, conforming the AIDA interfaces.
    - HistogramSvc changed - the LHCb histogram implementation uses now
      the HTL implementation of histograms through the AIDA interfaces.
    - HistogramSvc and NTupleSvc changed in order to allow their moving
      to the new package GaudiSvc.

    ! 19991116 - Gaudi v5

    New Functionality
    -----------------
    - Added a output level threshold associated to the clients (services &
      algotihms) of the MessageSvc overriding the global threshold.
    - New JobOptions service implementation with a new parser.
    - Support for N-tuples.
    - Support for dynamic library loading

    Improvemenets
    -------------
    - Added interfaces for detector description
    - Improved ParticleProperty service. Added index by LundID.
    - Modified ApplicationManager to acommonatye other changes

    ! 19991018 - Gaudi v4r1

    New Funtionality
    ----------------
    - Data service and conversion services changed, information about
      storage types and class IDs added
    - HTL histograms supported
      + New HTL interfaces are the Interfaces directory,
        their syntax does not differ from the native HTL syntax
      + Compilation with the HTL library nedds the flag HTL_USE_STD

    Changes done by Markus Frank, Pere Mato, Pavel Binko

    ! 19990812

    New Funtionality
    ----------------
    - Support for dynamic link libraries (shareable libraries):
      + Added interface IClassManager with a method called loadModule()
      + Added interface IFactory as a base interface for all factory interfaces
      + Added a FactoryTable static class to support DLLs
      + Modified implemtation of AlgFactory and SvcFactory to use new interfaces
      + Added new property ("DLLs") in ApplicationMgr to set a list of DLL to be loaded at run time
      + Temporary compilation macro to use Gaudi with DDLs (GAUDI_USE_DLL)

    Improvements
    ------------
    - Removed "std" from the names of standard services instances.

    ! ========================================================================

    ! 19990618 - Gaudi v4

    Changes done by Markus Frank, Marco Cattaneo, Paul Maley, Pere Mato
                    Rado Chytracek, Iain Last, Pavel Binko among others

    New Functionality
    -----------------
    - Support for Detector Descriptions:
      New classes: DetDataSvc, DetectorElement
      New Interfaces: IgeometryInfo
    - Particle Property service:
      New classes: ParticleProperty, ParticlePropertySvc
      New interfaces: IPartoplePropertySvc

    Improvements
    ------------
    - Kernel:
      Added classes: GenericAddress, GenericLink
      Many changes in base classes to support new functionality.
    - Algorithm:
      Changed initialization methods (sysInitialize(), sysFinalize())
      Added assessors to standards services
    - ApplicationMgr:
      Changed to support new services (DetDataSvc, ParticlePropertiesSvc,...)
    - DataSvc:
      Improvements in interfaces. Changed the way to name a DataObject in the store.
      Added classes: SmartDataLocator, SmartDataObjectPtr
    - MessageSvc:
      Added classes GaudiErrorHandler and GaudiNagHandler to
      interface NAG C error handling to Gaudi/MessageSvc.
      In order to avoid compile time dependency of Gaudi on <nag.h>,
      GaudiNagHandler is defined inline. Applications using this
      facility must #include "Gaudi/MessageSvc/GaudiNagHandler.h".
      Details of usage can be found at:
      http://lhcb.cern.ch/~cattanem/LHCb/GaudiNagC.html
    - PersistencySvc:
      Changed to support two or more conversion services. This was needed to
      support the Root conversion service.
      Added classes OutputStream, OutputStreamAgent