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