Jpp  master_rocky-43-ge265d140c
the software that should make you happy
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
JSUPPORT::JFileRecorder< T > Class Template Referenceabstract

Object writing to file. More...

#include <JFileRecorder.hh>

Inheritance diagram for JSUPPORT::JFileRecorder< T >:
JLANG::JAccessibleObjectWriter< T > JLANG::JAccessibleObjectOutput< T > JLANG::JAbstractAccessibleObjectWriter< T > JLANG::JSharedPointer< JAccessibleObjectOutput< T > > JLANG::JObjectOutput< T > JLANG::JAccessible JLANG::JAccessibleObjectOutput< T > JLANG::JAbstractObjectWriter< T > JLANG::JSharedCounter JLANG::JStorage< JClass_t, JMemory_t > JLANG::JThrow< JAccessible > JLANG::JObjectOutput< T > JLANG::JAccessible JLANG::JObjectOutput< T > JLANG::JPointer< JClass_t > JLANG::JNew< JClass_t > JLANG::JThrow< JAccessible > JLANG::JAbstractPointer< JClass_t > JLANG::JEquals< JAbstractPointer< JClass_t > >

Public Types

typedef JSharedPointer< JAccessibleObjectOutput< T > > helper_type
 
typedef JPointer< JAccessibleObjectOutput< T > > pointer_type
 
typedef JStorage< JAccessibleObjectOutput< T >, JNewstorage_type
 
typedef JMemory_t< JClass_t > memory_type
 

Public Member Functions

 JFileRecorder ()
 Default constructor. More...
 
 JFileRecorder (const char *file_name)
 Constructor. More...
 
const std::string & getFilename () const
 Get file name. More...
 
const void setFilename (const std::string &file_name)
 Set file name. More...
 
virtual void open (const char *file_name) override
 Open file. More...
 
void open ()
 Open file. More...
 
virtual JAccessibleObjectOutput< T > * getHelper () const override
 Get helper. More...
 
virtual bool put (const T &object)=0
 Object output. More...
 
virtual bool put (const T &object) override
 Object output. More...
 
virtual bool is_open () const =0
 Check is device is open. More...
 
virtual bool is_open () const override
 Check is device is open. More...
 
virtual void close ()=0
 Close device. More...
 
virtual void close () override
 Close device. More...
 
const JSharedPointergetSharedPointer () const
 Get shared pointer. More...
 
JSharedPointergetSharedPointer ()
 Get shared pointer. More...
 
void setSharedPointer (const JSharedPointer &object)
 Set shared pointer. More...
 
virtual void reset () override
 Reset pointer. More...
 
template<class T >
void reset (const JPointer< T > &pointer)
 Reset pointer. More...
 
template<class T >
void reset (const JPointer< T > &pointer)
 Reset pointer. More...
 
void reset (JClass_t *p)
 Reset pointer. More...
 
virtual void set (JClass_t *p) override
 Set pointer. More...
 
template<class T >
void set (const JPointer< T > &pointer)
 Set pointer. More...
 
void initialise ()
 Initialise counter. More...
 
void attach (const JSharedCounter &object)
 Attach this counter to given shared counter object. More...
 
bool detach ()
 Detach. More...
 
const int getCount ()
 Get count. More...
 
void recreate ()
 Recreate object in memory. More...
 
void create ()
 Create object in memory. More...
 
void create (const unsigned int size)
 Create array of objects in memory. More...
 
virtual JClass_t * get () const override
 Get pointer. More...
 
JClass_t *const & getReference () const
 Get rereference to internal pointer. More...
 
JClass_t *& getReference ()
 Get rereference to internal pointer. More...
 
virtual bool equals (const JAbstractPointer &object) const
 Equals. More...
 
bool is_valid () const
 Check validity of pointer. More...
 
JClass_t * operator-> () const
 Smart pointer operator. More...
 
 operator JClass_t * () const
 Type conversion operator. More...
 

Static Public Member Functions

static void Throw (const bool option)
 Enable/disable throw option. More...
 
static int Throw (const JException_t &error, const int value=-1)
 Throw exception or return error. More...
 
static void release (JClass_t *p)
 Release memory. More...
 

