diff --git a/src/cpp/include/SIO/SIOReader.h b/src/cpp/include/SIO/SIOReader.h index 91d19b34a..e8871a909 100644 --- a/src/cpp/include/SIO/SIOReader.h +++ b/src/cpp/include/SIO/SIOReader.h @@ -2,6 +2,7 @@ #define SIO_SIOREADER_H 1 // -- std headers +#include #include // -- lcio headers @@ -36,11 +37,15 @@ namespace SIO { /// no copy constructor SIOReader(const SIOReader&) = delete ; - /// no assignment operator + /// no copy assignment operator SIOReader& operator=(const SIOReader&) = delete ; + /// no move constructor + SIOReader(SIOReader&&) = delete ; + /// no move assignment operator + SIOReader& operator=(SIOReader&&) = delete ; /// Destructor - virtual ~SIOReader() ; + virtual ~SIOReader() = default ; /** Opens a list of files for reading (read-only). All subsequent * read operations will operate on the list, i.e. if an EOF is encountered @@ -210,9 +215,9 @@ namespace SIO { /// The event listeners std::set _evtListeners {} ; /// pointer to current Event - EVENT::LCEvent* _currentEvent = nullptr ; + std::unique_ptr _currentEvent {} ; /// pointer to current RunHeader - EVENT::LCRunHeader* _currentRun = nullptr ; + std::unique_ptr _currentRun {} ; }; // class } // namespace diff --git a/src/cpp/src/SIO/SIOReader.cc b/src/cpp/src/SIO/SIOReader.cc index 4efb792b1..c1825f9fb 100644 --- a/src/cpp/src/SIO/SIOReader.cc +++ b/src/cpp/src/SIO/SIOReader.cc @@ -26,12 +26,6 @@ namespace SIO { //---------------------------------------------------------------------------- - SIOReader::~SIOReader() { - /* nop */ - } - - //---------------------------------------------------------------------------- - void SIOReader::setReadCollectionNames(const std::vector& colnames){ _reader.setReadCollectionNames( colnames ) ; } @@ -81,13 +75,8 @@ namespace SIO { //---------------------------------------------------------------------------- EVENT::LCRunHeader* SIOReader::readNextRunHeader(int accessMode) { - - if( _currentRun != nullptr ){ - delete _currentRun ; - } - _currentRun = _reader.readNextRunHeader( accessMode ).release() ; - - return _currentRun ; + _currentRun = _reader.readNextRunHeader( accessMode ) ; + return _currentRun.get() ; } //---------------------------------------------------------------------------- @@ -99,13 +88,8 @@ namespace SIO { //---------------------------------------------------------------------------- EVENT::LCEvent* SIOReader::readNextEvent(int accessMode) { - - if( _currentEvent != nullptr ){ - delete _currentEvent ; - } - _currentEvent = _reader.readNextEvent( accessMode ).release() ; - - return _currentEvent ; + _currentEvent = _reader.readNextEvent( accessMode ) ; + return _currentEvent.get() ; } //---------------------------------------------------------------------------- @@ -123,13 +107,8 @@ namespace SIO { //---------------------------------------------------------------------------- EVENT::LCRunHeader * SIOReader::readRunHeader(int runNumber, int accessMode) { - - if( _currentRun != nullptr ){ - delete _currentRun ; - } - _currentRun = _reader.readRunHeader( runNumber, accessMode ).release() ; - - return _currentRun ; + _currentRun = _reader.readRunHeader( runNumber, accessMode ) ; + return _currentRun.get() ; } //---------------------------------------------------------------------------- @@ -141,13 +120,8 @@ namespace SIO { //---------------------------------------------------------------------------- EVENT::LCEvent * SIOReader::readEvent(int runNumber, int evtNumber, int accessMode) { - - if( _currentEvent != nullptr ){ - delete _currentEvent ; - } - _currentEvent = _reader.readEvent( runNumber, evtNumber, accessMode ).release() ; - - return _currentEvent ; + _currentEvent = _reader.readEvent( runNumber, evtNumber, accessMode ) ; + return _currentEvent.get() ; } //----------------------------------------------------------------------------