HepMC event record
include/HepMC/IO_GenEvent.h
1 // -*- C++ -*-
2 //
3 // This file is part of HepMC
4 // Copyright (C) 2014 The HepMC collaboration (see AUTHORS for details)
5 //
6 #ifndef HEPMC_IO_GENEVENT_H
7 #define HEPMC_IO_GENEVENT_H
8 ///
9 /// @file IO_GenEvent.h
10 /// @brief Definition of backward-compatibility class \b IO_GenEvent
11 ///
12 /// @class HepMC::IO_GenEvent
13 /// @brief Backward-compatibility wrapper for WriterAscii and ReaderAscii
14 ///
15 /// @ingroup IO
16 ///
17 #include "HepMC/WriterAscii.h"
18 #include "HepMC/ReaderAscii.h"
19 #include "HepMC/Common.h"
20 
21 namespace HepMC {
22 
23 
24  class GenEvent;
25 
26 
27  class IO_GenEvent {
28  public:
29 
30  /// @brief Filename constructor allowing both ios::in and ios::out modes
31  // HEPMC_DEPRECATED("Use ReaderAscii or WriterAscii instead")
32  IO_GenEvent(const string &filename, std::ios::openmode mode = std::ios::out)
33  : m_writer(NULL), m_reader(NULL)
34  {
35  if ( mode == std::ios::out ) m_writer = new WriterAscii(filename);
36  else if ( mode == std::ios::in ) m_reader = new ReaderAscii(filename);
37  }
38 
39  /// @brief Istream constructor
40  // HEPMC_DEPRECATED("Use ReaderAscii instead")
41  IO_GenEvent(std::istream &stream)
42  : m_writer(NULL), m_reader(NULL)
43  {
44  m_reader = new ReaderAscii(stream);
45  }
46 
47  /// @brief Ostream constructor
48  // HEPMC_DEPRECATED("Use WriterAscii instead")
49  IO_GenEvent(std::ostream &stream)
50  : m_writer(NULL), m_reader(NULL)
51  {
52  m_writer = new WriterAscii(stream);
53  }
54 
55  /// @brief Default destructor
57  if(m_writer) delete m_writer;
58  if(m_reader) delete m_reader;
59  }
60 
61 
62  /// @brief Wrapper for ReaderAscii::read_event
63  bool fill_next_event( GenEvent *evt ) {
64  if( !m_reader ) return false;
65  return m_reader->read_event(*evt);
66  }
67 
68  /// @brief Wrapper for WriterAscii::write_event
69  void write_event( const GenEvent *evt ) {
70  if( !m_writer ) return;
71  m_writer->write_event(*evt);
72  }
73 
74  /// @brief Wrapper for Writer/Reader rdstate()
75  int rdstate() const {
76  if( m_writer ) return m_writer->failed();
77  if( m_reader ) return m_reader->failed();
78  return 1;
79  }
80 
81 
82  private:
83 
84  /// @brief Instance of WriterAscii
85  /// @todo Use unique_ptr
87 
88  /// @brief Instance of ReaderAscii
89  /// @todo Use unique_ptr
91 
92  };
93 
94 
95 } // namespace HepMC
96 
97 #endif
void write_event(const GenEvent &evt)
Write event to file.
Definition: WriterAscii.cc:68
bool failed()
Return status of the stream.
ReaderAscii * m_reader
Instance of ReaderAscii.
IO_GenEvent(const string &filename, std::ios::openmode mode=std::ios::out)
Filename constructor allowing both ios::in and ios::out modes.
bool read_event(GenEvent &evt)
Load event from file.
Definition: ReaderAscii.cc:47
bool failed()
Return status of the stream.
Stores event-related information.
GenEvent I/O serialization for structured text files.
bool fill_next_event(GenEvent *evt)
Wrapper for ReaderAscii::read_event.
WriterAscii * m_writer
Instance of WriterAscii.
int rdstate() const
Wrapper for Writer/Reader rdstate()
IO_GenEvent(std::ostream &stream)
Ostream constructor.
void write_event(const GenEvent *evt)
Wrapper for WriterAscii::write_event.
Definition of template class SmartPointer.
GenEvent I/O parsing for structured text files.
~IO_GenEvent()
Default destructor.
IO_GenEvent(std::istream &stream)
Istream constructor.