GammaLib 2.0.0
Loading...
Searching...
No Matches
GFitsBinTable.cpp
Go to the documentation of this file.
1/***************************************************************************
2 * GFitsBinTable.cpp - FITS binary table class *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2008-2018 by Juergen Knoedlseder *
5 * ----------------------------------------------------------------------- *
6 * *
7 * This program is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
19 * *
20 ***************************************************************************/
21/**
22 * @file GFitsBinTable.cpp
23 * @brief FITS binary table class implementation
24 * @author Juergen Knoedlseder
25 */
26
27/* __ Includes ___________________________________________________________ */
28#ifdef HAVE_CONFIG_H
29#include <config.h>
30#endif
31#include "GFitsBinTable.hpp"
32
33/* __ Method name definitions ____________________________________________ */
34
35/* __ Macros _____________________________________________________________ */
36
37/* __ Coding definitions _________________________________________________ */
38
39/* __ Debug definitions __________________________________________________ */
40
41/* __ Prototypes of local functions ______________________________________ */
42
43
44/*==========================================================================
45 = =
46 = Constructors/destructors =
47 = =
48 ==========================================================================*/
49
50/***********************************************************************//**
51 * @brief Void constructor
52 ***************************************************************************/
54{
55 // Initialise class members for clean destruction
57
58 // Return
59 return;
60}
61
62
63/***********************************************************************//**
64 * @brief Table constructor
65 *
66 * @param[in] nrows Number of rows in table
67 ***************************************************************************/
68GFitsBinTable::GFitsBinTable(const int& nrows) : GFitsTable(nrows)
69{
70 // Initialise class members for clean destruction
72
73 // Initialise header
75
76 // Return
77 return;
78}
79
80
81/***********************************************************************//**
82 * @brief Copy constructor
83 *
84 * @param[in] table Binary table.
85 ***************************************************************************/
87{
88 // Initialise class members for clean destruction
90
91 // Copy members
92 copy_members(table);
93
94 // Return
95 return;
96}
97
98
99/***********************************************************************//**
100 * @brief Destructor
101 ***************************************************************************/
103{
104 // Free members
105 free_members();
106
107 // Return
108 return;
109}
110
111
112/*==========================================================================
113 = =
114 = Operators =
115 = =
116 ==========================================================================*/
117
118/***********************************************************************//**
119 * @brief Assignment operator
120 *
121 * @param[in] table Binary table.
122 * @return Binary table.
123 ***************************************************************************/
125{
126 // Execute only if object is not identical
127 if (this != &table) {
128
129 // Copy base class members
130 this->GFitsTable::operator=(table);
131
132 // Free members
133 free_members();
134
135 // Initialise private members for clean destruction
136 init_members();
137
138 // Copy members
139 copy_members(table);
140
141 } // endif: object was not identical
142
143 // Return this object
144 return *this;
145}
146
147
148/*==========================================================================
149 = =
150 = Public methods =
151 = =
152 ==========================================================================*/
153
154/***********************************************************************//**
155 * @brief Clear binary table
156 *
157 * This method properly resets the object to an initial state.
158 ***************************************************************************/
160{
161 // Free class members (base and derived classes, derived class first)
162 free_members();
165
166 // Initialise members
169 init_members();
170
171 // Return
172 return;
173}
174
175
176/***********************************************************************//**
177 * @brief Clone binary table
178 *
179 * @return Pointer to deep copy of binary table.
180 ***************************************************************************/
182{
183 return new GFitsBinTable(*this);
184}
185
186
187/*==========================================================================
188 = =
189 = Private methods =
190 = =
191 ==========================================================================*/
192
193/***********************************************************************//**
194 * @brief Initialise class members
195 ***************************************************************************/
197{
198 // Initialise members
199 m_type = 2;
200
201 // Return
202 return;
203}
204
205
206/***********************************************************************//**
207 * @brief Copy class members
208 *
209 * @param[in] table Table to copy
210 ***************************************************************************/
212{
213 // Return
214 return;
215}
216
217
218/***********************************************************************//**
219 * @brief Delete class members
220 ***************************************************************************/
222{
223 // Return
224 return;
225}
226
227
228/***********************************************************************//**
229 * @brief Initialise binary table header
230 *
231 * Initialises the table header by setting the default header cards.
232 ***************************************************************************/
234{
235 // Compute total width in Bytes
236 int width = 0;
237 for (int i = 0; i < ncols(); ++i) {
238 width += m_columns[i]->width();
239 }
240
241 // Set image header keywords
242 m_header.append(GFitsHeaderCard("XTENSION", "BINTABLE",
243 "binary table extension"));
244 m_header.append(GFitsHeaderCard("BITPIX", 8,
245 "8-bit bytes"));
247 "2-dimensional binary table"));
248 m_header.append(GFitsHeaderCard("NAXIS1", width,
249 "width of table in bytes"));
251 "number of rows in table"));
252 m_header.append(GFitsHeaderCard("PCOUNT", 0,
253 "size of special data area"));
254 m_header.append(GFitsHeaderCard("GCOUNT", 1,
255 "one data group (required keyword)"));
256
257 // Return
258 return;
259}
FITS binary table class definition.
FITS binary table class.
void init_members(void)
Initialise class members.
void init_table_header(void)
Initialise binary table header.
virtual void clear(void)
Clear binary table.
void free_members(void)
Delete class members.
virtual ~GFitsBinTable(void)
Destructor.
GFitsBinTable(void)
Void constructor.
GFitsBinTable & operator=(const GFitsBinTable &table)
Assignment operator.
void copy_members(const GFitsBinTable &table)
Copy class members.
virtual GFitsBinTable * clone(void) const
Clone binary table.
void free_members(void)
Delete class members.
Definition GFitsHDU.cpp:505
GFitsHeader m_header
HDU header.
Definition GFitsHDU.hpp:136
void init_members(void)
Initialise class members.
Definition GFitsHDU.cpp:462
Implements FITS header card interface.
GFitsHeaderCard & append(const GFitsHeaderCard &card)
Append or update header card.
void width(const int &width)
Set width in Bytes of one column element.
Abstract interface for FITS table.
int m_type
Table type (1=ASCII, 2=Binary)
void free_members(void)
Free class members.
void init_members(void)
Initialise class members.
GFitsTableCol ** m_columns
Array of table columns.
const int & nrows(void) const
Return number of rows in table.
GFitsTable & operator=(const GFitsTable &table)
Assignment operator.
const int & ncols(void) const
Return number of columns in table.