range.cpp

Go to the documentation of this file.
00001 #include "range.h"
00002 #include "mvaexit.h"
00003 //
00004 //******************************************************************************
00005 //                    RANGE.CPP
00006 //******************************************************************************
00007 //
00008 //
00009 //********************************************************************************
00010 //
00011 //            Chris Anderson (C) UCLA 1995
00012 //
00013 //            Fri Sep 01 18:43:55 1995
00014 //
00015 //********************************************************************************
00016 //
00017 // Global Instance CAMnullRange;
00018 //
00019 //CAMrange __IMPEXP__ CAMnullRange;
00020 //
00021 //********************************************************************************
00022 //                    CONSTRUCTORS
00023 //********************************************************************************
00024 //
00025 //
00026 //********************************************************************************
00027 //               
00028 //********************************************************************************
00029 //
00030 CAMrange::CAMrange()
00031 {
00032     base               = 0;
00033     bound              = 0;
00034     stride             = 0;
00035     singleArgumentFlag = 0;
00036     underscoreFlag     = 0;
00037     nullFlag           = 1;
00038 }
00039 
00040 CAMrange::CAMrange( const CAMrange& A)
00041 {
00042     base                 = A.base;
00043     bound                = A.bound;
00044     stride                = A.stride;
00045     singleArgumentFlag    = A.singleArgumentFlag;
00046     underscoreFlag        = A.underscoreFlag;
00047     nullFlag            = A.nullFlag;
00048 }
00049 
00050 CAMrange::CAMrange(long inputSize)
00051 {
00052     base                 = 1;
00053     bound                = inputSize;
00054     stride                = 1;
00055     singleArgumentFlag    = 1;
00056     underscoreFlag        = 0;
00057     nullFlag            = 0;
00058     CAMrange::CAMrangeError(*this);
00059 }
00060 CAMrange::CAMrange(long inputBase, long inputBound)
00061 {
00062     base                 = inputBase;
00063     bound                = inputBound;
00064     stride                = 1;
00065     singleArgumentFlag    = 0;
00066     underscoreFlag        = 0;
00067     nullFlag            = 0;
00068     CAMrange::CAMrangeError(*this);
00069 }
00070 CAMrange::CAMrange(long inputBase, long inputBound, long inputStride)
00071 {
00072     base                 = inputBase;
00073     bound                = inputBound;
00074     stride                = inputStride;
00075     singleArgumentFlag    = 0;
00076     underscoreFlag        = 0;
00077     nullFlag            = 0;
00078     CAMrange::CAMrangeError(*this);
00079 }
00080 CAMrange::CAMrange(const CAMunderscore&)
00081 {
00082     base                 = 0;
00083     bound                = 0;
00084     stride                = 0;
00085     singleArgumentFlag    = 0;
00086     underscoreFlag        = 1;
00087     nullFlag            = 0;
00088 }
00089 //
00090 //********************************************************************************
00091 //                    DESTRUCTOR
00092 //********************************************************************************
00093 //
00094 CAMrange::~CAMrange()
00095 {
00096 }
00097 //
00098 //********************************************************************************
00099 //                    ASSIGNMENT
00100 //********************************************************************************
00101 //
00102 CAMrange&  CAMrange::operator =( const CAMrange& A)
00103 {
00104     base                = A.base;
00105     bound                = A.bound;
00106     stride                = A.stride;
00107     singleArgumentFlag    = A.singleArgumentFlag;
00108     underscoreFlag        = A.underscoreFlag;
00109     nullFlag            = A.nullFlag;
00110     return *this;
00111 }
00112 
00113 //
00114 //********************************************************************************
00115 //                    OUTPUT
00116 //********************************************************************************
00117 //
00118 ostream&  operator <<(ostream& out_stream, const CAMrange& A)
00119 {
00120 //
00121 //  Default Output  : Memberwise Output
00122 //
00123     out_stream  << "base   = " << A.base
00124                 << "  bound  = " << A.bound 
00125                 << "  stride = " << A.stride << '\n';
00126     return(out_stream);
00127 }
00128 //
00129 //********************************************************************************
00130 //                    MEMBER_FUNCTIONS
00131 //********************************************************************************
00132 //
00133 
00134 void      CAMrange::initialize()
00135 {
00136     base               = 0;
00137     bound              = 0;
00138     stride             = 0;
00139     singleArgumentFlag = 0;
00140     underscoreFlag     = 0;
00141     nullFlag           = 1;
00142 }
00143 
00144 void      CAMrange::initialize(const CAMrange& R)
00145 {
00146     base                 = R.base;
00147     bound                = R.bound;
00148     stride                = R.stride;
00149     singleArgumentFlag    = R.singleArgumentFlag;
00150     underscoreFlag        = R.underscoreFlag;
00151     nullFlag            = R.nullFlag;
00152 }
00153 
00154 void      CAMrange::initialize(long inputSize)
00155 {
00156     base                 = 1;
00157     bound                = inputSize;
00158     stride                = 1;
00159     singleArgumentFlag    = 1;
00160     underscoreFlag        = 0;
00161     nullFlag            = 0;
00162     CAMrange::CAMrangeError(*this);
00163 }
00164 
00165 void      CAMrange::initialize(long inputBase, long inputBound)
00166 {
00167     base                 = inputBase;
00168     bound                = inputBound;
00169     stride                = 1;
00170     singleArgumentFlag    = 0;
00171     underscoreFlag        = 0;
00172     nullFlag            = 0;
00173     CAMrange::CAMrangeError(*this);
00174 }
00175 
00176 void      CAMrange::initialize(long inputBase, long inputBound, long inputStride)
00177 {
00178     base                 = inputBase;
00179     bound                = inputBound;
00180     stride                = inputStride;
00181     singleArgumentFlag    = 0;
00182     underscoreFlag        = 0;
00183     nullFlag            = 0;
00184     CAMrange::CAMrangeError(*this);
00185 }
00186 CAMrange      CAMrange::operator ++ (int)
00187 {
00188     if(nullFlag != 1)
00189     {
00190     base  = base  + 1;
00191     bound = bound + 1;
00192     }
00193     return *this;
00194 }
00195 
00196 CAMrange      CAMrange::operator -- (int)
00197 {
00198     if(nullFlag != 1)
00199     {
00200     base  = base  - 1;
00201     bound = bound - 1;
00202     }
00203     return *this;
00204 }
00205 
00206 CAMrange      CAMrange::operator + (long i)
00207 {
00208     CAMrange R;
00209     if(nullFlag != 1)
00210     {R.initialize(base + i, bound + i, stride);}
00211 
00212     return R;
00213 }
00214 
00215 CAMrange      CAMrange::operator - (long i)
00216 {
00217     CAMrange R;
00218     if(nullFlag != 1)
00219     {R.initialize(base - i, bound - i, stride);}
00220 
00221     return R;
00222 }
00223 
00224 CAMrange  operator + (long i, CAMrange& A)
00225 {
00226     CAMrange R;
00227     if(A.nullFlag != 1)
00228     {R.initialize(A.base + i, A.bound + i, A.stride);}
00229 
00230     return R;
00231 }
00232 
00233 void  CAMrange::CAMrangeError(const CAMrange& A)
00234 {   
00235     if(((A.bound - A.base) + 1) < 0 )
00236     {
00237     cerr <<"Error : Negative Number of Elements In Index Range " << endl;
00238     CAMmvaExit();
00239     } 
00240     if(A.stride <= 0 )
00241     {
00242     cerr <<"Error : Non Positive Stride in Index Range " << endl;
00243     CAMmvaExit();
00244     }
00245 }
00246 //
00247 //********************************************************************************
00248 //                     CPP File End 
00249 //********************************************************************************
00250 //
00251 
00252 
00253   

Generated on Wed Aug 6 12:58:50 2003 for Open-Sessame Framework by doxygen1.3