AngularRate.h
Go to the documentation of this file.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 AngularRate_CLASS
00028 #define AngularRate_CLASS
00029 #include <vector>
00030 #include <iostream>
00031 #include <string>
00032 using namespace std;
00033 #ifndef WITHOUT_ACS
00034 #include <asdmIDLTypesC.h>
00035 using asdmIDLTypes::IDLAngularRate;
00036 #endif
00037 #include <StringTokenizer.h>
00038 #include <NumberFormatException.h>
00039 using asdm::StringTokenizer;
00040 using asdm::NumberFormatException;
00041 #include "EndianStream.h"
00042 using asdm::EndianOSStream;
00043 using asdm::EndianIStream;
00044 namespace asdm {
00045 class AngularRate;
00046 AngularRate operator * ( double , const AngularRate & );
00047 ostream & operator << ( ostream &, const AngularRate & );
00048 istream & operator >> ( istream &, AngularRate &);
00059 class AngularRate {
00066 friend AngularRate operator * ( double d, const AngularRate & x );
00072 friend ostream & operator << ( ostream & os, const AngularRate & x);
00076 friend istream & operator >> ( istream & is, AngularRate & x);
00077 public:
00081 AngularRate();
00085 AngularRate(const AngularRate &);
00093 AngularRate(const string &s);
00094 #ifndef WITHOUT_ACS
00095
00101 AngularRate(const IDLAngularRate & idlAngularRate);
00102 #endif
00103
00107 AngularRate(double value);
00111 virtual ~AngularRate();
00116 static double fromString(const string& s);
00123 static string toString(double);
00129 static AngularRate getAngularRate(StringTokenizer &st) throw(NumberFormatException);
00130
00135 void toBin(EndianOSStream& eoss);
00141 static void toBin(const vector<AngularRate>& angle, EndianOSStream& eoss);
00142
00148 static void toBin(const vector<vector<AngularRate> >& angle, EndianOSStream& eoss);
00149
00155 static void toBin(const vector<vector<vector<AngularRate> > >& angle, EndianOSStream& eoss);
00162 static AngularRate fromBin(EndianIStream& eis);
00163
00170 static vector<AngularRate> from1DBin(EndianIStream & eis);
00171
00178 static vector<vector<AngularRate> > from2DBin(EndianIStream & eis);
00179
00186 static vector<vector<vector<AngularRate> > > from3DBin(EndianIStream & eis);
00187
00192 AngularRate & operator = (const AngularRate & x);
00193
00198 AngularRate & operator = (const double d);
00203 AngularRate & operator += (const AngularRate & x);
00208 AngularRate & operator -= (const AngularRate & x);
00213 AngularRate & operator *= (const double x);
00218 AngularRate & operator /= (const double x);
00223 AngularRate operator + (const AngularRate & x) const;
00228 AngularRate operator - (const AngularRate & x) const;
00233 AngularRate operator * (const double x) const;
00238 AngularRate operator / (const double x) const;
00243 bool operator < (const AngularRate & x) const;
00248 bool operator > (const AngularRate & x) const;
00253 bool operator <= (const AngularRate & x) const;
00258 bool operator >= (const AngularRate & x) const;
00263 bool operator == (const AngularRate & x) const;
00268 bool equals(const AngularRate & x) const;
00273 bool operator != (const AngularRate & x) const;
00278 bool isZero() const;
00282 AngularRate operator - () const;
00286 AngularRate operator + () const;
00291 string toString() const;
00295 string toStringI() const;
00300 operator string () const;
00305 double get() const;
00306 #ifndef WITHOUT_ACS
00307
00311 IDLAngularRate toIDLAngularRate() const;
00312 #endif
00313
00317 static string unit();
00318 private:
00319 double value;
00320 };
00321
00322 inline AngularRate::AngularRate() : value(0.0) {
00323 }
00324 inline AngularRate::AngularRate(const AngularRate &t) : value(t.value) {
00325 }
00326 #ifndef WITHOUT_ACS
00327 inline AngularRate::AngularRate(const IDLAngularRate &l) : value(l.value) {
00328 }
00329 #endif
00330 inline AngularRate::AngularRate(const string &s) : value(fromString(s)) {
00331 }
00332 inline AngularRate::AngularRate(double v) : value(v) {
00333 }
00334
00335 inline AngularRate::~AngularRate() { }
00336
00337 inline AngularRate & AngularRate::operator = ( const AngularRate &t ) {
00338 value = t.value;
00339 return *this;
00340 }
00341
00342 inline AngularRate & AngularRate::operator = ( const double v ) {
00343 value = v;
00344 return *this;
00345 }
00346
00347 inline AngularRate & AngularRate::operator += ( const AngularRate & t) {
00348 value += t.value;
00349 return *this;
00350 }
00351 inline AngularRate & AngularRate::operator -= ( const AngularRate & t) {
00352 value -= t.value;
00353 return *this;
00354 }
00355 inline AngularRate & AngularRate::operator *= ( const double n) {
00356 value *= n;
00357 return *this;
00358 }
00359 inline AngularRate & AngularRate::operator /= ( const double n) {
00360 value /= n;
00361 return *this;
00362 }
00363
00364 inline AngularRate AngularRate::operator + ( const AngularRate &t2 ) const {
00365 AngularRate tmp;
00366 tmp.value = value + t2.value;
00367 return tmp;
00368 }
00369 inline AngularRate AngularRate::operator - ( const AngularRate &t2 ) const {
00370 AngularRate tmp;
00371 tmp.value = value - t2.value;
00372 return tmp;
00373 }
00374 inline AngularRate AngularRate::operator * ( const double n) const {
00375 AngularRate tmp;
00376 tmp.value = value * n;
00377 return tmp;
00378 }
00379 inline AngularRate AngularRate::operator / ( const double n) const {
00380 AngularRate tmp;
00381 tmp.value = value / n;
00382 return tmp;
00383 }
00384
00385 inline bool AngularRate::operator < (const AngularRate & x) const {
00386 return (value < x.value);
00387 }
00388 inline bool AngularRate::operator > (const AngularRate & x) const {
00389 return (value > x.value);
00390 }
00391 inline bool AngularRate::operator <= (const AngularRate & x) const {
00392 return (value <= x.value);
00393 }
00394 inline bool AngularRate::operator >= (const AngularRate & x) const {
00395 return (value >= x.value);
00396 }
00397 inline bool AngularRate::equals(const AngularRate & x) const {
00398 return (value == x.value);
00399 }
00400 inline bool AngularRate::operator == (const AngularRate & x) const {
00401 return (value == x.value);
00402 }
00403 inline bool AngularRate::operator != (const AngularRate & x) const {
00404 return (value != x.value);
00405 }
00406
00407 inline AngularRate AngularRate::operator - () const {
00408 AngularRate tmp;
00409 tmp.value = -value;
00410 return tmp;
00411 }
00412 inline AngularRate AngularRate::operator + () const {
00413 AngularRate tmp;
00414 tmp.value = value;
00415 return tmp;
00416 }
00417
00418 inline AngularRate::operator string () const {
00419 return toString();
00420 }
00421 inline string AngularRate::toString() const {
00422 return toString(value);
00423 }
00424 inline string AngularRate::toStringI() const {
00425 return toString(value);
00426 }
00427 inline double AngularRate::get() const {
00428 return value;
00429 }
00430 #ifndef WITHOUT_ACS
00431 inline IDLAngularRate AngularRate::toIDLAngularRate() const {
00432 IDLAngularRate tmp;
00433 tmp.value = value;
00434 return tmp;
00435 }
00436 #endif
00437
00438 inline AngularRate operator * ( double n, const AngularRate &x) {
00439 AngularRate tmp;
00440 tmp.value = x.value * n;
00441 return tmp;
00442 }
00443 inline ostream & operator << ( ostream &o, const AngularRate &x ) {
00444 o << x.value;
00445 return o;
00446 }
00447 inline istream & operator >> ( istream &i, AngularRate &x ) {
00448 i >> x.value;
00449 return i;
00450 }
00451 inline string AngularRate::unit() {
00452 return string ("rad/s");
00453 }
00454 }
00455 #endif