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

MCFsbistream< Rtmra_t > Class Template Reference

#include <MCFsbistream.h>

Inheritance diagram for MCFsbistream< Rtmra_t >:

Inheritance graph
[legend]
Collaboration diagram for MCFsbistream< Rtmra_t >:

Collaboration graph
[legend]

Public Types

typedef Rtmra_t::DataType Data_t

Public Member Functions

MCFsbistream< Rtmra_t > & jump_read (int, Rtmra_t &)
 MCFsbistream (istream &is=cin)
MCFsbistream< Rtmra_t > & operator>> (Rtmra_t &)
 ~MCFsbistream ()

template<class Rtmra_t>
class MCFsbistream< Rtmra_t >


Member Typedef Documentation

template<class Rtmra_t>
typedef Rtmra_t::DataType MCFsbistream< Rtmra_t >.Data_t
 

Definition at line 27 of file MCFsbistream.h.


Constructor & Destructor Documentation

template<class Rtmra_t>
MCFsbistream< Rtmra_t >::MCFsbistream istream &  is = cin  ) 
 

Definition at line 35 of file MCFsbistream.h.

References DataType_Code< Data_t >.eval().

00036   : MCFsbistreamBase( is ) 
00037 {
00038    _datatype_code = DataType_Code<Data_t>::eval(); 
00039 }

template<class Rtmra_t>
MCFsbistream< Rtmra_t >.~MCFsbistream  ) 
 

Definition at line 29 of file MCFsbistream.h.

00029 {}


Member Function Documentation

template<class Rtmra_t>
MCFsbistream< Rtmra_t > & MCFsbistream< Rtmra_t >::jump_read int  ,
Rtmra_t
 

Definition at line 78 of file MCFsbistream.h.

References MCFsbistreamBase.findmpacket(), MCFsbistreamBase.open(), MCFmp< Rtmra_t >.replace(), and MCFmpBase.set().

00081 {
00082    x.mrastep( mrastep-1 );
00083 
00084    MCFmp<Rtmra_t> mp( _bplen_mpsizeb, _bplen_coef, _bplen_n, _bplen_a );
00085 
00086    int m = x.imcycle();
00087    bool bob = ( m == x.mmax() );
00088 
00089 #ifdef STORM_DEBUG
00090    cout << "MCFsbistream<Rtmra_t>::jump_read(): m bob "
00091         << m << ' ' << bob << '\n';
00092 #endif
00093 
00094    _sbn = ( ( x.mrastep() + 1 ) >> x.mmax() );
00095    open();
00096 
00097    if ( ! _openfail ) {
00098       mp.set( _bplen_mpsizeb, _bplen_coef, _bplen_n, _bplen_a );
00099       findmpacket( mp, char( x.mmax() ), 0 );
00100       mp.replace(x);
00101 
00102       int n;
00103       for( int m = x.mmax(); m > 0; --m ) {
00104          n = ( ( x.mrastep() + 1 ) & ( ( 1 << x.mmax() ) - 1 ) ) >> m;
00105          findmpacket( mp, char( 0x80 | m ), n );
00106          mp.replace(x);
00107       }
00108    }
00109 
00110    return *this;
00111 };

template<class Rtmra_t>
MCFsbistream< Rtmra_t > & MCFsbistream< Rtmra_t >::operator>> Rtmra_t  ) 
 

Definition at line 42 of file MCFsbistream.h.

References MCFsbistreamBase.findmpacket(), MCFsbistreamBase.open(), MCFmp< Rtmra_t >.replace(), and MCFmpBase.set().

00043 {
00044 
00045    MCFmp<Rtmra_t> mp( _bplen_mpsizeb, _bplen_coef, _bplen_n, _bplen_a );
00046 
00047    int m = x.imcycle();
00048    bool bob = ( m == x.mmax() );
00049 
00050 #ifdef STORM_DEBUG
00051    cout << "MCFsbistream<Rtmra_t>::operator>>(): m bob "
00052         << m << ' ' << bob << '\n';
00053 #endif
00054 
00055    if (bob) {
00056       _sbn = ( ( x.mrastep() + 1 ) >> x.mmax() );
00057       open();
00058       if ( ! _openfail ) {
00059          mp.set( _bplen_mpsizeb, _bplen_coef, _bplen_n, _bplen_a );
00060          findmpacket( mp, char(m), 0 );
00061          mp.replace(x);
00062       }
00063    }
00064 
00065    if ( ! _openfail ) {
00066       int n;
00067       while (m) {
00068          n = ( ( x.mrastep() + 1 ) & ( ( 1 << x.mmax() ) - 1 ) ) >> m;
00069          findmpacket( mp, char( 0x80 | m ), n );
00070          mp.replace(x);
00071          m--;
00072       }
00073    }
00074    return *this;
00075 };


The documentation for this class was generated from the following file:
Generated on Mon May 31 21:41:14 2004 for SR2k4 Assembler by doxygen 1.3.6