00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef Temperature_CLASS
00028 #define Temperature_CLASS
00029
00030 #include <iostream>
00031 #include <string>
00032 using namespace std;
00033
00034 #ifndef WITHOUT_ACS
00035 #include <asdmIDLTypesC.h>
00036 using asdmIDLTypes::IDLTemperature;
00037 #endif
00038
00039 #include <StringTokenizer.h>
00040 #include <NumberFormatException.h>
00041 using asdm::StringTokenizer;
00042 using asdm::NumberFormatException;
00043
00044 namespace asdm {
00045
00046 class Temperature;
00047 Temperature operator * ( double , const Temperature & );
00048 ostream & operator << ( ostream &, const Temperature & );
00049 istream & operator >> ( istream &, Temperature&);
00050
00057 class Temperature {
00058 friend Temperature operator * ( double , const Temperature & );
00059 friend ostream & operator << ( ostream &, const Temperature & );
00060 friend istream & operator >> ( istream &, Temperature&);
00061
00062 public:
00063 static double fromString(const string&);
00064 static string toString(double);
00065 static Temperature getTemperature(StringTokenizer &t) throw(NumberFormatException);
00066
00067 Temperature();
00068 Temperature(const Temperature &);
00069 Temperature(const string &s);
00070 #ifndef WITHOUT_ACS
00071 Temperature(const IDLTemperature &);
00072 #endif
00073 Temperature(double value);
00074 virtual ~Temperature();
00075
00076 Temperature& operator = (const Temperature&);
00077 Temperature& operator = (const double);
00078
00079 Temperature& operator += (const Temperature&);
00080 Temperature& operator -= (const Temperature&);
00081 Temperature& operator *= (const double);
00082 Temperature& operator /= (const double);
00083
00084 Temperature operator + (const Temperature&) const;
00085 Temperature operator - (const Temperature&) const;
00086 Temperature operator * (const double) const;
00087 Temperature operator / (const double) const;
00088
00089 bool operator < (const Temperature&) const;
00090 bool operator > (const Temperature&) const;
00091 bool operator <= (const Temperature&) const;
00092 bool operator >= (const Temperature&) const;
00093 bool operator == (const Temperature&) const;
00094 bool equals(const Temperature&) const;
00095 bool operator != (const Temperature&) const;
00096
00097 bool isZero() const;
00098
00099 Temperature operator - () const;
00100 Temperature operator + () const;
00101
00102 string toString() const;
00103 string toStringI() const;
00104
00105 operator string () const;
00106 double get() const;
00107 #ifndef WITHOUT_ACS
00108 IDLTemperature toIDLTemperature() const;
00109 #endif
00110 static string unit();
00111
00112 private:
00113 double value;
00114
00115 };
00116
00117
00118 inline Temperature::Temperature() : value(0.0) {
00119 }
00120
00121 inline Temperature::Temperature(const Temperature &t) : value(t.value) {
00122 }
00123
00124 #ifndef WITHOUT_ACS
00125 inline Temperature::Temperature(const IDLTemperature &l) : value(l.value) {
00126 }
00127 #endif
00128
00129 inline Temperature::Temperature(const string &s) : value(fromString(s)) {
00130 }
00131
00132 inline Temperature::Temperature(double v) : value(v) {
00133 }
00134
00135
00136 inline Temperature::~Temperature() { }
00137
00138
00139 inline Temperature& Temperature::operator = ( const Temperature &t ) {
00140 value = t.value;
00141 return *this;
00142 }
00143
00144
00145 inline Temperature& Temperature::operator = ( const double v ) {
00146 value = v;
00147 return *this;
00148 }
00149
00150
00151 inline Temperature& Temperature::operator += ( const Temperature& t) {
00152 value += t.value;
00153 return *this;
00154 }
00155
00156 inline Temperature& Temperature::operator -= ( const Temperature& t) {
00157 value -= t.value;
00158 return *this;
00159 }
00160
00161 inline Temperature& Temperature::operator *= ( const double n) {
00162 value *= n;
00163 return *this;
00164 }
00165
00166 inline Temperature& Temperature::operator /= ( const double n) {
00167 value /= n;
00168 return *this;
00169 }
00170
00171
00172 inline Temperature Temperature::operator + ( const Temperature &t2 ) const {
00173 Temperature tmp;
00174 tmp.value = value + t2.value;
00175 return tmp;
00176 }
00177
00178 inline Temperature Temperature::operator - ( const Temperature &t2 ) const {
00179 Temperature tmp;
00180 tmp.value = value - t2.value;
00181 return tmp;
00182 }
00183 inline Temperature Temperature::operator * ( const double n) const {
00184 Temperature tmp;
00185 tmp.value = value * n;
00186 return tmp;
00187 }
00188
00189 inline Temperature Temperature::operator / ( const double n) const {
00190 Temperature tmp;
00191 tmp.value = value / n;
00192 return tmp;
00193 }
00194
00195
00196 inline bool Temperature::operator < (const Temperature& x) const {
00197 return (value < x.value);
00198 }
00199
00200 inline bool Temperature::operator > (const Temperature& x) const {
00201 return (value > x.value);
00202 }
00203
00204 inline bool Temperature::operator <= (const Temperature& x) const {
00205 return (value <= x.value);
00206 }
00207
00208 inline bool Temperature::operator >= (const Temperature& x) const {
00209 return (value >= x.value);
00210 }
00211
00212 inline bool Temperature::operator == (const Temperature& x) const {
00213 return (value == x.value);
00214 }
00215 inline bool Temperature::equals(const Temperature& x) const {
00216 return (value == x.value);
00217 }
00218
00219 inline bool Temperature::operator != (const Temperature& x) const {
00220 return (value != x.value);
00221 }
00222
00223
00224 inline Temperature Temperature::operator - () const {
00225 Temperature tmp;
00226 tmp.value = -value;
00227 return tmp;
00228 }
00229
00230 inline Temperature Temperature::operator + () const {
00231 Temperature tmp;
00232 tmp.value = value;
00233 return tmp;
00234 }
00235
00236
00237 inline Temperature::operator string () const {
00238 return toString();
00239 }
00240
00241 inline string Temperature::toString() const {
00242 return toString(value);
00243 }
00244
00245 inline string Temperature::toStringI() const {
00246 return toString(value);
00247 }
00248
00249 inline double Temperature::get() const {
00250 return value;
00251 }
00252
00253 #ifndef WITHOUT_ACS
00254 inline IDLTemperature Temperature::toIDLTemperature() const {
00255 IDLTemperature tmp;
00256 tmp.value = value;
00257 return tmp;
00258 }
00259 #endif
00260
00261
00262
00263 inline Temperature operator * ( double n, const Temperature &x) {
00264 Temperature tmp;
00265 tmp.value = x.value * n;
00266 return tmp;
00267 }
00268
00269 inline ostream & operator << ( ostream &o, const Temperature &x ) {
00270 o << x.value;
00271 return o;
00272 }
00273
00274 inline istream & operator >> ( istream &i, Temperature &x ) {
00275 i >> x.value;
00276 return i;
00277 }
00278
00279 inline string Temperature::unit() {
00280 return string ("degC");
00281 }
00282
00283 }
00284
00285 #endif