Browse Source

doxygen vector class

master
philipp schoenberger 10 years ago
parent
commit
c9c481876d
  1. 81
      lwrserv/include/Vec.h

81
lwrserv/include/Vec.h

@ -9,33 +9,58 @@ template<class T, unsigned SIZE> class Vec;
template <class T, unsigned SIZE> class Mat; template <class T, unsigned SIZE> class Mat;
// Vector class for SIMPLE data types
/**
* Vector class for class and simple data types
* template with type and size of the vector
*
* @author Philipp Schoenberger <ph.schoenberger@googlemail.com>
* @copyright 2012 philipp schoenberger All rights reserved.
* @license This project is released under the GNU Public License.
*/
template <class T, unsigned SIZE> class Vec template <class T, unsigned SIZE> class Vec
{ {
public: public:
// standard constructor
/**
* standard constructor
*/
Vec<T,SIZE> () Vec<T,SIZE> ()
{ // initialize all elements with zero
{
// initialize all elements with zero
for (unsigned int i=0; i<SIZE; i++) for (unsigned int i=0; i<SIZE; i++)
m_atData[i] = T(0); m_atData[i] = T(0);
} }
// construction with data array
/**
* construction with data value
* Initialize the Vector completely to the given value
*
* @param tData initial value for the vector
*/
Vec<T, SIZE> (const T tData) Vec<T, SIZE> (const T tData)
{ {
for (unsigned int i=0; i<SIZE; i++) for (unsigned int i=0; i<SIZE; i++)
m_atData[i] = tData; m_atData[i] = tData;
} }
// construction with data array
/**
* construction with data array
* Initialize the Vector completely for each field with array values
*
* @param tData array of initial values for the vector
*/
Vec<T, SIZE> (const T atData[SIZE]) Vec<T, SIZE> (const T atData[SIZE])
{ {
for (unsigned int i=0; i<SIZE; i++) for (unsigned int i=0; i<SIZE; i++)
m_atData[i] = atData[i]; m_atData[i] = atData[i];
} }
// copy constructor
/**
* copy construction from an other vector
* Initialize the Vector completely for each field like the given vector
*
* @param vec of initial values for the new vector
*/
Vec<T, SIZE> (const Vec<T, SIZE> &vec) Vec<T, SIZE> (const Vec<T, SIZE> &vec)
{ {
if (this==&vec) if (this==&vec)
@ -44,17 +69,30 @@ public:
m_atData[i] = vec.m_atData[i]; m_atData[i] = vec.m_atData[i];
} }
// destructor
/**
* destructor which has nothing
*/
~Vec () ~Vec ()
{ // nothing to do here ...
{
// nothing to do here ...
} }
/**
* copy the values from the array to the Vector
*
* @param atData source array for the copy process
*/
void setData (const T atData[SIZE]) void setData (const T atData[SIZE])
{ {
for (unsigned int i=0; i<SIZE; i++) for (unsigned int i=0; i<SIZE; i++)
m_atData[i] = atData[i]; m_atData[i] = atData[i];
} }
/**
* copy the values from the vector to the array
*
* @param atData destination array for the copy process
*/
void getData (T atData[SIZE]) void getData (T atData[SIZE])
{ {
for (unsigned int i=0; i<SIZE; i++) for (unsigned int i=0; i<SIZE; i++)
@ -62,22 +100,43 @@ public:
} }
/**
* returns the dimension of the vector
*
* @retval dimension size
*/
unsigned getDimension () unsigned getDimension ()
{ {
return SIZE; return SIZE;
} }
/**
* assignment operator between vectors
* also capabile of muilti asignments
* e.g:
*
* vec1 = vec2 = vec3;
* L-Value = R-Value/L-Value = R-Value
*
* @param vec source vector which should be copied
* @retval returns the current
*/
Vec<T, SIZE> &operator = (const Vec<T, SIZE> &vec) Vec<T, SIZE> &operator = (const Vec<T, SIZE> &vec)
{ {
/// check if the L and R values are the same
/// do nothing in this case
if (this==&vec) if (this==&vec)
return (*this); // ok, it's me, so no L-value action
for (unsigned int i=0; i<SIZE; i++) // not me, so L-Value action: copy data
return (*this);
/// not the same values so copy content data
for (unsigned int i=0; i<SIZE; i++)
m_atData[i] = vec.m_atData[i]; m_atData[i] = vec.m_atData[i];
return (*this); // also an R-value in e.g
// also an R-value in e.g
// vec1 = vec2 = vec3; // vec1 = vec2 = vec3;
// L-Value = R-Value/L-Value = R-Value // L-Value = R-Value/L-Value = R-Value
return (*this);
} }
Vec<T, SIZE> &operator = (const T atData[SIZE]) Vec<T, SIZE> &operator = (const T atData[SIZE])

Loading…
Cancel
Save