Protected Member Functions

void set (const JSharedPointer &object)
 Set pointer. More...
 
virtual void set (JAccessibleObjectOutput< T > *p) override
 Set pointer. More...
 
void release ()
 Release memory. More...
 

Protected Attributes

std::string fileName
 
int * counter
 
JClass_t * __p
 pointer to object More...
 

Static Protected Attributes

static bool do_throw
 throw option More...
 

Friends

std::istream & operator>> (std::istream &in, JFileRecorder &recorder)
 Read file recorder from input. More...
 
std::ostream & operator<< (std::ostream &out, const JFileRecorder &recorder)
 Write file recorder to output. More...
 

Detailed Description

template<class T>
class JSUPPORT::JFileRecorder< T >

Object writing to file.

This class implements the method open of the JLANG::JAccessible interface. The file format is derived from the file name extension. The method open can be called to open a file after reading the file name.

Definition at line 42 of file JFileRecorder.hh.

Member Typedef Documentation

◆ helper_type

template<class T >
typedef JSharedPointer< JAccessibleObjectOutput<T> > JLANG::JAccessibleObjectWriter< T >::helper_type
inherited

Definition at line 64 of file JObjectWriter.hh.

◆ pointer_type

Definition at line 34 of file JSharedPointer.hh.

◆ storage_type

Definition at line 35 of file JSharedPointer.hh.

◆ memory_type

template<class JClass_t , template< class > class JMemory_t = JNew>
typedef JMemory_t<JClass_t> JLANG::JStorage< JClass_t, JMemory_t >::memory_type
inherited

Definition at line 33 of file JStorage.hh.

Constructor & Destructor Documentation

◆ JFileRecorder() [1/2]

template<class T >
JSUPPORT::JFileRecorder< T >::JFileRecorder ( )
inline

Default constructor.

Definition at line 49 of file JFileRecorder.hh.

49  :
51  fileName("")
52  {}
Auxiliary class for object writing with named access.

◆ JFileRecorder() [2/2]

template<class T >
JSUPPORT::JFileRecorder< T >::JFileRecorder ( const char *  file_name)
inline

Constructor.

Parameters
file_namefile name

Definition at line 60 of file JFileRecorder.hh.

60  :
62  fileName(file_name)
63  {}

Member Function Documentation

◆ getFilename()

template<class T >
const std::string& JSUPPORT::JFileRecorder< T >::getFilename ( ) const
inline

Get file name.

Returns
file name

Definition at line 71 of file JFileRecorder.hh.

72  {
73  return fileName;
74  }

◆ setFilename()

template<class T >
const void JSUPPORT::JFileRecorder< T >::setFilename ( const std::string &  file_name)
inline

Set file name.

Parameters
file_namefile name

Definition at line 82 of file JFileRecorder.hh.

83  {
84  fileName = file_name;
85  }

◆ open() [1/2]

template<class T >
virtual void JSUPPORT::JFileRecorder< T >::open ( const char *  file_name)
inlineoverridevirtual

Open file.

Parameters
file_namefile name

Reimplemented from JLANG::JAbstractAccessibleObjectWriter< T >.

Definition at line 93 of file JFileRecorder.hh.

94  {
95  fileName = file_name;
96 
97  open();
98  }
void open()
Open file.

◆ open() [2/2]

template<class T >
void JSUPPORT::JFileRecorder< T >::open ( )
inline

Open file.

Definition at line 104 of file JFileRecorder.hh.

