Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

CTBcarray2d.icc

Go to the documentation of this file.
00001 
00006 /*----------------------------------------------------------------------------*/
00007 /* C Tool Box: Designed and implemented by:                                   */
00008 /*    Walter F.J. Mueller   Gesellschaft fuer Schwerionenforschung (GSI)      */
00009 /*                          Planckstrasse 1, D-64291 Darmstadt, Germany       */
00010 /*                  Email:  W.F.J.Mueller@gsi.de                              */
00011 /*                  WWW:    http://www-kp3.gsi.de/www/kp3/people/mueller.html */
00012 /*------------------------------------------+---------------------------------*/
00013 
00014 #include "CTBexceptionIndexRange.hxx"
00015 
00021 //------------------------------------------+-----------------------------------
00023 
00034 template <class T, CTBint DIM1, CTBint DIM2>
00035 inline CTBcarray2d<T,DIM1,DIM2>::CTBcarray2d()
00036 {}
00037 
00038 //------------------------------------------+-----------------------------------
00040 
00041 template <class T, CTBint DIM1, CTBint DIM2>
00042 inline CTBcarray2d<T,DIM1,DIM2>::CTBcarray2d(T rhs)
00043 {
00044   operator=(rhs);
00045 }
00046 
00047 //------------------------------------------+-----------------------------------
00049 
00050 template <class T, CTBint DIM1, CTBint DIM2>
00051 inline CTBcarray2d<T,DIM1,DIM2>::CTBcarray2d(
00052     const CTBcarray2d<T,DIM1,DIM2>& rhs)
00053 {
00054   operator=(rhs);
00055 }
00056 
00057 //------------------------------------------+-----------------------------------
00059 
00060 template <class T, CTBint DIM1, CTBint DIM2>
00061 inline T* CTBcarray2d<T,DIM1,DIM2>::operator[](CTBint i_row)
00062 {
00063 #ifdef CTB__IndexCheck
00064   CTBindexRangeCheck(i_row,DIM1,"CTBcarray2d::operator[]");
00065 #endif
00066   return m_data[i_row];
00067 }
00068 
00069 //------------------------------------------+-----------------------------------
00071 
00072 template <class T, CTBint DIM1, CTBint DIM2>
00073 inline const T* CTBcarray2d<T,DIM1,DIM2>::operator[](CTBint i_row) const
00074 {
00075 #ifdef CTB__IndexCheck
00076   CTBindexRangeCheck(i_row,DIM1,"CTBcarray2d::operator[]");
00077 #endif
00078   return m_data[i_row];
00079 }
00080 
00081 //------------------------------------------+-----------------------------------
00083 
00084 template <class T, CTBint DIM1, CTBint DIM2>
00085 inline T& CTBcarray2d<T,DIM1,DIM2>::operator()(CTBint i_row, CTBint i_col)
00086 {
00087 #ifdef CTB__IndexCheck
00088   CTBindexRangeCheck(i_row,DIM1,"CTBcarray2d::operator(row,...)");
00089   CTBindexRangeCheck(i_col,DIM2,"CTBcarray2d::operator(...,col)");
00090 #endif
00091   return m_data[i_row][i_col];
00092 }
00093 
00094 //------------------------------------------+-----------------------------------
00096 
00097 template <class T, CTBint DIM1, CTBint DIM2>
00098 inline const T& CTBcarray2d<T,DIM1,DIM2>::operator()(CTBint i_row, 
00099                                                      CTBint i_col) const
00100 {
00101 #ifdef CTB__IndexCheck
00102   CTBindexRangeCheck(i_row,DIM1,"CTBcarray2d::operator(row,...)");
00103   CTBindexRangeCheck(i_col,DIM2,"CTBcarray2d::operator(...,col)");
00104 #endif
00105   return m_data[i_row][i_col];
00106 }
00107 
00108 
00109 #ifdef never
00110 //------------------------------------------+-----------------------------------
00112 
00113 template <class T, CTBint DIM1, CTBint DIM2>
00114 inline CTBcarray2d<T,DIM1,DIM2>::operator T*()
00115 {
00116   return m_data;
00117 }
00118 
00119 //------------------------------------------+-----------------------------------
00121 
00122 template <class T, CTBint DIM1, CTBint DIM2>
00123 inline CTBcarray2d<T,DIM1,DIM2>::operator const T*() const
00124 {
00125   return m_data;
00126 }
00127 #endif
00128 //------------------------------------------+-----------------------------------
00130 
00131 template <class T, CTBint DIM1, CTBint DIM2>
00132 inline CTBcarray2d<T,DIM1,DIM2>::operator CTBmatrixDsc<T>()
00133 {
00134   return CTBmatrixDsc<T>(m_data,DIM1,DIM2);
00135 }
00136 
00137 //------------------------------------------+-----------------------------------
00139 
00140 template <class T, CTBint DIM1, CTBint DIM2>
00141 inline CTBcarray2d<T,DIM1,DIM2>::operator CTBmatrixCDsc<T>() const
00142 {
00143   return CTBmatrixCDsc<T>(m_data,DIM1,DIM2);
00144 }
00145 
00146 //------------------------------------------+-----------------------------------
00148 
00149 template <class T, CTBint DIM1, CTBint DIM2>
00150 inline CTBcarray2d<T,DIM1,DIM2>& CTBcarray2d<T,DIM1,DIM2>::operator=(T rhs)
00151 {
00152   for (CTBint i = 0; i < DIM1; i++) {
00153     for (CTBint j = 0; j < DIM2; j++) m_data[i][j] = rhs;
00154   }
00155   return *this;
00156 }
00157 
00158 //------------------------------------------+-----------------------------------
00160 
00161 template <class T, CTBint DIM1, CTBint DIM2>
00162 inline CTBcarray2d<T,DIM1,DIM2>& CTBcarray2d<T,DIM1,DIM2>::operator=(
00163     const CTBcarray2d<T,DIM1,DIM2>& rhs)
00164 {
00165   for (CTBint i = 0; i < DIM1; i++) {
00166     for (CTBint j = 0; j < DIM2; j++) m_data[i][j] = rhs.m_data[i][j];
00167   }
00168   
00169   return *this;
00170 }
00171 
00172 //------------------------------------------+-----------------------------------
00178 template <class T, CTBint DIM1, CTBint DIM2>
00179 inline ostream& operator<<(ostream& os, const CTBcarray2d<T,DIM1,DIM2>& obj)
00180 {
00181   int i_width = os.width();
00182 
00183   os << setw(0) << "{";
00184   for (CTBint i = 0; i < DIM1; i++) {
00185     if (i > 0) os << ",";
00186     os << "{";
00187     for (CTBint j = 0; j < DIM2; j++) {
00188       if (j > 0) os << ",";
00189       os << setw(i_width) << obj(i,j);
00190     }
00191     os << "}";
00192   }
00193   os << "}";
00194   return os;
00195 }

Generated at Fri Oct 24 18:11:27 2003 for CTBbase by doxygen1.2.9-20010812 written by Dimitri van Heesch, © 1997-2001