GTestEventAtom.hpp
5.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/***************************************************************************
* GTestEventAtom.hpp - Test event atom class *
* ----------------------------------------------------------------------- *
* copyright (C) 2012 by Jean-Baptiste Cayrou *
* ----------------------------------------------------------------------- *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
***************************************************************************/
/**
* @file GTestEventAtom.hpp
* @brief Test data atom definition
* @author Jean-Baptiste Cayrou
*/
#ifndef GTESTEVENTATOM_HPP
#define GTESTEVENTATOM_HPP
/* __ Includes ___________________________________________________________ */
#include <string>
#include "GEventAtom.hpp"
#include "GEnergy.hpp"
#include "GTime.hpp"
#include "GTestInstDir.hpp"
#include "GTools.hpp"
class GTestEventAtom : public GEventAtom {
// Friend classes
friend class GTestEventList;
public:
// Constructors and destructors
GTestEventAtom(void){
init_members();
return;
}
GTestEventAtom(const GTestEventAtom& atom){
init_members();
copy_members(atom);
return;
}
virtual ~GTestEventAtom(void){
free_members();
return;
}
// Operators
GTestEventAtom& operator= (const GTestEventAtom& atom){
// Execute only if object is not identical
if (this != &atom) {
// Copy base class members
this->GEventAtom::operator=(atom);
// Free members
free_members();
// Initialise private members for clean destruction
init_members();
// Copy members
copy_members(atom);
} // endif: object was not identical
// Return this object
return *this;
};
// Implemented pure virtual base class methods
void clear(void){
// Free class members (base and derived classes, derived class first)
free_members();
this->GEventAtom::free_members();
this->GEvent::free_members();
// Initialise members
this->GEvent::init_members();
this->GEventAtom::init_members();
init_members();
return;
}
GTestEventAtom* clone(void) const{ return new GTestEventAtom(*this);}
std::string classname(void) const { return "GTestEventAtom"; }
const GTestInstDir& dir(void) const { return m_dir; }
const GEnergy& energy(void) const { return m_energy; }
const GTime& time(void) const { return m_time; }
void dir(const GTestInstDir& dir) { m_dir=dir; }
void energy(const GEnergy& energy) { m_energy=energy; }
void time(const GTime& time) { m_time=time; }
std::string print(const GChatter& chatter = NORMAL) const{
std::string result("== GTestEventAtom == \n");
result.append("Direction : "+m_dir.print()+"\n");
result.append("Time : "+gammalib::str(m_time.secs())+"\n");
result.append("Energy : "+m_energy.print()+"\n");
return result;
}
protected:
// Protected methods
void init_members(void){
m_dir.clear();
m_energy.clear();
m_time.clear();
return;
}
void copy_members(const GTestEventAtom& atom){
m_dir = atom.dir();
m_time = atom.time();
m_energy = atom.energy();
return;
}
void free_members(void){ return; }
// Protected members
GTestInstDir m_dir; //!< Event direction
GEnergy m_energy; //!< Event energy
GTime m_time; //!< Event time
};
#endif /* GTestEVENTATOM_HPP */