The Gaudi Framework  v29r0 (ff2e7097)
Package : GaudiKernel
Package manager : Marco Clemencic
Commit Id: $Format:%H$

================================ Gaudi v28r3 =================================

! 2017-07-28 - Marco Clemencic (commit 3cd763ce)

 - Merge branch 'tool-and-data-handles-constructor' into 'master'

   Autodeclaring constructors for ToolHandle and DataObjectHandle

   See merge request !374

! 2017-07-27 - Marco Clemencic (commit 84f92c31)

 - Merge branch 'cmake-updates' into 'master'

   minor updates/fixes

   See merge request !373

! 2017-07-26 - Marco Clemencic, charles leggett (commit 22f22a3b)

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

   Property helpers for DataHandles and derived classes

   See merge request !365# Please enter a commit message to explain why this
   merge is necessary,


! 2017-07-26 - Gerhard Raven (commit e6fc7ad5)

 - Merge branch 'allow-adl-lookup-of-toString' into 'master'

   allow ADL of `toString` in Property

   See merge request !372

! 2017-07-26 - Charles Leggett, Marco Clemencic, charles leggett (commit fd03aaf7)

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

   make Property::documentation() return the actual documentation string

   See merge request !363


! 2017-07-26 - Alessio Gianelle (commit bc7941fc)

 - Merge branch 'coverity' into 'master'

   Fixed coverity issues:

   * KeyedObjectManager.cpp
    * 64154: Iterator container mismatch
    * 64281: Invalid iterator comparison
   * ProcessDescriptor.cpp
    * 64293: Out-of-bounds write
   * AvalancheSchedulerSvc.cpp
    * 94135: Dereference after null check
    * 94134: Dereference after null check
    * 94669: Unchecked dynamic_cast
   * HiveTestAlgorithm.cpp
    * 82289: Unchecked dynamic_cast

   See merge request !357

! 2017-07-26 - Rosen Matev (commit 9752f2f2)

 - Merge branch 'fix-DataObjectHandleBase' into 'master'

   Do not modify DataObjectHandleBase python binding on add

   See merge request !342

! 2017-07-26 - Charles Leggett, leggett (commit 42dba200)

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

   added ICondSvc to GaudiKernel

   See merge request !315

! 2017-07-20 - Gerhard Raven (commit bcdd986d)

 - Merge branch 'augment_tupleobj' into 'master'

   Augment TupleObj

   See merge request !352

! 2017-07-18 - leggett (commit a9c96160)

 - Merge branch 'dev/scott/gcc7warn' into 'master'

   Fix a couple gcc7 compilation warnings

   See merge request !339

! 2017-07-18 - Gerhard Raven (commit bafc770b)

 - Merge branch 'refactor-tostream-array' into 'master'

   Add toStream specialization for std::array into ToStream.h

   See merge request !334

! 2017-07-10 - Graeme Stewart (commit 878c38fa)

 - Merge branch 'issueseverity-fix2' into 'master'

   IssueSeverity fix and add tests

   See merge request !355

! 2017-07-03 - Marco Clemencic (commit 13902574)

 - Merge branch 'master' into 'master'

   Fixes to Gitlab-CI configuration

   See merge request !350

! 2017-07-03 - Olli Lupton (commit 3d435670)

 - Merge branch 'patch-1' into 'master'

   Implement DataObjectHandleBase comparison with None.

   See merge request !358

! 2017-06-12 - charles leggett, leggett (commit 887b198e)

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

   extend EventContext via std::any
    See merge request !345

! 2017-06-02 - Paul Seyfert (commit acb3ca5e)

 - Merge branch 'pseyfert_IWYU' into 'master'

   make exported headers self contained
    See merge request !348

! 2017-06-02 - Marco Clemencic (commit fa5a92b3)

 - Merge branch 'remove-smartranges' into 'master'

   Remove GaudiKernel/SmartRanges.h
    See merge request !351

! 2017-05-30 - scott snyder (commit 418b25f5)

 - Merge branch 'clang-warn-20170525' into 'master'

   Fix some clang compilation warnings: unused variables, parameters, typedefs.
    See merge request !344

! 2017-05-24 - leggett (commit 5e3ddb9b)

 - Merge branch 'dev/scott/msgstr' into 'master'

   Fix uninitialized MsgStream member
    See merge request !341

! 2017-05-22 - Marco Clemencic (commit c0bbff91)

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

   Fixed error introduced with !332
    See merge request !336

! 2017-05-19 - Gerhard Raven (commit 4281114a)

 - Merge branch 'allow_adl_in_time' into 'master'

   enable ADL lookup for binary Time,Time and TimeSpan,TimeSpan operators
    See merge request !290

! 2017-05-19 - Gerhard Raven (commit c8d3b362)

 - Merge branch 'modernize-conversionsvc' into 'master'

   Modernize ConversionSvc
    See merge request !327

! 2017-05-18 - Marco Clemencic (commit f6f3b30a)

 - Merge branch 'fix-property-template-args' into 'master'

   Modified some Property template args to fix tests with ROOT master
    See merge request !332

! 2017-05-18 - charles leggett (commit 8e4e81d1)

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

   make Algorithm::setFilterPassed const
    See merge request !331

! 2017-05-05 - Charles Leggett, leggett (commit db47610f)

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

   Algorithm clonability should be explicitly set by Alg author
    See merge request !316

! 2017-04-26 - Charles Leggett (commit 752218d2)

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

   filter circular data dependencies
    See merge request !314

! 2017-04-20 - Charles Leggett, leggett (commit 0d7cf453)

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

   Add flag to Algorithm to identify a Sequence
    See merge request !317

! 2017-04-10 - Omar Awile (commit 63ccffed)

 - Merge branch 'icc-fixes' into 'master'

   Fixes to build Gaudi with the Intel compiler
    Closes GAUDI-1297 and GAUDI-1298
    See merge request !318

================================ 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