00001 #pragma ident "$Id: DataStatus.hpp 1895 2009-05-12 19:34:29Z afarris $"
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00032 #ifndef DATASTATUS_HPP
00033 #define DATASTATUS_HPP
00034
00035 #include <iostream>
00036
00037 namespace gpstk
00038 {
00039 class DataStatus
00040 {
00041 std::ios_base::iostate state;
00042
00043 public:
00044
00045 DataStatus() : state(std::ios_base::goodbit) {};
00046
00049 bool good() const
00050 {return rdstate() == std::ios_base::goodbit;}
00051
00052 std::ios_base::iostate rdstate() const
00053 {return state;}
00054
00055 void clear(std::ios_base::iostate s = std::ios_base::goodbit)
00056 {state=s;}
00057
00058 void setstate(std::ios_base::iostate s)
00059 {clear(rdstate() | s);}
00060
00061 void clearstate(std::ios_base::iostate s)
00062 {state &= ~s;}
00063
00064 bool operator()() const
00065 {return good();}
00066
00067 operator void*() const
00068 {return good() ? const_cast<DataStatus*>(this) : 0;}
00069 };
00070
00072 static const std::ios_base::iostate crcbit = std::ios_base::iostate(0x01);
00073 static const std::ios_base::iostate fmtbit = std::ios_base::iostate(0x02);
00074 static const std::ios_base::iostate lenbit = std::ios_base::iostate(0x04);
00075 static const std::ios_base::iostate parbit = std::ios_base::iostate(0x08);
00076
00077 class CRCDataStatus : public DataStatus
00078 {
00079 public:
00080 bool crcerr() const {return (rdstate() & crcbit) != 0;}
00081 bool fmterr() const {return (rdstate() & fmtbit) != 0;}
00082 bool lenerr() const {return (rdstate() & lenbit) != 0;}
00083 bool parerr() const {return (rdstate() & parbit) != 0;}
00084 };
00085 }
00086
00087 #endif // DATASTATUS_HPP