ClockWork DB CoreAPI 1.0.48
Abstract Time Series and Storage/Management Library
Loading...
Searching...
No Matches
observation.hpp
1#ifndef HAVE_TOM__OBSERVATION_HPP
2#define HAVE_TOM__OBSERVATION_HPP
3
4#include <tom-util/defines.hpp>
5#include <tom-util/value_types.hpp>
6
7namespace tom {
8
10using tom::value_types::CATEGORY;
11
12class TOM_UTIL_API observation
13{
14public:
15 virtual ~observation() {};
16
17 virtual
19 operator=( const observation & ) = 0;
20
21 virtual
23 operator=( value_type ) = 0;
24
25 virtual
27 flag() const = 0;
28
29 virtual
30 bool
31 is_normal() const = 0;
32
33 // need to make a copy, call me :)
34 // needed by algos, etc, that want to generically
35 // use observation refs, w/out knowing what type
36 // actually implements the function
37 virtual observation &clone() const = 0;
38
39 virtual observation &operator+=( const observation & ) = 0;
40 virtual observation &operator-=( const observation & ) = 0;
41 virtual observation &operator*=( const observation & ) = 0;
42 virtual observation &operator/=( const observation & ) = 0;
43
44 virtual bool operator<( const observation & ) const = 0;
45 virtual bool operator<=( const observation & ) const = 0;
46 virtual bool operator>( const observation & ) const = 0;
47 virtual bool operator>=( const observation & ) const = 0;
48
49 virtual bool operator==( const observation & ) const = 0;
50 virtual bool operator!=( const observation & ) const = 0;
51
52 virtual std::ostream &print( std::ostream & ) const = 0;
53
54 virtual operator unsigned char() const = 0;
55 virtual operator tom::value_types::string() const = 0;
56 virtual operator short int() const = 0;
57 virtual operator int() const = 0;
58 virtual operator long int() const = 0;
59 virtual operator unsigned short int() const = 0;
60 virtual operator unsigned int() const = 0;
61 virtual operator unsigned long int() const = 0;
62 virtual operator float() const = 0;
63 virtual operator double() const = 0;
64
65 // special case, as there is no real bool!
66 // just an unsigned char to hold bool + flags
67 virtual operator bool() const = 0;
68};
69
70TOM_UTIL_API
71inline
72std::ostream &
73operator<<( std::ostream &os, const observation &v )
74{
75 return v.print( os );
76}
77
78TOM_UTIL_API
79inline
80observation &
81operator+( const observation &a, const observation &b )
82{
83 observation &result = a.clone();
84 result += b;
85 return result;
86}
87TOM_UTIL_API
88inline
89observation &
90operator-( const observation &a, const observation &b )
91{
92 observation &result = a.clone();
93 result -= b;
94 return result;
95}
96TOM_UTIL_API
97inline
98observation &
99operator/( const observation &a, const observation &b )
100{
101 observation &result = a.clone();
102 result /= b;
103 return result;
104}
105TOM_UTIL_API
106inline
107observation &
108operator*( const observation &a, const observation &b )
109{
110 observation &result = a.clone();
111 result *= b;
112 return result;
113}
114
115
116} // end tom namespace
117
118#endif
Definition observation.hpp:13
Definition value_types.hpp:96
Definition value_types.hpp:144