TAPs 0.7.7.3
TAPsVectorSet.cpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsSimClock.hpp
00003 ******************************************************************************/
00007 /******************************************************************************
00008 SUKITTI PUNAK   (07/12/2005)
00009 UPDATE          (08/18/2010)
00010 ******************************************************************************/
00011 #include "TAPsVectorSet.hpp"
00012 // Using Inclusion Model (i.e. definitions are included in declarations)
00013 //                       (this name.cpp is included in name.hpp)
00014 // Each friend is defined directly inside its declaration.
00015 
00016 BEGIN_NAMESPACE_TAPs__Simulation
00017 //=============================================================================
00018 // Constructors and Destructor
00019 //-----------------------------------------------------------------------------
00020 template <typename T>
00021 VectorSet<T>::VectorSet () : std::vector<T>()
00022 {}
00023 //-----------------------------------------------------------------------------
00024 template <typename T>
00025 VectorSet<T>::VectorSet ( int size ) : std::vector<T>( size )
00026 {}
00027 //-----------------------------------------------------------------------------
00028 template <typename T>
00029 VectorSet<T>::VectorSet ( T const af[], int size ) : std::vector<T>( size )
00030 {
00031     for ( int i = 0; i < size; ++i )
00032         (*this)[i] = af[i];
00033 }
00034 //-----------------------------------------------------------------------------
00035 template <typename T>
00036 VectorSet<T>::VectorSet ( VectorSet<T> const &v ) : std::vector<T>( v.size() )
00037 {
00038     for ( int i = 0; i < static_cast<int>(this->size()); ++i )
00039         (*this)[i] = v[i];
00040 }
00041 //-----------------------------------------------------------------------------
00042 template <typename T>
00043 VectorSet<T>::~VectorSet ()
00044 {}
00045 //-----------------------------------------------------------------------------
00046 //=============================================================================
00047 // Assignment Operator
00048 //-----------------------------------------------------------------------------
00049 template <typename T>
00050 VectorSet<T> & VectorSet<T>::operator= ( VectorSet<T> const &v )
00051 {   
00052     if ( this != &v )
00053     {
00054         this->resize( v.size() );
00055         for ( int i = 0; i < static_cast<int>(this->size()); ++i )
00056             (*this)[i] = v[i];
00057     }
00058     return *this;
00059 }
00060 //=============================================================================
00061 // Arithmetic Operations
00062 //-----------------------------------------------------------------------------
00063 template <typename T>
00064 VectorSet<T> VectorSet<T>::operator- () const
00065 {
00066     const int size = static_cast<int>(this->size());
00067     VectorSet<T> retVector( size );
00068     for ( int i = 0; i < size; ++i )
00069         retVector[i] = -(*this)[i];
00070     return retVector;
00071 }
00072 //-----------------------------------------------------------------------------
00073 template <typename T>
00074 VectorSet<T> VectorSet<T>::operator+ ( VectorSet<T> const &v ) const
00075 {
00076     const int size = static_cast<int>(this->size());
00077     assert( size == v.size() );
00078     VectorSet<T> retVector( size );
00079     for ( int i = 0; i < size; ++i )
00080         retVector[i] = (*this)[i] + v[i];
00081     return retVector;
00082 }
00083 //-----------------------------------------------------------------------------
00084 template <typename T>
00085 VectorSet<T> VectorSet<T>::operator- ( VectorSet<T> const &v ) const
00086 {
00087     const int size = static_cast<int>(this->size());
00088     assert( size == v.size() );
00089     VectorSet<T> retVector( size );
00090     for ( int i = 0; i < size; ++i )
00091         retVector[i] = (*this)[i] - v[i];
00092     return retVector;
00093 }
00094 //-----------------------------------------------------------------------------
00095 template <typename T>
00096 VectorSet<T> VectorSet<T>::operator* ( VectorSet<T> const &v ) const
00097 {
00098     const int size = static_cast<int>(this->size());
00099     assert( size == v.size() );
00100     VectorSet<T> retVector( size );
00101     for ( int i = 0; i < size; ++i )
00102         retVector[i] = (*this)[i] * v[i];
00103     return retVector;
00104 }
00105 //-----------------------------------------------------------------------------
00106 template <typename T>
00107 VectorSet<T> VectorSet<T>::operator/ ( VectorSet<T> const &v ) const
00108 {
00109     const int size = static_cast<int>(this->size());
00110     assert( size == v.size() );
00111     VectorSet<T> retVector( size );
00112     for ( int i = 0; i < size; ++i )
00113         retVector[i] = (*this)[i] / v[i];
00114     return retVector;
00115 }
00116 //-----------------------------------------------------------------------------
00117 template <typename T>
00118 VectorSet<T> VectorSet<T>::operator* ( T s ) const
00119 {
00120     const int size = static_cast<int>(this->size());
00121     VectorSet<T> retVector( size );
00122     for ( int i = 0; i < size; ++i )
00123         retVector[i] = (*this)[i] * s;
00124     return retVector;
00125 }
00126 //-----------------------------------------------------------------------------
00127 template <typename T>
00128 VectorSet<T> VectorSet<T>::operator/ ( T s ) const
00129 {
00130     const int size = static_cast<int>(this->size());
00131     VectorSet<T> retVector( size );
00132     if ( s != Math<T>::ZERO )
00133         for ( int i = 0; i < size; ++i )
00134             retVector[i] = (*this)[i] / s;
00135     else
00136         for ( int i = 0; i < size; ++i )
00137             retVector[i] = Math<T>::INFINITY;
00138     return retVector;
00139 }
00140 //-----------------------------------------------------------------------------
00141 //=============================================================================
00142 // Arithmetic Update Operators
00143 //-----------------------------------------------------------------------------
00144 template <typename T>
00145 VectorSet<T> & VectorSet<T>::operator+= ( VectorSet<T> const &v )
00146 {
00147     assert( this->size() == v.size() );
00148     for ( int i = 0; i < static_cast<int>(this->size()); ++ i )
00149         (*this)[i] += v[i];
00150     return *this;
00151 }
00152 //-----------------------------------------------------------------------------
00153 template <typename T>
00154 VectorSet<T> & VectorSet<T>::operator-= ( VectorSet<T> const &v )
00155 {
00156     assert( this->size() == v.size() );
00157     for ( int i = 0; i < static_cast<int>(this->size()); ++ i )
00158         (*this)[i] -= v[i];
00159     return *this;
00160 }
00161 //-----------------------------------------------------------------------------
00162 template <typename T>
00163 VectorSet<T> & VectorSet<T>::operator*= ( VectorSet<T> const &v )
00164 {
00165     assert( this->size() == v.size() );
00166     for ( int i = 0; i < static_cast<int>(this->size()); ++ i )
00167         (*this)[i] *= v[i];
00168     return *this;
00169 }
00170 //-----------------------------------------------------------------------------
00171 template <typename T>
00172 VectorSet<T> & VectorSet<T>::operator/= ( VectorSet<T> const &v )
00173 {
00174     assert( this->size() == v.size() );
00175     for ( int i = 0; i < static_cast<int>(this->size()); ++ i )
00176         (*this)[i] /= v[i];
00177     return *this;
00178 }
00179 //-----------------------------------------------------------------------------
00180 template <typename T>
00181 VectorSet<T> & VectorSet<T>::operator*= ( T s )
00182 {
00183     for ( int i = 0; i < static_cast<int>(this->size()); ++ i )
00184         (*this)[i] *= s;
00185     return *this;
00186 }
00187 //-----------------------------------------------------------------------------
00188 template <typename T>
00189 VectorSet<T> & VectorSet<T>::operator/= ( T s )
00190 {
00191     if ( s != Math<T>::ZERO )
00192         for ( int i = 0; i < static_cast<int>(this->size()); ++ i )
00193             (*this)[i] /= s;
00194     else
00195         for ( int i = 0; i < static_cast<int>(this->size()); ++ i )
00196             (*this)[i] = Math<T>::INFINITY;
00197     return *this;
00198 }
00199 //-----------------------------------------------------------------------------
00200 //=============================================================================
00201 END_NAMESPACE_TAPs__Simulation
00202 //345678901234567890123456789012345678901234567890123456789012345678901234567890
00203 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines