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 Thu Nov 29 16:46:46 2007 for ASDM C++ Implementation by  doxygen 1.5.1