00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _CXSC_XSCCLASS_HPP_INCLUDED
00027 #define _CXSC_XSCCLASS_HPP_INCLUDED
00028
00029 #include "compiler.h"
00030
00031
00032
00033
00034 #ifndef CXSC_INDEX_CHECK
00035 #define CXSC_INDEX_CHECK 0
00036 #endif
00037
00038 #ifdef OLD_CXSC
00039
00040
00041
00042
00043 namespace cxsc {
00044
00045 class index
00046 {
00047 private:
00048 int ind;
00049 public:
00050 index() {}
00051 index(const int i) { ind=i; }
00052 int _int() const { return ind; }
00053 };
00054
00055 }
00056
00057
00058
00059 #endif
00060
00061 #define _CXSC_INLINE
00062 #ifdef _CXSC_INLINE
00063 # define INLINE inline
00064 # define TINLINE inline // templates in vector.inl, matrix.inl
00065 # define _CXSC_INCL_INL
00066 # define _CXSC_FRIEND_TPL // define friends in *vector.hpp, *matrix.hpp
00067 #else
00068 # define INLINE
00069 # define TINLINE
00070 #endif
00071
00072 #undef _CXSC_CPP
00073 #ifdef _CXSC_CPP
00074 # undef INLINE
00075 # define INLINE
00076 # undef TINLINE
00077 # define TINLINE inline
00078 # define _CXSC_FRIEND_TPL
00079 # undef _CXSC_INCL_INL
00080 #endif
00081
00082
00083
00084
00085
00086
00087 #include <string>
00088
00089 namespace cxsc {
00090
00091 using std::string;
00092
00093 class real;
00094 class interval;
00095 class complex;
00096 class cinterval;
00097
00098 class l_real;
00099 class l_interval;
00100 class l_complex;
00101 class l_cinterval;
00102
00103 class lx_interval;
00104 class lx_real;
00105 class lx_cinterval;
00106 class lx_complex;
00107
00108 class dotprecision;
00109 class idotprecision;
00110 class cdotprecision;
00111 class cidotprecision;
00112
00113 class intvector;
00114 class intvector_slice;
00115 class rvector;
00116 class rvector_slice;
00117 class ivector;
00118 class ivector_slice;
00119 class cvector;
00120 class cvector_slice;
00121 class civector;
00122 class civector_slice;
00123 class l_rvector;
00124 class l_rvector_slice;
00125 class l_ivector;
00126 class l_ivector_slice;
00127
00128 class intmatrix;
00129 class intmatrix_slice;
00130 class intmatrix_subv;
00131 class rmatrix;
00132 class rmatrix_slice;
00133 class rmatrix_subv;
00134 class imatrix;
00135 class imatrix_slice;
00136 class imatrix_subv;
00137 class cmatrix;
00138 class cmatrix_slice;
00139 class cmatrix_subv;
00140 class cimatrix;
00141 class cimatrix_slice;
00142 class cimatrix_subv;
00143 class l_rmatrix;
00144 class l_rmatrix_slice;
00145 class l_rmatrix_subv;
00146 class l_imatrix;
00147 class l_imatrix_slice;
00148 class l_imatrix_subv;
00149
00150 class srvector;
00151 class sivector;
00152 class scvector;
00153 class scivector;
00154 class srvector_slice;
00155 class sivector_slice;
00156 class scvector_slice;
00157 class scivector_slice;
00158
00159 class srmatrix;
00160 class simatrix;
00161 class scmatrix;
00162 class scimatrix;
00163 class srmatrix_slice;
00164 class simatrix_slice;
00165 class scmatrix_slice;
00166 class scimatrix_slice;
00167 class srmatrix_subv;
00168 class simatrix_subv;
00169 class scmatrix_subv;
00170 class scimatrix_subv;
00171
00172 inline string nameof(bool) { return "bool"; }
00173 inline string nameof(char) { return "char"; }
00174 inline string nameof(int) { return "int"; }
00175 inline string nameof(long) { return "long"; }
00176
00177 inline string nameof(const float &) { return "float"; }
00178 inline string nameof(const double &) { return "double"; }
00179
00180 inline string nameof(const real &) { return "real"; }
00181 inline string nameof(const interval &) { return "interval"; }
00182 inline string nameof(const complex &) { return "complex"; }
00183 inline string nameof(const cinterval &){ return "cinterval"; }
00184
00185 inline string nameof(const l_real &) { return "l_real"; }
00186 inline string nameof(const l_interval &) { return "l_interval"; }
00187 inline string nameof(const l_complex &) { return "l_complex"; }
00188 inline string nameof(const l_cinterval &) { return "l_cinterval"; }
00189
00190 inline string nameof(const lx_real &) { return "lx_real"; }
00191 inline string nameof(const lx_interval &) { return "lx_interval"; }
00192 inline string nameof(const lx_cinterval &){ return "lx_cinterval"; }
00193
00194 inline string nameof(const dotprecision &) { return "dotprecision"; }
00195 inline string nameof(const idotprecision &) { return "idotprecision"; }
00196 inline string nameof(const cdotprecision &) { return "cdotprecision"; }
00197 inline string nameof(const cidotprecision &) { return "cidotprecision"; }
00198
00199 inline string nameof(const intvector &) { return "intvector"; }
00200 inline string nameof(const intvector_slice &) { return "intvector_slice"; }
00201 inline string nameof(const rvector &) { return "rvector"; }
00202 inline string nameof(const rvector_slice &) { return "rvector_slice"; }
00203 inline string nameof(const ivector &) { return "ivector"; }
00204 inline string nameof(const ivector_slice &) { return "ivector_slice"; }
00205 inline string nameof(const cvector &) { return "cvector"; }
00206 inline string nameof(const cvector_slice &) { return "cvector_slice"; }
00207 inline string nameof(const civector &) { return "civector"; }
00208 inline string nameof(const civector_slice &) { return "civector_slice"; }
00209 inline string nameof(const l_rvector &) { return "l_rvector"; }
00210 inline string nameof(const l_rvector_slice &) { return "l_rvector_slice"; }
00211 inline string nameof(const l_ivector &) { return "l_ivector"; }
00212 inline string nameof(const l_ivector_slice &) { return "l_ivector_slice"; }
00213
00214 inline string nameof(const intmatrix &) { return "intmatrix"; }
00215 inline string nameof(const intmatrix_slice &) { return "intmatrix_slice"; }
00216 inline string nameof(const rmatrix &) { return "rmatrix"; }
00217 inline string nameof(const rmatrix_slice &) { return "rmatrix_slice"; }
00218 inline string nameof(const rmatrix_subv &) { return "rmatrix_subv"; }
00219 inline string nameof(const imatrix &) { return "imatrix"; }
00220 inline string nameof(const imatrix_slice &) { return "imatrix_slice"; }
00221 inline string nameof(const imatrix_subv &) { return "imatrix_subv"; }
00222 inline string nameof(const cmatrix &) { return "cmatrix"; }
00223 inline string nameof(const cmatrix_slice &) { return "cmatrix_slice"; }
00224 inline string nameof(const cmatrix_subv &) { return "cmatrix_subv"; }
00225 inline string nameof(const cimatrix &) { return "cimatrix"; }
00226 inline string nameof(const cimatrix_slice &) { return "cimatrix_slice"; }
00227 inline string nameof(const cimatrix_subv &) { return "cimatrix_subv"; }
00228 inline string nameof(const l_rmatrix &) { return "l_rmatrix"; }
00229 inline string nameof(const l_rmatrix_slice &) { return "l_rmatrix_slice"; }
00230 inline string nameof(const l_rmatrix_subv &) { return "l_rmatrix_subv"; }
00231 inline string nameof(const l_imatrix &) { return "l_imatrix"; }
00232 inline string nameof(const l_imatrix_slice &) { return "l_imatrix_slice"; }
00233 inline string nameof(const l_imatrix_subv &) { return "l_imatrix_subv"; }
00234
00235 inline string nameof(const srvector& ) { return "srvector"; }
00236 inline string nameof(const sivector& ) { return "sivector"; }
00237 inline string nameof(const scvector& ) { return "scvector"; }
00238 inline string nameof(const scivector& ) { return "scivector"; }
00239 inline string nameof(const srvector_slice& ) { return "srvector_slice"; }
00240 inline string nameof(const sivector_slice& ) { return "sivector_slice"; }
00241 inline string nameof(const scvector_slice& ) { return "scvector_slice"; }
00242 inline string nameof(const scivector_slice& ) { return "scivector_slice"; }
00243
00244 inline string nameof(const srmatrix& ) { return "srmatrix"; }
00245 inline string nameof(const simatrix& ) { return "simatrix"; }
00246 inline string nameof(const scmatrix& ) { return "scmatrix"; }
00247 inline string nameof(const scimatrix& ) { return "scimatrix"; }
00248 inline string nameof(const srmatrix_slice& ) { return "srmatrix_slice"; }
00249 inline string nameof(const simatrix_slice& ) { return "simatrix_slice"; }
00250 inline string nameof(const scmatrix_slice& ) { return "scmatrix_slice"; }
00251 inline string nameof(const scimatrix_slice& ) { return "scimatrix_slice"; }
00252 inline string nameof(const srmatrix_subv& ) { return "srmatrix_subv"; }
00253 inline string nameof(const simatrix_subv& ) { return "simatrix_subv"; }
00254 inline string nameof(const scmatrix_subv& ) { return "scmatrix_subv"; }
00255 inline string nameof(const scimatrix_subv& ) { return "scimatrix_subv"; }
00256 }
00257
00258 #endif // _CXSC_XSCCLASS_HPP_INCLUDED