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