Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

DCFmpacketBase.h

Go to the documentation of this file.
00001 // DCFmpacketBase.h
00002 //////////////////////////////////////////////////////////////////////
00003 //          (c) Copyright 2001-2002 Brown Deer Technology, LLC.     
00004 //                        All rights reserved.                  
00005 //////////////////////////////////////////////////////////////////////
00006 
00007 #ifndef DCFMPACKETBASE_H
00008 #define DCFMPACKETBASE_H
00009 
00010 #include "DCFbytepack.h"
00011 
00012 class DCFmpacketBase 
00013 {
00014    public:
00015       inline DCFmpacketBase( 
00016          const int sizebmax = 0, 
00017          const int bplen_sizeb = 1, 
00018          const int bplen_n = 1 
00019       );
00020       inline ~DCFmpacketBase();
00021       inline virtual void setencode( const int, const int, const int );
00022       inline virtual void clear();
00023       inline virtual void reset();
00024       inline virtual void set( const char );
00025       inline virtual void set( const char, const int );
00026 
00027       inline int sizeb();
00028       inline char mcode();
00029       inline int m();
00030       inline int m( const char );
00031       inline int sw();
00032       inline int sw( const char );
00033       inline int rs();
00034       inline int rs( const char );
00035       inline int order();
00036       inline int order( const char );
00037       inline int n();
00038 
00039       inline void bplen_sizeb( const int );
00040       inline int bplen_sizeb();
00041       inline void bplen_n( const int );
00042       inline int bplen_n();
00043 
00044       inline virtual void put(const char);
00045       inline char* mpacket();
00046       inline bool empty();
00047 
00048       virtual void put( bytepack& );
00049 
00050    protected:
00051       int _sizebmax;
00052       int _sizeb;
00053       char _mcode;
00054       int _n;
00055 
00056       int _bplen_sizeb;
00057       int _bplen_n;
00058 
00059       char* _ptmpacket;
00060 
00061    friend 
00062    ostream& operator << ( ostream&, DCFmpacketBase& );
00063 
00064    friend 
00065    istream& operator >> ( istream&, DCFmpacketBase& );
00066 
00067 };
00068 
00069 inline
00070 DCFmpacketBase::DCFmpacketBase( 
00071   const int sizebmax,  
00072   const int bplen_sizeb, const int bplen_n
00073 ) 
00074   : _sizebmax(sizebmax), _sizeb(0), _mcode(0), _n(-1), 
00075     _bplen_sizeb(bplen_sizeb), _bplen_n(bplen_n)
00076 {
00077    _ptmpacket = new char[ _sizebmax ];
00078 };
00079 
00080 inline
00081 DCFmpacketBase::~DCFmpacketBase() 
00082 { 
00083   if ( _ptmpacket ) { delete [] _ptmpacket; _ptmpacket = 0; }
00084 };
00085 
00086 inline
00087 void DCFmpacketBase::setencode(
00088   const int sizebmax,  
00089   const int bplensizeb, const int bplenn
00090 ) 
00091 {
00092    bplen_sizeb(bplensizeb);
00093    bplen_n(bplenn);
00094    _ptmpacket = new char[sizebmax];
00095 };
00096 
00097 inline
00098 void DCFmpacketBase::clear() {
00099    reset();
00100    set( 0, -1);
00101 };
00102 
00103 inline
00104 void DCFmpacketBase::reset() { _sizeb=0; };
00105 
00106 inline
00107 void DCFmpacketBase::set( const char mcode ) { _mcode=mcode; } 
00108 
00109 inline
00110 void DCFmpacketBase::set( const char mcode, const int n ) 
00111 {
00112    set(mcode);
00113    _n=n;
00114 } 
00115 
00116 inline
00117 int DCFmpacketBase::sizeb() { return _sizeb; };
00118 
00119 inline
00120 char DCFmpacketBase::mcode() { return _mcode; };
00121 
00122 inline
00123 int DCFmpacketBase::m( const char mcode ) 
00124 { 
00125    return int( (unsigned char)( 0x1F & mcode ) ); 
00126 };
00127 
00128 inline
00129 int DCFmpacketBase::m() 
00130 { 
00131    return int( (unsigned char)( 0x1F & _mcode ) ); 
00132 };
00133 
00134 inline
00135 int DCFmpacketBase::sw( const char mcode ) 
00136 { 
00137    return int( (unsigned char)( ( 0x80 & mcode ) >> 7 ) ); 
00138 };
00139 
00140 inline
00141 int DCFmpacketBase::sw() 
00142 { 
00143    return int( (unsigned char)( ( 0x80 & _mcode ) >> 7 ) ); 
00144 };
00145 
00146 inline
00147 int DCFmpacketBase::rs( const char mcode ) 
00148 { 
00149    return ( ( 0x40 & mcode ) >> 6 ); 
00150 };
00151 
00152 inline
00153 int DCFmpacketBase::rs() 
00154 { 
00155    return int( (unsigned char)( ( 0x40 & _mcode ) >> 6 ) ); 
00156 };
00157 
00158 inline
00159 int DCFmpacketBase::order(const char mcode) 
00160 { 
00161    return int( (unsigned char)( ( 0x20 & mcode ) >> 5 ) ); 
00162 };
00163 
00164 inline
00165 int DCFmpacketBase::order() 
00166 { 
00167    return int( (unsigned char)( ( 0x20 & _mcode ) >> 5 ) ); 
00168 };
00169 
00170 inline
00171 int DCFmpacketBase::n() { return _n; };
00172 
00173 inline
00174 void DCFmpacketBase::bplen_sizeb( const int bplen_sizeb ) 
00175 {
00176    _bplen_sizeb = bplen_sizeb; 
00177 };
00178 
00179 inline
00180 int DCFmpacketBase::bplen_sizeb() { return _bplen_sizeb; };
00181 
00182 inline
00183 void DCFmpacketBase::bplen_n( const int bplen_n ) { _bplen_n = bplen_n; };
00184 
00185 inline
00186 int DCFmpacketBase::bplen_n() { return _bplen_n; };
00187 
00188 inline
00189 void DCFmpacketBase::put(const char c) { _ptmpacket[ _sizeb++ ] = c; };
00190 
00191 inline
00192 char* DCFmpacketBase::mpacket() { return _ptmpacket; }
00193 
00194 inline
00195 bool DCFmpacketBase::empty() { return ( _sizeb == 0 ); }
00196 
00197 #endif
00198 

Generated on Mon May 31 21:38:44 2004 for SR2k4 Assembler by doxygen 1.3.6