Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

vuFixel.cpp

Go to the documentation of this file.
00001 #include "vuFixel.h"
00002 
00003 
00004 template <int S, class T>
00005 vuFixel<S,T>::vuFixel()
00006 {
00007   for(int i=0;i<S;++i) m_buffer[i] = (T)0;
00008 }
00009 
00010 template <int S, class T>
00011 vuFixel<S,T>::vuFixel(const vuFixel<S,T>& inst)
00012 {
00013   for(int i=0;i<S;++i) m_buffer[i] = inst.m_buffer[i];
00014 }
00015 
00016 template <int S, class T>
00017 vuFixel<S,T>::vuFixel(const T *array)
00018 {
00019   for(int i=0;i<S;++i) m_buffer[i] = array[i];
00020 }
00021 
00022 template <int S, class T>
00023 vuFixel<S,T>::vuFixel(const T value)
00024 {
00025   for(int i=0;i<S;++i) m_buffer[i] = value;
00026 }
00027 
00028 template <int S, class T>
00029 vuFixel<S,T>::~vuFixel()
00030 {
00031 }
00032 
00033 template <int S, class T>
00034 T& vuFixel<S,T>::operator[](unsigned int index)
00035 {
00036   return m_buffer[index];
00037 }
00038 
00039 template <int S, class T>
00040 T vuFixel<S,T>::operator[](unsigned int index) const
00041 {
00042   return m_buffer[index];
00043 }
00044 
00045 template <int S, class T>
00046 T *vuFixel<S,T>::getBuffer()
00047 {
00048   return m_buffer;
00049 }
00050 
00051 template <int S, class T>
00052 T const *vuFixel<S,T>::getBuffer() const
00053 {
00054   return m_buffer;
00055 }
00056 
00057 template <int S, class T>
00058 vuFixel<S,T>& vuFixel<S,T>::operator=(const T* rhs)
00059 {
00060   for(int i=0;i<S;++i) m_buffer[i] = rhs[i];
00061   return *this;
00062 }
00063 
00064 template <int S, class T>
00065 vuFixel<S,T>& vuFixel<S,T>::operator=(T* rhs)
00066 {
00067   for(int i=0;i<S-1;++i) m_buffer[i] = rhs[i];
00068   return *this;
00069 }
00070 
00071 template <int S, class T>
00072 vuFixel<S,T>& vuFixel<S,T>::operator=(const vuFixel<S,T>& rhs)
00073 {
00074   if (this != &rhs) {
00075     for(int i=0;i<S;++i) m_buffer[i] = rhs.m_buffer[i];
00076   }
00077   return *this;
00078 }
00079 
00080 template <int S, class T>
00081 bool vuFixel<S,T>::operator==(const vuFixel<S,T>& rhs) const
00082 {
00083   for(int i=0;i<S;++i)
00084     if(!m_buffer[i] == rhs[i]) return false;
00085   return true;
00086 }
00087 
00088 template <int S, class T>
00089 vuFixel<S,T> vuFixel<S,T>::operator+(const vuFixel<S,T>& rhs) const
00090 {
00091   vuFixel<S,T> ret;
00092   for(int i=0;i<S;++i)
00093     ret.m_buffer[i] = m_buffer[i] + rhs.m_buffer[i];
00094   return ret;
00095 }
00096 
00097 template <int S, class T>
00098 vuFixel<S,T> vuFixel<S,T>::operator+(T a) const
00099 {
00100   vuFixel<S,T> ret;
00101   for(int i=0;i<S-1;++i)
00102     ret.m_buffer[i] = m_buffer[i] + a;
00103   return ret;
00104 }
00105 
00106 template <int S, class T>
00107 vuFixel<S,T> vuFixel<S,T>::operator-(const vuFixel<S,T>& rhs) const
00108 {
00109   vuFixel<S,T> ret;
00110   for(int i=0;i<S;++i)
00111     ret.m_buffer[i] = m_buffer[i] - rhs.m_buffer[i];
00112   return ret;
00113 }
00114 
00115 template <int S, class T>
00116 vuFixel<S,T> vuFixel<S,T>::operator*(const vuFixel<S,T>& rhs) const
00117 {
00118   vuFixel<S,T> ret;
00119   for(int i=0;i<S;++i)
00120     ret.m_buffer[i] = m_buffer[i] * rhs.m_buffer[i];
00121   return ret;
00122 }
00123 
00124 template <int S, class T>
00125 vuFixel<S,T> vuFixel<S,T>::operator/(const vuFixel<S,T>& rhs) const
00126 {
00127   vuFixel<S,T> ret;
00128   for(int i=0;i<S;++i)
00129     ret.m_buffer[i] = m_buffer[i] / rhs.m_buffer[i];
00130   return ret;
00131 }
00132 
00133 template <int S, class T>
00134 vuFixel<S,T> vuFixel<S,T>::operator*(T rhs) const 
00135 {
00136   vuFixel<S,T> ret;
00137   for(int i=0;i<S;++i)
00138     ret.m_buffer[i] = m_buffer[i] * rhs;
00139   return ret;
00140 }
00141 
00142 template <int S, class T>
00143 vuFixel<S,T>& vuFixel<S,T>::operator+=(const vuFixel<S,T>& rhs)
00144 {
00145   for(int i=0;i<S;++i)
00146     m_buffer[i] += rhs.m_buffer[i];
00147   return *this;
00148 }
00149 
00150 template <int S, class T>
00151 vuFixel<S,T>& vuFixel<S,T>::operator-=(const vuFixel<S,T>& rhs)
00152 {
00153   for(int i=0;i<S;++i)
00154     m_buffer[i] -= rhs.m_buffer[i];
00155   return *this;
00156 }
00157 
00158 template <int S, class T>
00159 vuFixel<S,T>& vuFixel<S,T>::operator*=(const vuFixel<S,T>& rhs)
00160 {
00161   for(int i=0;i<S;++i)
00162     m_buffer[i] *= rhs.m_buffer[i];
00163   return *this;
00164 }
00165 
00166 template <int S, class T>
00167 vuFixel<S,T>& vuFixel<S,T>::operator/=(const vuFixel<S,T>& rhs)
00168 {
00169   for(int i=0;i<S;++i)
00170     m_buffer[i] /= rhs.m_buffer[i];
00171   return *this;
00172 }
00173 
00174 template <int S, class T>
00175 vuFixel<S,T>& vuFixel<S,T>::operator*=(T rhs)
00176 {
00177   for(int i=0;i<S;++i)
00178     m_buffer[i] *= rhs;
00179   return *this;
00180 }
00181 
00182 template <int S, class T>
00183 vuFixel<S,T>& vuFixel<S,T>::operator/=(T rhs)
00184 {
00185   for(int i=0;i<S;++i)
00186     m_buffer[i] /= rhs;
00187   return *this;
00188 }
00189 
00190 template <int S, class T>
00191 word vuFixel<S,T>::size() const
00192 {
00193   return S;
00194 }
00195 
00196 template <int S, class T>
00197 T vuFixel<S,T>::maxComponent() const
00198 {
00199   T maxc = m_buffer[0];
00200   for(int i=1;i<S;++i)
00201     if(maxc<m_buffer[i]) maxc=m_buffer[i];
00202   return maxc;
00203 }
00204 
00205 template <int S, class T>
00206 T vuFixel<S,T>::minComponent() const
00207 {
00208   T minc = m_buffer[0];
00209   for(int i=1;i<S;++i)
00210     if(minc>m_buffer[i]) minc=m_buffer[i];
00211   return minc;
00212 }
00213 
00214 
00215 /* ------------------------------------------------------------------------ */
00216 /* --- friend functions --------------------------------------------------- */
00217 /* ------------------------------------------------------------------------ */
00218 
00219 #if 0
00220 template <int S, class T> friend vuFixel<S,T>
00221 operator*(T lhs, const vuFixel<S,T>& rhs)
00222 {
00223   vuFixel<S,T> ret;
00224   for(int i=0;i<S;++i)
00225     ret.m_buffer[i] = rhs.m_buffer[i] * lhs;
00226   return ret;
00227 }
00228 
00229 template <int S, class T>
00230 friend ostream& operator<<(ostream& os, const vuFixel<S,T>& A)
00231 {
00232   const T *dat = A.m_buffer;
00233   os << "[" << (double)*(dat++);
00234   for (int i=1;i<S;i++,dat++)
00235     os << ", " << (double)(*dat);
00236   os << "]";
00237   return os;
00238 }
00239 
00240 template <int S, class T>
00241 friend istream& operator>>(istream& is, vuFixel<S,T>& A)
00242 {
00243   T *dat = A.m_buffer;
00244   for (int i=0; i<S;i++,dat++)
00245     is >> (*dat);
00246   return is;
00247 }
00248 
00249 template <int S, class T>
00250 istream& vuFixel<S,T>::read(istream& is)
00251 {
00252   T *dat = m_buffer;
00253   for (int i=0;i<S;i++,dat++)
00254     is >> (*dat);
00255   return is;
00256 }
00257 
00258 template <int S, class T>
00259 ostream& vuFixel<S,T>::write(ostream& os) const
00260 {
00261   const T *dat = m_buffer;
00262   for (int i=0;i<S;i++,dat++)
00263     os << (*dat) << " ";
00264   return os;
00265 }
00266 
00267 #endif

Generated on Wed Dec 15 21:20:33 2004 for vuVolume by  doxygen 1.3.9.1