105  {
106  using namespace JPP;
107 
108  this->reset();
109 
110  if (isROOTFile(fileName.c_str())) {
111 
112  this->reset(new JRootFileWriter<T>());
113 
114  } else if (isDAQFile(fileName.c_str())) {
115 
116  this->reset(new JDAQFileWriter<T>());
117 
118  } else if (isJppFile(fileName.c_str())) {
119 
120  this->reset(new JBinaryFileWriter<T>());
121 
122  } else if (isMonteCarloFile(fileName.c_str())) {
123 
124  this->reset(new JMonteCarloFileWriter<T>());
125 
126  } else if (fileName.empty() || fileName == "/dev/null") {
127 
128  this->reset(new JNullAccessibleOutput<T>());
129 
130  } else {
131 
132  THROW(JProtocolException, "Protocol not defined: " << fileName);
133  }
134 
135  if (this->is_valid()) {
136  this->get()->open(fileName.c_str());
137  }
138 
139  if (!this->get()->is_open()) {
140  THROW(JFileOpenException, "Error opening file: " << fileName);
141  }
142  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
Object(s) writing to binary file (i.e. .jpp).
bool is_valid() const
Check validity of pointer.
Exception for opening of file.
Definition: JException.hh:360
virtual JClass_t * get() const override
Get pointer.
Definition: JPointer.hh:64
Protocol exception.
Definition: JException.hh:666
virtual void reset() override
Reset pointer.
ROOT file object output.
Object(s) writing to binary file (i.e. .dat).
Object(s) writing to Monte Carlo ASCII file (i.e. .evt)
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
bool isROOTFile(const char *file_name)
Check file format.
bool isJppFile(const char *file_name)
Check file format.
bool isDAQFile(const char *file_name)
Check file format.
bool isMonteCarloFile(const char *file_name)
Check file format.
virtual bool is_open() const override
Check is device is open.
Implementation for null output with null access.

◆ getHelper()

template<class T >
virtual JAccessibleObjectOutput<T>* JLANG::JAccessibleObjectWriter< T >::getHelper ( ) const
inlineoverridevirtualinherited

Get helper.

Returns
helper

Implements JLANG::JAbstractAccessibleObjectWriter< T >.

Definition at line 78 of file JObjectWriter.hh.

79  {
80  return this->get();
81  }

◆ put() [1/2]

template<class T >
virtual bool JLANG::JObjectOutput< T >::put ( const T &  object)
pure virtualinherited

◆ put() [2/2]

template<class T >
virtual bool JLANG::JAbstractObjectWriter< T >::put ( const T &  object)
inlineoverridevirtualinherited

Object output.

Parameters
objectobject
Returns
true if OK; else false

Implements JLANG::JObjectOutput< T >.

Definition at line 43 of file JAbstractObjectWriter.hh.

44  {
45  return (this->getHelper() != NULL && this->getHelper()->put(object));
46  }
virtual bool put(const T &object) override
Object output.
virtual JObjectOutput< T > * getHelper() const =0
Get helper.

◆ is_open() [1/2]

virtual bool JLANG::JAccessible::is_open ( ) const
pure virtualinherited

◆ is_open() [2/2]

template<class T >
virtual bool JLANG::JAbstractAccessibleObjectWriter< T >::is_open ( ) const
inlineoverridevirtualinherited

Check is device is open.

Returns
true if open; else false

Implements JLANG::JAccessible.

Definition at line 102 of file JAbstractObjectWriter.hh.

103  {
104  if (this->getHelper() != NULL)
105  return this->getHelper()->is_open();
106  else
107  return false;
108  }
virtual JAccessibleObjectOutput< T > * getHelper() const override=0
Get helper.

◆ close() [1/2]

virtual void JLANG::JAccessible::close ( )
pure virtualinherited

◆ close() [2/2]

template<class T >
virtual void JLANG::JAbstractAccessibleObjectWriter< T >::close ( )
inlineoverridevirtualinherited

Close device.

Implements JLANG::JAccessible.

Definition at line 127 of file JAbstractObjectWriter.hh.

128  {
129  if (this->getHelper() != NULL) {
130  this->getHelper()->close();
131  }
132  }

◆ Throw() [1/2]

static void JLANG::JThrow< JAccessible >::Throw ( const bool  option)
inlinestaticinherited

Enable/disable throw option.

Parameters
optiontrue enable; false disable

Definition at line 37 of file JThrow.hh.

38  {
39  do_throw = option;
40  }
static bool do_throw
throw option
Definition: JThrow.hh:28

◆ Throw() [2/2]

static int JLANG::JThrow< JAccessible >::Throw ( const JException_t &  error,
const int  value = -1 
)
inlinestaticinherited

Throw exception or return error.

Parameters
errorexception
valuereturn code
Returns
return code

Definition at line 51 of file JThrow.hh.

52  {
53  using namespace std;
54 
55  if (do_throw) {
56  throw error;
57  }
58 
59  cerr << error.what() << endl;
60 
61  return value;
62  }
Definition: JSTDTypes.hh:14

◆ getSharedPointer() [1/2]

const JSharedPointer& JLANG::JSharedPointer< JAccessibleObjectOutput< T > , JNew >::getSharedPointer ( ) const
inlineinherited

Get shared pointer.

Returns
this shared pointer

Definition at line 95 of file JSharedPointer.hh.

96  {
97  return static_cast<const JSharedPointer&>(*this);
98  }
The template JSharedPointer class can be used to share a pointer to an object.

◆ getSharedPointer() [2/2]

JSharedPointer& JLANG::JSharedPointer< JAccessibleObjectOutput< T > , JNew >::getSharedPointer ( )
inlineinherited

Get shared pointer.

Returns
this shared pointer

Definition at line 106 of file JSharedPointer.hh.

107  {
108  return static_cast<JSharedPointer&>(*this);
109  }

◆ setSharedPointer()

void JLANG::JSharedPointer< JAccessibleObjectOutput< T > , JNew >::setSharedPointer ( const JSharedPointer< JAccessibleObjectOutput< T > > &  object)
inlineinherited

Set shared pointer.

Parameters
objectshared pointer

Definition at line 117 of file JSharedPointer.hh.

118  {
119  if (this->get() != object.get()) {
120 
121  this->reset();
122 
123  if (object.is_valid()) {
124  this->set(object);
125  }
126  }
127  }

◆ reset() [1/4]

virtual void JLANG::JSharedPointer< JAccessibleObjectOutput< T > , JNew >::reset ( )
inlineoverridevirtualinherited

Reset pointer.

The reference counter is decremented by one and the object pointed to previously is deleted when its reference counter is zero.

Reimplemented from JLANG::JStorage< JClass_t, JMemory_t >.

Definition at line 171 of file JSharedPointer.hh.

172  {
173  if (this->detach()) {
175  }
176 
178  }
void reset(T &value)
Reset value.

◆ reset() [2/4]

template<class JClass_t , template< class > class JMemory_t = JNew>
template<class T >
void JLANG::JPointer< JClass_t >::reset ( class T  )
inlineinherited

Reset pointer.

Parameters
pointerpointer to object

Definition at line 108 of file JPointer.hh.

109  {
110  this->reset(pointer.get());
111  }
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42

◆ reset() [3/4]

template<class JClass_t >
template<class T >
void JLANG::JPointer< JClass_t >::reset ( const JPointer< T > &  pointer)
inlineinherited

Reset pointer.

Parameters
pointerpointer to object

Definition at line 108 of file JPointer.hh.

109  {
110  this->reset(pointer.get());
111  }
virtual void reset() override
Reset pointer.
Definition: JPointer.hh:84

◆ reset() [4/4]

template<class JClass_t >
void JLANG::JAbstractPointer< JClass_t >::reset ( JClass_t *  p)
inlineinherited

Reset pointer.

Parameters
ppointer to object

Definition at line 94 of file JAbstractPointer.hh.

95  {
96  if (this->get() != p) {
97 
98  this->reset();
99 
100  if (p != NULL) {
101  this->set(p);
102  }
103  }
104  }
virtual void set(JClass_t *p)=0
Set pointer.
virtual void reset()=0
Reset pointer.
virtual JClass_t * get() const =0
Get pointer.

◆ set() [1/4]

void JLANG::JSharedPointer< JAccessibleObjectOutput< T > , JNew >::set ( const JSharedPointer< JAccessibleObjectOutput< T > > &  object)
inlineprotectedinherited

Set pointer.

The reference counter of the shared object pointed to is incremented by one.

Parameters
objectshared pointer

Definition at line 188 of file JSharedPointer.hh.

189  {
190  pointer_type::set(object.get());
191 
192  this->attach(object);
193  }
void attach(const JSharedCounter &object)
Attach this counter to given shared counter object.

◆ set() [2/4]

virtual void JLANG::JSharedPointer< JAccessibleObjectOutput< T > , JNew >::set ( JClass_t *  p)
inlineoverrideprotectedvirtualinherited

Set pointer.

The reference counter of the shared object pointed to is initialised to one.

Parameters
ppointer to derived class object

Definition at line 202 of file JSharedPointer.hh.

203  {
204  pointer_type::set(p);
205 
206  this->initialise();
207  }
void initialise()
Initialise counter.

◆ set() [3/4]

template<class JClass_t >
virtual void JLANG::JPointer< JClass_t >::set ( JClass_t *  p)
inlineoverridevirtualinherited

Set pointer.

Parameters
ppointer to object

Implements JLANG::JAbstractPointer< JClass_t >.

Reimplemented in JLANG::JSharedPointer< JClass_t, JMemory_t >.

Definition at line 75 of file JPointer.hh.

76  {
77  this->__p = p;
78  }
JClass_t * __p
pointer to object
Definition: JPointer.hh:136

◆ set() [4/4]

template<class JClass_t >
template<class T >
void JLANG::JPointer< JClass_t >::set ( const JPointer< T > &  pointer)
inlineinherited

Set pointer.

Parameters
pointerpointer to object

Definition at line 96 of file JPointer.hh.

97  {
98  this->set(pointer.get());
99  }
virtual void set(JClass_t *p) override
Set pointer.
Definition: JPointer.hh:75

◆ initialise()

void JLANG::JSharedCounter::initialise ( )
inlineinherited

Initialise counter.

Definition at line 33 of file JSharedCounter.hh.

34  {
35  detach();
36 
37  counter = new int(1);
38  }

◆ attach()

void JLANG::JSharedCounter::attach ( const JSharedCounter object)
inlineinherited

Attach this counter to given shared counter object.

Parameters
objectshared counter

Definition at line 46 of file JSharedCounter.hh.

47  {
48  detach();
49 
50  counter = object.counter;
51 
52  if (counter != NULL) {
53  ++(*counter);
54  }
55  }

◆ detach()

bool JLANG::JSharedCounter::detach ( )
inlineinherited

Detach.

Returns
true if counter at zero; else false

Definition at line 63 of file JSharedCounter.hh.

64  {
65  if (counter != NULL) {
66 
67  if (--(*counter) == 0) {
68 
69  delete counter;
70 
71  counter = NULL;
72 
73  return true;
74  }
75 
76  counter = NULL;
77  }
78 
79  return false;
80  }

◆ getCount()

const int JLANG::JSharedCounter::getCount ( )
inlineinherited

Get count.

Returns
count

Definition at line 88 of file JSharedCounter.hh.

89  {
90  return (counter != NULL ? *counter : 0);
91  }

◆ recreate()

template<class JClass_t , template< class > class JMemory_t = JNew>
void JLANG::JStorage< JClass_t, JMemory_t >::recreate ( )
inlineinherited

Recreate object in memory.

A new object is created if no memory is allocated yet, else the previously created object is maintained.

Definition at line 57 of file JStorage.hh.

58  {
59  if (!this->is_valid()) {
60  this->set(memory_type::create());
61  }
62  }

◆ create() [1/2]

template<class JClass_t , template< class > class JMemory_t = JNew>
void JLANG::JStorage< JClass_t, JMemory_t >::create ( )
inlineinherited

Create object in memory.

The memory allocated by a previously created object will be released.

Definition at line 69 of file JStorage.hh.

70  {
71  this->reset(memory_type::create());
72  }

◆ create() [2/2]

template<class JClass_t , template< class > class JMemory_t = JNew>
void JLANG::JStorage< JClass_t, JMemory_t >::create ( const unsigned int  size)
inlineinherited

Create array of objects in memory.

The memory allocated by previously created objects will be released.

Parameters
sizenumber of elements

Definition at line 81 of file JStorage.hh.

82  {
83  this->reset(memory_type::create(size));
84  }

◆ release() [1/2]

template<class JClass_t , template< class > class JMemory_t = JNew>
void JLANG::JStorage< JClass_t, JMemory_t >::release ( )
inlineprotectedinherited

Release memory.

Definition at line 91 of file JStorage.hh.

92  {
93  memory_type::release(this->get());
94  }

◆ release() [2/2]

template<class JClass_t >
static void JLANG::JNew< JClass_t >::release ( JClass_t *  p)
inlinestaticinherited

Release memory.

Parameters
ppointer to data

Definition at line 41 of file JMemory.hh.

42  {
43  delete p;
44  }

◆ get()

template<class JClass_t >
virtual JClass_t* JLANG::JPointer< JClass_t >::get ( ) const
inlineoverridevirtualinherited

◆ getReference() [1/2]

template<class JClass_t >
JClass_t* const& JLANG::JPointer< JClass_t >::getReference ( ) const
inlineinherited

Get rereference to internal pointer.

Returns
reference to internal pointer

Definition at line 119 of file JPointer.hh.

120  {
121  return __p;
122  }

◆ getReference() [2/2]

template<class JClass_t >
JClass_t* & JLANG::JPointer< JClass_t >::getReference ( )
inlineinherited

Get rereference to internal pointer.

Returns
reference to internal pointer

Definition at line 130 of file JPointer.hh.

131  {
132  return __p;
133  }

◆ equals()

template<class JClass_t >
virtual bool JLANG::JAbstractPointer< JClass_t >::equals ( const JAbstractPointer< JClass_t > &  object) const
inlinevirtualinherited

Equals.

The equality is evaluated by comparison of the internal pointers.

Parameters
objectabstract pointer
Returns
true if equals; else false

Definition at line 50 of file JAbstractPointer.hh.

51  {
52  return this->get() == object.get();
53  }

◆ is_valid()

template<class JClass_t >
bool JLANG::JAbstractPointer< JClass_t >::is_valid ( ) const
inlineinherited

Check validity of pointer.

Returns
true if pointer not null; else false

Definition at line 83 of file JAbstractPointer.hh.

84  {
85  return this->get() != NULL;
86  }

◆ operator->()

template<class JClass_t >
JClass_t* JLANG::JAbstractPointer< JClass_t >::operator-> ( ) const
inlineinherited

Smart pointer operator.

Returns
pointer to object

Definition at line 112 of file JAbstractPointer.hh.

113  {
114  if (!is_valid())
115  THROW(JNullPointerException, "JAbstractPointer::operator->()");
116  else
117  return this->get();
118  }
Exception for null pointer operation.
Definition: JException.hh:234

◆ operator JClass_t *()

template<class JClass_t >
JLANG::JAbstractPointer< JClass_t >::operator JClass_t * ( ) const
inlineinherited

Type conversion operator.

Returns
pointer to object

Definition at line 126 of file JAbstractPointer.hh.

127  {
128  return this->get();
129  }

Friends And Related Function Documentation

◆ operator>>

template<class T >
std::istream& operator>> ( std::istream &  in,
JFileRecorder< T > &  recorder 
)
friend

Read file recorder from input.

Parameters
ininput stream
recorderJFileRecorder
Returns
input stream

Definition at line 152 of file JFileRecorder.hh.

153  {
154  in >> recorder.fileName;
155 
156  return in;
157  }

◆ operator<<

template<class T >
std::ostream& operator<< ( std::ostream &  out,
const JFileRecorder< T > &  recorder 
)
friend

Write file recorder to output.

Parameters
outoutput stream
recorderJFileRecorder
Returns
output stream

Definition at line 167 of file JFileRecorder.hh.

168  {
169  out << recorder.fileName;
170 
171  return out;
172  }

Member Data Documentation

◆ fileName

template<class T >
std::string JSUPPORT::JFileRecorder< T >::fileName
protected

Definition at line 175 of file JFileRecorder.hh.

◆ do_throw

bool JLANG::JThrow< JAccessible >::do_throw
staticprotectedinherited

throw option

Set default throw option to true.

Definition at line 28 of file JThrow.hh.

◆ counter

int* JLANG::JSharedCounter::counter
protectedinherited

Definition at line 94 of file JSharedCounter.hh.

◆ __p

template<class JClass_t >
JClass_t* JLANG::JPointer< JClass_t >::__p
protectedinherited

pointer to object

Definition at line 136 of file JPointer.hh.


The documentation for this class was generated from the following file: