ComPackSignedExpFloat Class Reference

#include <ComPackSignedExpFloat.h>

Inheritance diagram for ComPackSignedExpFloat:

ComPackBase< double > ComPackBaseBase List of all members.

Public Types

 TAG_OK
 TAG_BAD
 TAG_RANGE_ERROR
 TAG_VAL_ROUND_DOWN
 TAG_VAL_ROUND_UP
enum  StatusCode {
  TAG_OK, TAG_BAD, TAG_RANGE_ERROR, TAG_VAL_ROUND_DOWN,
  TAG_VAL_ROUND_UP
}

Public Member Functions

 ComPackSignedExpFloat (unsigned nbits, unsigned maxexponent, double maxval, bool invert=false, bool center=false)
virtual ~ComPackSignedExpFloat ()
virtual StatusCode pack (const double, d_ULong &) const
virtual StatusCode unpack (const d_ULong, double &) const
void print (std::ostream &s=std::cout) const
virtual StatusCode pack (const double, d_ULong &) const =0
virtual const double & getMinVal () const
virtual const double & getMaxVal () const
virtual const double & getRange () const
d_ULong bitRange () const
d_ULong bitMask () const

Protected Attributes

double _minVal
double _maxVal
double _valRange
d_ULong _bitRange
d_ULong _bitMask

Private Attributes

ComPackExpFloat _packer
unsigned _signbit
unsigned _signmask

Detailed Description

Definition at line 29 of file ComPackSignedExpFloat.h.


Member Enumeration Documentation

enum ComPackBaseBase::StatusCode [inherited]

Enumerator:
TAG_OK 
TAG_BAD 
TAG_RANGE_ERROR 
TAG_VAL_ROUND_DOWN 
TAG_VAL_ROUND_UP 

Definition at line 35 of file ComPackBaseBase.h.


Constructor & Destructor Documentation

ComPackSignedExpFloat::ComPackSignedExpFloat ( unsigned  nbits,
unsigned  maxexponent,
double  maxval,
bool  invert = false,
bool  center = false 
)

Definition at line 30 of file ComPackSignedExpFloat.cxx.

00034                                                           :
00035   ComPackBase<double>(-maxval,maxval,nbits),
00036   _packer(nbits-1,maxexponent,invert?maxval:0.0,
00037           invert?0.0:maxval, center),
00038   _signbit(1<<nbits-1),_signmask(~(1<<nbits-1))
00039 {
00040   assert(maxval>0.0);
00041 }

ComPackSignedExpFloat::~ComPackSignedExpFloat (  )  [virtual]

Definition at line 43 of file ComPackSignedExpFloat.cxx.

00044 {;}


Member Function Documentation

d_ULong ComPackBase< double >::bitMask (  )  const [inline, inherited]

Definition at line 75 of file ComPackBase.h.

References ComPackBase< T >::_bitMask.

00075 { return _bitMask; }

d_ULong ComPackBase< double >::bitRange (  )  const [inline, inherited]

Definition at line 74 of file ComPackBase.h.

References ComPackBase< T >::_bitRange.

00074 { return _bitRange; }

virtual const double & ComPackBase< double >::getMaxVal (  )  const [inline, virtual, inherited]

Definition at line 71 of file ComPackBase.h.

References ComPackBase< T >::_maxVal.

00071 { return _maxVal;};

virtual const double & ComPackBase< double >::getMinVal (  )  const [inline, virtual, inherited]

Definition at line 70 of file ComPackBase.h.

References ComPackBase< T >::_minVal.

00070 { return _minVal;};

virtual const double & ComPackBase< double >::getRange (  )  const [inline, virtual, inherited]

Definition at line 72 of file ComPackBase.h.

References ComPackBase< T >::_valRange.

00072 { return _valRange;};

virtual StatusCode ComPackBase< double >::pack ( const   T,
d_ULong  
) const [pure virtual, inherited]

ComPackBase< double >::StatusCode ComPackSignedExpFloat::pack ( const   double,
d_ULong  
) const [virtual]

Definition at line 47 of file ComPackSignedExpFloat.cxx.

References _packer, _signbit, _signmask, ComPackExpFloat::pack(), and ComPackBaseBase::TAG_BAD.

00047                                                                          {
00048 // first, pack the absolute value
00049   ComPackBase<double>::StatusCode retval =
00050     _packer.pack(fabs(value),packdata);
00051   if(retval != TAG_BAD){
00052     if(value>0)
00053       packdata &= _signmask;
00054     else
00055       packdata |= _signbit;
00056   }
00057   return retval;
00058 }

void ComPackSignedExpFloat::print ( std::ostream s = std::cout  )  const

ComPackBase< double >::StatusCode ComPackSignedExpFloat::unpack ( const   d_ULong,
double &   
) const [virtual]

Implements ComPackBase< double >.

Definition at line 61 of file ComPackSignedExpFloat.cxx.

References _packer, _signbit, and ComPackExpFloat::unpack().

00061                                                                            {
00062   ComPackBase<double>::StatusCode retval =
00063     _packer.unpack(packdata,value);
00064   if (value < 0)
00065     value = 0;
00066   else if(packdata&_signbit)
00067     value *= -1.0;
00068   return retval;
00069 }


Member Data Documentation

d_ULong ComPackBase< double >::_bitMask [protected, inherited]

Definition at line 88 of file ComPackBase.h.

Referenced by ComPackFlatFloat::ComPackFlatFloat(), ComPackFlatFloat::pack(), and ComPackFlatFloat::unpack().

d_ULong ComPackBase< double >::_bitRange [protected, inherited]

Definition at line 87 of file ComPackBase.h.

Referenced by ComPackExpFloat::ComPackExpFloat(), and ComPackFlatFloat::ComPackFlatFloat().

double ComPackBase< double >::_maxVal [protected, inherited]

Definition at line 85 of file ComPackBase.h.

Referenced by ComPackExpFloat::ComPackExpFloat(), ComPackFlatFloat::ComPackFlatFloat(), and ComPackFlatFloat::testMe().

double ComPackBase< double >::_minVal [protected, inherited]

Definition at line 84 of file ComPackBase.h.

Referenced by ComPackExpFloat::ComPackExpFloat(), ComPackFlatFloat::ComPackFlatFloat(), ComPackFlatFloat::pack(), ComPackExpFloat::pack(), ComPackFlatFloat::testMe(), and ComPackFlatFloat::unpack().

ComPackExpFloat ComPackSignedExpFloat::_packer [private]

Definition at line 47 of file ComPackSignedExpFloat.h.

Referenced by pack(), and unpack().

unsigned ComPackSignedExpFloat::_signbit [private]

Definition at line 48 of file ComPackSignedExpFloat.h.

Referenced by pack(), and unpack().

unsigned ComPackSignedExpFloat::_signmask [private]

Definition at line 49 of file ComPackSignedExpFloat.h.

Referenced by pack().

double ComPackBase< double >::_valRange [protected, inherited]

Definition at line 86 of file ComPackBase.h.

Referenced by ComPackExpFloat::ComPackExpFloat(), ComPackFlatFloat::ComPackFlatFloat(), and ComPackFlatFloat::testMe().


Generated on Tue Nov 29 23:18:08 2016 for BOSS_7.0.2 by  doxygen 1.4.7