Package : GaudiKernel Package manager : Marco Clemencic ============================= 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 Added support for map. ! 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 "_", 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 ::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 > 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 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. 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 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 >. - 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 { 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. (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. - 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 2) std::map 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(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 and std::vector > (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::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: + explicitely disable copy constructor and assignement + add "checking operator", operator!() * SmartIF and SmartIF + 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. ================ 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 data = ... ; //new setProperty( "Data" , data ) ; //new std::map cuts = ... ; //new setProperty( "Cuts" , cuts ) ; //new std::map 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 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&) 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::toString and PropertyWithValue::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 std::string& name ) ; const Property* getProperty ( const std::vector , 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 (and related helper classes TransientFastContainerBase and DefaultObjectCleaner). 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. 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 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 (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 - fixed bug #9476. Missing keyword "class". (Mattias Ellert) ================ GaudiKernel v19r3 ==================================== ! 2005-07-13 Hubert Degaudenzi - fixed bug #9479 ! 2005-05-10 Hubert Degaudenzi - 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 - added path access to SmartRef (Marco Clemencic) ! 2005-04-22 Hubert Degaudenzi - 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(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. 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) ================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:: 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 and ObjectList clear() removes all elements from the ObjectVector and ObjectList ! 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(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 ! 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 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 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 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 and ObjectList 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& 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 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 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 , 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