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

MRAclevel.h

Go to the documentation of this file.
00001 // MRAclevel.h
00002 //////////////////////////////////////////////////////////////////////
00003 //          (c) Copyright 2002 Brown Deer Technology, LLC.
00004 //                        All rights reserved.
00005 //////////////////////////////////////////////////////////////////////
00006 
00007 #ifndef MRACLEVEL_H
00008 #define MRACLEVEL_H
00009 
00010 #ifdef USE_STD
00011 #include <iostream>
00012 using namespace std;
00013 #else
00014 #include <iostream.h>
00015 #endif
00016 
00017 #include "BufferBase.h"
00018 
00019 #ifndef MRA_MAXDIM
00020 #define MRA_MAXDIM 4
00021 #endif
00022 
00023 class MRAclevel
00024 {
00025    public:
00026 
00027       static const int cmin_limit = -16;
00028       static const int cmax_limit = 15;
00029 
00030       MRAclevel();
00031       MRAclevel( const MRAclevel& );
00032 
00033       MRAclevel& operator () ( const MRAclevel& );
00034 
00035       MRAclevel& copy( const MRAclevel& );
00036       MRAclevel& operator = ( const MRAclevel& ); 
00037       MRAclevel& copy( int c );
00038       MRAclevel& operator = ( int c );
00039 
00040       operator int();
00041 
00042       bool is_equal( const MRAclevel& rhs );
00043       bool operator == ( const MRAclevel& rhs );
00044       bool operator != ( const MRAclevel& rhs );
00045 
00046       MRAclevel operator + ( int );
00047       MRAclevel& operator += ( int );
00048 
00049       MRAclevel operator - ( int );
00050       MRAclevel& operator -= ( int );
00051 
00052       int sizeb();
00053 
00054       void report( ostream& os = cout );
00055 
00056       void write( BufferBase& );
00057       MRAclevel& operator << ( BufferBase& );
00058       void read( BufferBase& );
00059       MRAclevel& operator >> ( BufferBase& );
00060 
00061       void write( istream& );
00062       void read( ostream& );
00063 
00064    protected:
00065 
00066       int _c;
00067 
00068    friend class MRAcrange;
00069 
00070    friend BufferBase& operator << ( BufferBase&, MRAclevel& );
00071    friend BufferBase& operator >> ( BufferBase&, MRAclevel& );
00072    friend ostream& operator << ( ostream&, MRAclevel& );
00073    friend istream& operator >> ( istream&, MRAclevel& );
00074 
00075 };
00076 
00077 inline
00078 MRAclevel::MRAclevel() : _c(0) {}
00079 
00080 inline
00081 MRAclevel::MRAclevel( const MRAclevel& clevel ) : _c(clevel._c) {}
00082 
00083 inline
00084 MRAclevel& MRAclevel::operator () ( const MRAclevel& clevel ) 
00085 { 
00086    return copy(clevel); 
00087 }
00088 
00089 inline
00090 MRAclevel& MRAclevel::copy( const MRAclevel& clevel ) 
00091 {
00092    _c = clevel._c;
00093    return *this;
00094 }
00095 
00096 inline
00097 MRAclevel& MRAclevel::operator = ( const MRAclevel& rhs ) { return copy(rhs); }
00098 
00099 inline
00100 MRAclevel& MRAclevel::copy( int c ) 
00101 {
00102    _c = c;
00103    return *this;
00104 }
00105 
00106 inline
00107 MRAclevel& MRAclevel::operator = ( int rhs ) { return copy(rhs); }
00108 
00109 inline
00110 MRAclevel::operator int () { return _c; }
00111 
00112 inline
00113 bool MRAclevel::is_equal( const MRAclevel& rhs ) 
00114 {
00115    return _c == rhs._c;
00116 }
00117 
00118 inline
00119 bool MRAclevel::operator == ( const MRAclevel& rhs ) { return is_equal(rhs); }
00120 
00121 inline
00122 bool MRAclevel::operator != ( const MRAclevel& rhs ) { return !is_equal(rhs); }
00123 
00124 inline
00125 MRAclevel MRAclevel::operator + ( int c )
00126 {
00127    MRAclevel clevel(*this);
00128    clevel += c;
00129    return clevel;
00130 }
00131 
00132 inline
00133 MRAclevel& MRAclevel::operator += ( int c )
00134 {
00135    _c += c;
00136    return *this;
00137 }
00138 
00139 inline
00140 MRAclevel MRAclevel::operator - ( int c )
00141 {
00142    MRAclevel clevel(*this);
00143    clevel -= c;
00144    return clevel;
00145 }
00146 
00147 inline
00148 MRAclevel& MRAclevel::operator -= ( int c )
00149 {
00150    _c -= c;
00151    return *this;
00152 }
00153 
00154 inline
00155 int MRAclevel::sizeb() { return 1; }
00156 
00157 inline
00158 void MRAclevel::report( ostream& os ) {
00159    os << "MRAclevel::report(){\n";
00160    os << "c = " << _c << '\n';
00161    os << "}\n";
00162 }
00163 
00164 inline
00165 void MRAclevel::write( BufferBase& buffer )
00166 {
00167    bytepack bp;
00168    buffer >> bp( 0, 1 ); _c = int(bp);
00169 }
00170 
00171 inline
00172 MRAclevel& MRAclevel::operator << ( BufferBase& buffer )
00173 {
00174    write(buffer);
00175    return *this;
00176 }
00177 
00178 inline
00179 void MRAclevel::read( BufferBase& buffer )
00180 {
00181    bytepack bp;
00182    buffer << bp( _c, 1 );
00183 }
00184 
00185 inline
00186 MRAclevel& MRAclevel::operator >> ( BufferBase& buffer )
00187 {
00188    read(buffer);
00189    return *this;
00190 }
00191 
00192 inline
00193 void MRAclevel::write( istream& is )
00194 {
00195    bytepack bp;
00196    is >> bp( 0, 1 ); _c = int(bp);
00197 }
00198 
00199 inline
00200 void MRAclevel::read( ostream& os )
00201 {
00202    bytepack bp;
00203    os << bp( _c, 1 );
00204 }
00205 
00206 // ##### friends #####
00207 
00208 inline
00209 BufferBase& operator >> ( BufferBase& buffer, MRAclevel& clevel )
00210 {
00211    clevel.write(buffer);
00212    return buffer;
00213 }
00214 
00215 inline
00216 BufferBase& operator << ( BufferBase& buffer, MRAclevel& clevel )
00217 {
00218    clevel.read(buffer);
00219    return buffer;
00220 }
00221 
00222 inline
00223 istream& operator >> ( istream& is, MRAclevel& clevel )
00224 {
00225    clevel.write(is);
00226    return is;
00227 }
00228 
00229 inline
00230 ostream& operator << ( ostream& os, MRAclevel& clevel )
00231 {
00232    clevel.read(os);
00233    return os;
00234 }
00235 
00236 #endif
00237 

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