Humidity.h

00001 /* 00002 * ALMA - Atacama Large Millimeter Array 00003 * (c) European Southern Observatory, 2002 00004 * (c) Associated Universities Inc., 2002 00005 * Copyright by ESO (in the framework of the ALMA collaboration), 00006 * Copyright by AUI (in the framework of the ALMA collaboration), 00007 * All rights reserved. 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU Lesser General Public 00011 * License as published by the Free software Foundation; either 00012 * version 2.1 of the License, or (at your option) any later version. 00013 * 00014 * This library is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY, without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 * Lesser General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU Lesser General Public 00020 * License along with this library; if not, write to the Free Software 00021 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00022 * MA 02111-1307 USA 00023 * 00024 * File Humidity.h 00025 */ 00026 00027 #ifndef Humidity_CLASS 00028 #define Humidity_CLASS 00029 00030 #include <vector> 00031 #include <iostream> 00032 #include <string> 00033 using namespace std; 00034 00035 #ifndef WITHOUT_ACS 00036 #include <asdmIDLTypesC.h> 00037 using asdmIDLTypes::IDLHumidity; 00038 #endif 00039 00040 #include <StringTokenizer.h> 00041 #include <NumberFormatException.h> 00042 using asdm::StringTokenizer; 00043 using asdm::NumberFormatException; 00044 00045 #include "EndianStream.h" 00046 using asdm::EndianOSStream; 00047 using asdm::EndianISStream; 00048 00049 namespace asdm { 00050 00051 class Humidity; 00052 Humidity operator * ( double , const Humidity & ); 00053 ostream & operator << ( ostream &, const Humidity & ); 00054 istream & operator >> ( istream &, Humidity&); 00055 00065 class Humidity { 00066 friend Humidity operator * ( double , const Humidity & ); 00067 friend ostream & operator << ( ostream &, const Humidity & ); 00068 friend istream & operator >> ( istream &, Humidity&); 00069 00070 public: 00071 static double fromString(const string&); 00072 static string toString(double); 00073 static Humidity getHumidity(StringTokenizer &t) throw(NumberFormatException); 00074 00078 void toBin(EndianOSStream& eoss); 00079 00085 static void toBin(const vector<Humidity>& humidity, EndianOSStream& eoss); 00086 00092 static void toBin(const vector<vector<Humidity> >& humidity, EndianOSStream& eoss); 00093 00099 static void toBin(const vector<vector<vector<Humidity> > >& humidity, EndianOSStream& eoss); 00100 00107 static Humidity fromBin(EndianISStream& eiss); 00108 00115 static vector<Humidity> from1DBin(EndianISStream & eiss); 00116 00123 static vector<vector<Humidity> > from2DBin(EndianISStream & eiss); 00124 00131 static vector<vector<vector<Humidity> > > from3DBin(EndianISStream & eiss); 00132 Humidity(); // default constructor 00133 Humidity(const Humidity &); // X const X& constructor 00134 Humidity(const string &s); 00135 #ifndef WITHOUT_ACS 00136 Humidity(const IDLHumidity &); 00137 #endif 00138 Humidity(double value); 00139 virtual ~Humidity(); // destructor 00140 00141 Humidity& operator = (const Humidity&); // assignment operator 00142 Humidity& operator = (const double); // assignment operator 00143 00144 Humidity& operator += (const Humidity&); // assignment with arithmetic 00145 Humidity& operator -= (const Humidity&); // operators 00146 Humidity& operator *= (const double); 00147 Humidity& operator /= (const double); 00148 00149 Humidity operator + (const Humidity&) const; // arithmetic operators 00150 Humidity operator - (const Humidity&) const; 00151 Humidity operator * (const double) const; 00152 Humidity operator / (const double) const; 00153 00154 bool operator < (const Humidity&) const; // comparison operators 00155 bool operator > (const Humidity&) const; 00156 bool operator <= (const Humidity&) const; 00157 bool operator >= (const Humidity&) const; 00158 bool operator == (const Humidity&) const; 00159 bool equals(const Humidity&) const; 00160 bool operator != (const Humidity&) const; 00161 00162 bool isZero() const; 00163 00164 Humidity operator - () const; // unary minus 00165 Humidity operator + () const; // unary plus 00166 00167 string toString() const; 00168 string toStringI() const; 00169 00170 operator string () const; 00171 double get() const; 00172 #ifndef WITHOUT_ACS 00173 IDLHumidity toIDLHumidity() const; 00174 #endif 00175 static string unit(); 00176 00177 private: 00178 double value; 00179 00180 }; 00181 00182 // Humidity constructors 00183 inline Humidity::Humidity() : value(0.0) { 00184 } 00185 00186 inline Humidity::Humidity(const Humidity &t) : value(t.value) { 00187 } 00188 00189 #ifndef WITHOUT_ACS 00190 inline Humidity::Humidity(const IDLHumidity &l) : value(l.value) { 00191 } 00192 #endif 00193 00194 inline Humidity::Humidity(const string &s) : value(fromString(s)) { 00195 } 00196 00197 inline Humidity::Humidity(double v) : value(v) { 00198 } 00199 00200 // Humidity destructor 00201 inline Humidity::~Humidity() { } 00202 00203 // assignment operator 00204 inline Humidity& Humidity::operator = ( const Humidity &t ) { 00205 value = t.value; 00206 return *this; 00207 } 00208 00209 // assignment operator 00210 inline Humidity& Humidity::operator = ( const double v ) { 00211 value = v; 00212 return *this; 00213 } 00214 00215 // assignment with arithmetic operators 00216 inline Humidity& Humidity::operator += ( const Humidity& t) { 00217 value += t.value; 00218 return *this; 00219 } 00220 00221 inline Humidity& Humidity::operator -= ( const Humidity& t) { 00222 value -= t.value; 00223 return *this; 00224 } 00225 00226 inline Humidity& Humidity::operator *= ( const double n) { 00227 value *= n; 00228 return *this; 00229 } 00230 00231 inline Humidity& Humidity::operator /= ( const double n) { 00232 value /= n; 00233 return *this; 00234 } 00235 00236 // arithmetic functions 00237 inline Humidity Humidity::operator + ( const Humidity &t2 ) const { 00238 Humidity tmp; 00239 tmp.value = value + t2.value; 00240 return tmp; 00241 } 00242 00243 inline Humidity Humidity::operator - ( const Humidity &t2 ) const { 00244 Humidity tmp; 00245 tmp.value = value - t2.value; 00246 return tmp; 00247 } 00248 inline Humidity Humidity::operator * ( const double n) const { 00249 Humidity tmp; 00250 tmp.value = value * n; 00251 return tmp; 00252 } 00253 00254 inline Humidity Humidity::operator / ( const double n) const { 00255 Humidity tmp; 00256 tmp.value = value / n; 00257 return tmp; 00258 } 00259 00260 // comparison operators 00261 inline bool Humidity::operator < (const Humidity& x) const { 00262 return (value < x.value); 00263 } 00264 00265 inline bool Humidity::operator > (const Humidity& x) const { 00266 return (value > x.value); 00267 } 00268 00269 inline bool Humidity::operator <= (const Humidity& x) const { 00270 return (value <= x.value); 00271 } 00272 00273 inline bool Humidity::operator >= (const Humidity& x) const { 00274 return (value >= x.value); 00275 } 00276 00277 inline bool Humidity::operator == (const Humidity& x) const { 00278 return (value == x.value); 00279 } 00280 inline bool Humidity::equals(const Humidity& x) const { 00281 return (value == x.value); 00282 } 00283 00284 inline bool Humidity::operator != (const Humidity& x) const { 00285 return (value != x.value); 00286 } 00287 00288 // unary - and + operators 00289 inline Humidity Humidity::operator - () const { 00290 Humidity tmp; 00291 tmp.value = -value; 00292 return tmp; 00293 } 00294 00295 inline Humidity Humidity::operator + () const { 00296 Humidity tmp; 00297 tmp.value = value; 00298 return tmp; 00299 } 00300 00301 // Conversion functions 00302 inline Humidity::operator string () const { 00303 return toString(); 00304 } 00305 00306 inline string Humidity::toString() const { 00307 return toString(value); 00308 } 00309 00310 inline string Humidity::toStringI() const { 00311 return toString(value); 00312 } 00313 00314 inline double Humidity::get() const { 00315 return value; 00316 } 00317 00318 #ifndef WITHOUT_ACS 00319 inline IDLHumidity Humidity::toIDLHumidity() const { 00320 IDLHumidity tmp; 00321 tmp.value = value; 00322 return tmp; 00323 } 00324 #endif 00325 00326 // Friend functions 00327 00328 inline Humidity operator * ( double n, const Humidity &x) { 00329 Humidity tmp; 00330 tmp.value = x.value * n; 00331 return tmp; 00332 } 00333 00334 inline ostream & operator << ( ostream &o, const Humidity &x ) { 00335 o << x.value; 00336 return o; 00337 } 00338 00339 inline istream & operator >> ( istream &i, Humidity &x ) { 00340 i >> x.value; 00341 return i; 00342 } 00343 00344 inline string Humidity::unit() { 00345 return string ("%"); 00346 } 00347 00348 } // End namespace asdm 00349 00350 #endif /* Humidity_CLASS */

Generated on Tue Nov 18 17:43:41 2008 for ASDM C++ Implementation by doxygen 1.3.8