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 Flux_CLASS
00028
#define Flux_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::IDLFlux;
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 Flux;
00052 Flux operator * (
double ,
const Flux & );
00053 ostream & operator << ( ostream &,
const Flux & );
00054 istream & operator >> ( istream &, Flux&);
00055
00065 class Flux {
00066
friend Flux operator * (
double ,
const Flux & );
00067
friend ostream & operator << ( ostream &,
const Flux & );
00068
friend istream & operator >> ( istream &,
Flux&);
00069
00070
public:
00071
static double fromString(
const string&);
00072
static string toString(
double);
00073
00077
void toBin(EndianOSStream& eoss);
00078
00084
static void toBin(
const vector<Flux>& flux, EndianOSStream& eoss);
00085
00091
static void toBin(
const vector<vector<Flux> >& flux, EndianOSStream& eoss);
00092
00098
static void toBin(
const vector<vector<vector<Flux> > >& flux, EndianOSStream& eoss);
00099
00106
static Flux fromBin(EndianISStream& eiss);
00107
00114
static vector<Flux>
from1DBin(EndianISStream & eiss);
00115
00122
static vector<vector<Flux> >
from2DBin(EndianISStream & eiss);
00123
00130
static vector<vector<vector<Flux> > >
from3DBin(EndianISStream & eiss);
00131
00132
static Flux getFlux(
StringTokenizer &t)
throw(
NumberFormatException);
00133
00134
Flux();
00135
Flux(
const Flux &);
00136
Flux(
const string &s);
00137
#ifndef WITHOUT_ACS
00138
Flux(
const IDLFlux &);
00139
#endif
00140
Flux(
double value);
00141
virtual ~
Flux();
00142
00143
Flux& operator = (
const Flux&);
00144
Flux& operator = (
const double);
00145
00146
Flux& operator += (
const Flux&);
00147
Flux& operator -= (
const Flux&);
00148
Flux& operator *= (
const double);
00149
Flux& operator /= (
const double);
00150
00151
Flux operator + (
const Flux&)
const;
00152
Flux operator - (
const Flux&)
const;
00153
Flux operator * (
const double)
const;
00154
Flux operator / (
const double)
const;
00155
00156
bool operator < (
const Flux&)
const;
00157
bool operator > (
const Flux&)
const;
00158
bool operator <= (
const Flux&)
const;
00159
bool operator >= (
const Flux&)
const;
00160
bool operator == (
const Flux&)
const;
00161
bool equals(
const Flux&)
const;
00162
bool operator != (
const Flux&)
const;
00163
00164
bool isZero()
const;
00165
00166
Flux operator - ()
const;
00167
Flux operator + ()
const;
00168
00169 string toString()
const;
00170 string toStringI()
const;
00171
00172 operator string ()
const;
00173
double get()
const;
00174
#ifndef WITHOUT_ACS
00175
IDLFlux toIDLFlux()
const;
00176
#endif
00177
00178
static string unit();
00179
00180
private:
00181
double value;
00182
00183 };
00184
00185
00186
inline Flux::Flux() : value(0.0) {
00187 }
00188
00189
inline Flux::Flux(
const Flux &t) : value(t.value) {
00190 }
00191
00192
#ifndef WITHOUT_ACS
00193
inline Flux::Flux(
const IDLFlux &l) : value(l.value) {
00194 }
00195
#endif
00196
00197
inline Flux::Flux(
const string &s) : value(fromString(s)) {
00198 }
00199
00200
inline Flux::Flux(
double v) : value(v) {
00201 }
00202
00203
00204
inline Flux::~Flux() { }
00205
00206
00207
inline Flux& Flux::operator = (
const Flux &t ) {
00208 value = t.value;
00209
return *
this;
00210 }
00211
00212
00213
inline Flux& Flux::operator = (
const double v ) {
00214 value = v;
00215
return *
this;
00216 }
00217
00218
00219
inline Flux& Flux::operator += (
const Flux& t) {
00220 value += t.value;
00221
return *
this;
00222 }
00223
00224
inline Flux& Flux::operator -= (
const Flux& t) {
00225 value -= t.value;
00226
return *
this;
00227 }
00228
00229
inline Flux& Flux::operator *= (
const double n) {
00230 value *= n;
00231
return *
this;
00232 }
00233
00234
inline Flux& Flux::operator /= (
const double n) {
00235 value /= n;
00236
return *
this;
00237 }
00238
00239
00240
inline Flux Flux::operator + (
const Flux &t2 )
const {
00241 Flux tmp;
00242 tmp.value = value + t2.value;
00243
return tmp;
00244 }
00245
00246
inline Flux Flux::operator - (
const Flux &t2 )
const {
00247 Flux tmp;
00248 tmp.value = value - t2.value;
00249
return tmp;
00250 }
00251
inline Flux Flux::operator * (
const double n)
const {
00252 Flux tmp;
00253 tmp.value = value * n;
00254
return tmp;
00255 }
00256
00257
inline Flux Flux::operator / (
const double n)
const {
00258 Flux tmp;
00259 tmp.value = value / n;
00260
return tmp;
00261 }
00262
00263
00264
inline bool Flux::operator < (
const Flux& x)
const {
00265
return (value < x.value);
00266 }
00267
00268
inline bool Flux::operator > (
const Flux& x)
const {
00269
return (value > x.value);
00270 }
00271
00272
inline bool Flux::operator <= (
const Flux& x)
const {
00273
return (value <= x.value);
00274 }
00275
00276
inline bool Flux::operator >= (
const Flux& x)
const {
00277
return (value >= x.value);
00278 }
00279
00280
inline bool Flux::operator == (
const Flux& x)
const {
00281
return (value == x.value);
00282 }
00283
inline bool Flux::equals(
const Flux& x)
const {
00284
return (value == x.value);
00285 }
00286
00287
inline bool Flux::operator != (
const Flux& x)
const {
00288
return (value != x.value);
00289 }
00290
00291
00292
inline Flux Flux::operator - ()
const {
00293 Flux tmp;
00294 tmp.value = -value;
00295
return tmp;
00296 }
00297
00298
inline Flux Flux::operator + ()
const {
00299 Flux tmp;
00300 tmp.value = value;
00301
return tmp;
00302 }
00303
00304
00305
inline Flux::operator string ()
const {
00306
return toString();
00307 }
00308
00309
inline string Flux::toString()
const {
00310
return toString(value);
00311 }
00312
00313
inline string Flux::toStringI()
const {
00314
return toString(value);
00315 }
00316
00317
inline double Flux::get()
const {
00318
return value;
00319 }
00320
00321
#ifndef WITHOUT_ACS
00322
inline IDLFlux Flux::toIDLFlux()
const {
00323 IDLFlux tmp;
00324 tmp.value = value;
00325
return tmp;
00326 }
00327
#endif
00328
00329
00330
00331
inline Flux operator * (
double n,
const Flux &x) {
00332 Flux tmp;
00333 tmp.value = x.value * n;
00334
return tmp;
00335 }
00336
00337
inline ostream & operator << ( ostream &o,
const Flux &x ) {
00338 o << x.value;
00339
return o;
00340 }
00341
00342
inline istream & operator >> ( istream &i, Flux &x ) {
00343 i >> x.value;
00344
return i;
00345 }
00346
00347
inline string Flux::unit() {
00348
return string (
"jy");
00349 }
00350
00351 }
00352
00353
#endif