The Gaudi Framework
v30r3 (a5ef0a68)
|
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