1#ifndef HAVE_TOM__CSV_COLUMN_HPP
2#define HAVE_TOM__CSV_COLUMN_HPP
4#include <tom-util/defines.hpp>
5#include <tom-util/scalar.hpp>
9 template <
typename SCALAR_T>
17 virtual const String &name()
const = 0;
18 virtual const Int &position()
const = 0;
19 virtual const String &image()
const = 0;
23 template <
typename SCALAR_T>
30 : m_nd( nd ), m_position( pos ), m_name(name), m_image(image) {
31 if(
typeid(
Date) !=
typeid(SCALAR_T))
34 m_nd =
Date(nd, image);
42 operator=(
value_type v ) { m_value = v;
return *
this; }
46 is_normal()
const {
return m_value.is_normal(); }
59 virtual bool operator<(
const observation & )
const;
60 virtual bool operator<=(
const observation & )
const;
61 virtual bool operator>(
const observation & )
const;
62 virtual bool operator>=(
const observation & )
const;
64 virtual bool operator==(
const observation & )
const;
65 virtual bool operator!=(
const observation & )
const;
67 virtual std::ostream &print( std::ostream & )
const;
69 virtual operator unsigned char()
const;
71 virtual operator short int()
const;
72 virtual operator int()
const;
73 virtual operator long int()
const;
74 virtual operator unsigned short int()
const;
75 virtual operator unsigned int()
const;
76 virtual operator unsigned long int()
const;
77 virtual operator float()
const;
78 virtual operator double()
const;
79 virtual operator bool()
const;
82 const SCALAR_T &value()
const;
84 virtual const Int &position()
const {
return m_position; }
85 virtual const String &name()
const {
return m_name; }
86 virtual const String &image()
const {
return m_image; }
98 const SCALAR_T &pickValue()
const;
99 SCALAR_T &pickValue();
103 template <
typename T>
110 m_value = T::HAS_NO_DATA;
115 template <
typename T>
117 csv_column<T>::pickValue()
const
119 if ( m_value.flag() == tom::value_type::normal() )
124 template <
typename T>
126 csv_column<T>::pickValue()
128 if ( m_value.flag() == tom::value_type::normal() )
134 template <
typename T>
136 csv_column<T>::value()
const
137 {
return pickValue(); }
139 template <
typename T>
141 csv_column<T>::flag()
const {
return pickValue().flag(); }
143 template <
typename T>
145 csv_column<T>::operator+=(
const observation &rhs )
146 { m_value += rhs;
return *
this; }
148 template <
typename T>
150 csv_column<T>::operator-=(
const observation &rhs )
151 { m_value -= rhs;
return *
this; }
153 template <
typename T>
155 csv_column<T>::operator*=(
const observation &rhs )
156 { m_value *= rhs;
return *
this; }
158 template <
typename T>
160 csv_column<T>::operator/=(
const observation &rhs )
161 { m_value /= rhs;
return *
this; }
163 template <
typename T>
165 csv_column<T>::operator<(
const observation &rhs )
const
166 {
return pickValue() < rhs; }
168 template <
typename T>
170 csv_column<T>::operator<=(
const observation &rhs )
const
171 {
return pickValue() <= rhs; }
173 template <
typename T>
175 csv_column<T>::operator>(
const observation &rhs )
const
176 {
return pickValue() > rhs; }
178 template <
typename T>
180 csv_column<T>::operator>=(
const observation &rhs )
const
181 {
return pickValue() >= rhs; }
183 template <
typename T>
185 csv_column<T>::operator==(
const observation &rhs )
const
186 {
return pickValue() == rhs; }
188 template <
typename T>
190 csv_column<T>::operator!=(
const observation &rhs )
const
191 {
return pickValue() != rhs; }
193 template <
typename T>
195 csv_column<T>::print( std::ostream &os )
const
196 {
return pickValue().print(os); }
198 template <
typename T>
201 template <
typename T>
202 csv_column<T>::operator
unsigned char()
const
203 {
return pickValue().operator
unsigned char(); }
205 template <
typename T>
206 csv_column<T>::operator
short int()
const
207 {
return pickValue().operator
short int(); }
209 template <
typename T>
210 csv_column<T>::operator int()
const
211 {
return pickValue().operator int(); }
213 template <
typename T>
214 csv_column<T>::operator
long int()
const
215 {
return pickValue().operator
long int(); }
217 template <
typename T>
218 csv_column<T>::operator
unsigned short int()
const
219 {
return pickValue().operator
unsigned short int(); }
221 template <
typename T>
222 csv_column<T>::operator
unsigned int()
const
223 {
return pickValue().operator
unsigned int(); }
225 template <
typename T>
226 csv_column<T>::operator
unsigned long int()
const
227 {
return pickValue().operator
unsigned long int(); }
229 template <
typename T>
230 csv_column<T>::operator float()
const
231 {
return pickValue().operator float(); }
233 template <
typename T>
234 csv_column<T>::operator double()
const
235 {
return pickValue().operator double(); }
237 template <
typename T>
238 csv_column<T>::operator bool()
const
239 {
return pickValue().operator bool(); }
Definition csv_column.hpp:25
Definition csv_column.hpp:13
Definition observation.hpp:13
Definition value_types.hpp:96
Definition value_types.hpp:144