mesh_conv::MC_double_vector_vector Class Reference

Container class for MC_double_vector. More...

#include <MC_double_vector_vector.hpp>

Collaboration diagram for mesh_conv::MC_double_vector_vector:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 MC_double_vector_vector ()
 standard constructor
 MC_double_vector_vector (const MC_double_vector &v0)
 direct constructor from some MC_double_vector
 MC_double_vector_vector (const MC_double_vector &v0, const MC_double_vector &v1)
 direct constructor from some MC_double_vector
 MC_double_vector_vector (const MC_double_vector &v0, const MC_double_vector &v1, const MC_double_vector &v2)
 direct constructor from some MC_double_vector
 MC_double_vector_vector (const MC_double_vector &v0, const MC_double_vector &v1, const MC_double_vector &v2, const MC_double_vector &v3)
 direct constructor from some MC_double_vector
 MC_double_vector_vector (const std::list< MC_double_vector > &vec)
 direct constructor from a std::list <MC_double_vector>
 MC_double_vector_vector (const std::vector< MC_double_vector > &vec)
 direct constructor from a vector <MC_double_vector>
void assert_bounds (const int &u) const
 Assert the value stays within the bounds.
int size () const
 get the size of the vector
void clear ()
 clear the vector to size 0
MC_double_vector_vectorresize (const int &new_size)
 resize the vector in deleting value of adding zeros
MC_double_vector_vectoradd (const MC_double_vector &val)
 add a value at the end of the vector
MC_double_vector_vectoradd (const MC_double_vector_vector &val)
 add some values at the end of the vector
MC_double_vector_vectorset (const int &k_index, const MC_double_vector &new_value)
 set an indexed value to a certain component. Adjust the size automatically
MC_double_vector_vectorset (const MC_int_vector &k_index, const MC_double_vector_vector &new_value)
 set an indexed value to a certain component. Adjust the size automatically
std::pair
< MC_double_vector_vector,
MC_double_vector
delete_index (const int &index_to_delete) const
 delete the k_th value
std::pair
< MC_double_vector_vector,
MC_double_vector_vector
delete_index (const MC_int_vector &index_to_delete) const
 delete the k_th value
const MC_double_vectoroperator() (const int &index) const
 get operator with bounds checks
MC_double_vectoroperator() (const int &index)
 get operator with bounds checks
const MC_double_vectoroperator[] (const int &index) const
 get operator with bounds asserts
MC_double_vectoroperator[] (const int &index)
 get operator with bounds asserts
MC_double_vector_vector operator() (const MC_int_vector &index) const
 get a set of value
MC_double_vector_vector operator[] (const MC_int_vector &index) const
 get a set of value
const MC_double_vectorfirst () const
 return the first value
MC_double_vectorfirst ()
 return the first value
const MC_double_vectorlast () const
 return the last value
MC_double_vectorlast ()
 return the last value
const MC_double_vectorpointer () const
 get pointer on internal data
MC_double_vectorpointer_unprotected ()
 get pointer on internal data

Static Public Member Functions

static MC_double_vector_vector empty (const int &N)
 create an empty vector of size N
static MC_double_vector_vector repeat (const MC_double_vector &input, const int &N_repeat)
 repeat a MC_int_vector a certain amount of time

Private Attributes

std::vector< MC_double_vectordouble_vec_list
 internal storage as a std::vector <MC_double_vector>

Friends

MC_double_vector_vector operator<< (const MC_double_vector_vector &vec, const MC_double_vector &value)
 add a value at the end of the vertex
MC_double_vector_vector operator<< (const MC_double_vector_vector &vec, const MC_double_vector_vector &to_add)
 add some values at the end of the vertex
MC_double_vector_vector operator+ (const MC_double_vector_vector &vec, const double &to_add)
 add an int to all the entries
MC_double_vector_vector operator- (const MC_double_vector_vector &vec, const double &to_add)
 substract an int to all the entries
std::ostream & operator<< (std::ostream &stream, const MC_double_vector_vector &input)

Detailed Description

Container class for MC_double_vector.

correspond to a std::vector<std::vector> > and is internaly stored as a std::vector<MC_double_vector>

Definition at line 35 of file MC_double_vector_vector.hpp.


Constructor & Destructor Documentation

mesh_conv::MC_double_vector_vector::MC_double_vector_vector (  ) 

standard constructor

Definition at line 9 of file MC_double_vector_vector.cpp.

00009 {}

mesh_conv::MC_double_vector_vector::MC_double_vector_vector ( const MC_double_vector v0  ) 

direct constructor from some MC_double_vector

Definition at line 10 of file MC_double_vector_vector.cpp.

References double_vec_list.

00010 {double_vec_list.push_back(v0);}

mesh_conv::MC_double_vector_vector::MC_double_vector_vector ( const MC_double_vector v0,
const MC_double_vector v1 
)

direct constructor from some MC_double_vector

Definition at line 11 of file MC_double_vector_vector.cpp.

References double_vec_list.

00012     {double_vec_list.push_back(v0);double_vec_list.push_back(v1);}

mesh_conv::MC_double_vector_vector::MC_double_vector_vector ( const MC_double_vector v0,
const MC_double_vector v1,
const MC_double_vector v2 
)

direct constructor from some MC_double_vector

Definition at line 13 of file MC_double_vector_vector.cpp.

References double_vec_list.

00014     {double_vec_list.push_back(v0);double_vec_list.push_back(v1);double_vec_list.push_back(v2);}

mesh_conv::MC_double_vector_vector::MC_double_vector_vector ( const MC_double_vector v0,
const MC_double_vector v1,
const MC_double_vector v2,
const MC_double_vector v3 
)

direct constructor from some MC_double_vector

Definition at line 15 of file MC_double_vector_vector.cpp.

References double_vec_list.

00016     {double_vec_list.push_back(v0);double_vec_list.push_back(v1);double_vec_list.push_back(v2);double_vec_list.push_back(v3);}

mesh_conv::MC_double_vector_vector::MC_double_vector_vector ( const std::list< MC_double_vector > &  vec  ) 

direct constructor from a std::list <MC_double_vector>

Definition at line 189 of file MC_double_vector_vector.cpp.

References add().

00190     {
00191         for(std::list <MC_double_vector> :: const_iterator it=vec.begin();it!=vec.end();++it)
00192             add(*it);
00193     }

Here is the call graph for this function:

mesh_conv::MC_double_vector_vector::MC_double_vector_vector ( const std::vector< MC_double_vector > &  vec  ) 

direct constructor from a vector <MC_double_vector>

Definition at line 18 of file MC_double_vector_vector.cpp.

00019         :double_vec_list(vec)
00020     {}


Member Function Documentation

MC_double_vector_vector & mesh_conv::MC_double_vector_vector::add ( const MC_double_vector_vector val  ) 

add some values at the end of the vector

Returns:
the new current vector

Definition at line 57 of file MC_double_vector_vector.cpp.

References double_vec_list, and size().

00058     {
00059         int N=val.size();
00060         for(int k=0;k<N;++k)
00061             double_vec_list.push_back(val[k]);
00062         return *this;
00063     }

Here is the call graph for this function:

MC_double_vector_vector & mesh_conv::MC_double_vector_vector::add ( const MC_double_vector val  ) 

add a value at the end of the vector

Returns:
the current vector

Definition at line 54 of file MC_double_vector_vector.cpp.

References double_vec_list.

Referenced by delete_index(), MC_double_vector_vector(), and repeat().

00054 {double_vec_list.push_back(val);return *this;}

Here is the caller graph for this function:

void mesh_conv::MC_double_vector_vector::assert_bounds ( const int &  u  )  const [inline]

Assert the value stays within the bounds.

Returns:
nothing, but stop the programm if it goes outside bounds

Definition at line 22 of file MC_double_vector_vector.cpp.

References double_vec_list.

Referenced by operator()(), and operator[]().

00023     {
00024         if(u<0 || u>=int(double_vec_list.size()))
00025         {std::cout<<"Assert mesh_conv::MC_double_vector_vector::assert_bounds("<<u<<") failed, because size="<<double_vec_list.size()<<std::endl;}
00026     }

Here is the caller graph for this function:

void mesh_conv::MC_double_vector_vector::clear (  ) 

clear the vector to size 0

Definition at line 41 of file MC_double_vector_vector.cpp.

References double_vec_list.

00041 {double_vec_list.clear();}

std::pair< MC_double_vector_vector, MC_double_vector_vector > mesh_conv::MC_double_vector_vector::delete_index ( const MC_int_vector index_to_delete  )  const

delete the k_th value

Warning:
, this is internaly slow

return <the new vector,the deleted value>

Definition at line 100 of file MC_double_vector_vector.cpp.

References add(), double_vec_list, size(), and mesh_conv::MC_int_vector::to_set().

00101     {
00102         std::set <int> set_index=index_to_delete.to_set();
00103         MC_double_vector_vector new_vec;
00104         MC_double_vector_vector deleted_vec;
00105         int N=size();
00106         for(int k=0;k<N;k++)
00107         {
00108             if(set_index.find(k)!=set_index.end())
00109                 new_vec.add(double_vec_list[k]);
00110             else
00111                 deleted_vec.add(double_vec_list[k]);
00112         }
00113         return std::pair <MC_double_vector_vector,MC_double_vector_vector> (new_vec,deleted_vec);
00114     }

Here is the call graph for this function:

std::pair< MC_double_vector_vector, MC_double_vector > mesh_conv::MC_double_vector_vector::delete_index ( const int &  index_to_delete  )  const

delete the k_th value

Warning:
, this is internaly slow

return <the new vector, the deleted value>

Definition at line 89 of file MC_double_vector_vector.cpp.

References add(), double_vec_list, and size().

00090     {
00091         if(index_to_delete<0 || index_to_delete>=size())
00092         {std::cout<<"Error in MC_double_vector_vector::delete("<<index_to_delete<<", when size="<<size()<<std::endl;exit(-1);}
00093         MC_double_vector_vector new_vec;
00094         int N=size();
00095         for(int k=0;k<N;++k)
00096             if(k!=index_to_delete)
00097                 new_vec.add(double_vec_list[k]);
00098         return std::pair <MC_double_vector_vector,MC_double_vector>(new_vec,double_vec_list[index_to_delete]);
00099     }

Here is the call graph for this function:

MC_double_vector_vector mesh_conv::MC_double_vector_vector::empty ( const int &  N  )  [static]

create an empty vector of size N

Definition at line 214 of file MC_double_vector_vector.cpp.

References resize().

Referenced by mesh_conv::MC_mesh_index_vector::barycentric_coordinates().

00215     {
00216         MC_double_vector_vector vec;vec.resize(N);
00217         return vec;
00218     }

Here is the call graph for this function:

Here is the caller graph for this function:

MC_double_vector & mesh_conv::MC_double_vector_vector::first (  ) 

return the first value

Definition at line 137 of file MC_double_vector_vector.cpp.

References double_vec_list, and size().

00138     {
00139         if(size()>0)
00140             return double_vec_list[0];
00141         else
00142         {
00143             std::cout<<"Error, call MC_double_vector_vector::first() with size=0"<<std::endl;exit(-1);
00144             exit(-1);
00145         }
00146     }

Here is the call graph for this function:

const MC_double_vector & mesh_conv::MC_double_vector_vector::first (  )  const

return the first value

Definition at line 127 of file MC_double_vector_vector.cpp.

References double_vec_list, and size().

Referenced by set().

00128     {
00129         if(size()>0)
00130             return double_vec_list[0];
00131         else
00132         {
00133             std::cout<<"Error, call MC_double_vector_vector::first() with size=0"<<std::endl;exit(-1);
00134             exit(-1);
00135         }
00136     }

Here is the call graph for this function:

Here is the caller graph for this function:

MC_double_vector & mesh_conv::MC_double_vector_vector::last (  ) 

return the last value

Definition at line 154 of file MC_double_vector_vector.cpp.

References double_vec_list, and size().

00155     {
00156         if(size()>0)
00157             return double_vec_list[size()-1];
00158         else
00159         {std::cout<<"Error, call MC_double_vector::last() with size=0"<<std::endl;exit(-1);}
00160     }

Here is the call graph for this function:

const MC_double_vector & mesh_conv::MC_double_vector_vector::last (  )  const

return the last value

Definition at line 147 of file MC_double_vector_vector.cpp.

References double_vec_list, and size().

00148     {
00149         if(size()>0)
00150             return double_vec_list[size()-1];
00151         else
00152         {std::cout<<"Error, call MC_double_vector::last() with size=0"<<std::endl;exit(-1);}
00153     }

Here is the call graph for this function:

MC_double_vector_vector mesh_conv::MC_double_vector_vector::operator() ( const MC_int_vector index  )  const

get a set of value

Definition at line 198 of file MC_double_vector_vector.cpp.

References double_vec_list, resize(), mesh_conv::MC_int_vector::size(), and size().

00199     {
00200         int N=size();
00201         int N2=index.size();
00202         MC_double_vector_vector new_vec;new_vec.resize(N2);
00203         for(int k=0;k<N2;++k)
00204         {
00205             if(index[k]<0 || index[k]>N)
00206             {std::cout<<"Error in MC_double_vector_vector::operator()(MC_double_vector), value index["<<k<<"]="<<index[k]<<" not correct for size="<<N<<std::endl;exit(-1);}
00207             new_vec[k]=double_vec_list[index[k]];
00208         }
00209         return new_vec;
00210     }

Here is the call graph for this function:

MC_double_vector & mesh_conv::MC_double_vector_vector::operator() ( const int &  index  ) 

get operator with bounds checks

Definition at line 30 of file MC_double_vector_vector.cpp.

References assert_bounds(), and double_vec_list.

00031     {assert_bounds(index);return double_vec_list[index];}

Here is the call graph for this function:

const MC_double_vector & mesh_conv::MC_double_vector_vector::operator() ( const int &  index  )  const

get operator with bounds checks

Definition at line 28 of file MC_double_vector_vector.cpp.

References assert_bounds(), and double_vec_list.

00029     {assert_bounds(index);return double_vec_list[index];}

Here is the call graph for this function:

MC_double_vector_vector mesh_conv::MC_double_vector_vector::operator[] ( const MC_int_vector index  )  const

get a set of value

Definition at line 211 of file MC_double_vector_vector.cpp.

00212     {return (*this)(index);}

MC_double_vector & mesh_conv::MC_double_vector_vector::operator[] ( const int &  index  ) 

get operator with bounds asserts

Definition at line 34 of file MC_double_vector_vector.cpp.

References assert_bounds(), and double_vec_list.

00035     {assert_bounds(index);return double_vec_list[index];}

Here is the call graph for this function:

const MC_double_vector & mesh_conv::MC_double_vector_vector::operator[] ( const int &  index  )  const

get operator with bounds asserts

Definition at line 32 of file MC_double_vector_vector.cpp.

References assert_bounds(), and double_vec_list.

00033     {assert_bounds(index);return double_vec_list[index];}

Here is the call graph for this function:

const MC_double_vector * mesh_conv::MC_double_vector_vector::pointer (  )  const

get pointer on internal data

Definition at line 195 of file MC_double_vector_vector.cpp.

References double_vec_list.

00195 {return &double_vec_list[0];}

MC_double_vector * mesh_conv::MC_double_vector_vector::pointer_unprotected (  ) 

get pointer on internal data

Warning:
unprotected

Definition at line 196 of file MC_double_vector_vector.cpp.

References double_vec_list.

00196 {return &double_vec_list[0];}

MC_double_vector_vector mesh_conv::MC_double_vector_vector::repeat ( const MC_double_vector input,
const int &  N_repeat 
) [static]

repeat a MC_int_vector a certain amount of time

ex. MC_int_vector_vector d=MC_int_vector_vectorrepeat(MC_int_vector(4,5,6),3) = [[4,5,6];[4,5,6];[4,5,6]];

Definition at line 116 of file MC_double_vector_vector.cpp.

References add().

Referenced by set().

00117     {
00118         if(N_repeat<0)
00119         {std::cout<<"Error in MC_double_vector_vector::repeat(MC_double_vector,"<<N_repeat<<"), repeat number must be >0"<<std::endl;exit(-1);}
00120 
00121         MC_double_vector_vector vec(input);
00122         for(int k=1;k<N_repeat;++k)
00123             vec.add(input);
00124         return vec;
00125     }

Here is the call graph for this function:

Here is the caller graph for this function:

MC_double_vector_vector & mesh_conv::MC_double_vector_vector::resize ( const int &  new_size  ) 

resize the vector in deleting value of adding zeros

Returns:
the new value

Definition at line 42 of file MC_double_vector_vector.cpp.

References double_vec_list.

Referenced by empty(), operator()(), mesh_conv::operator+(), mesh_conv::operator-(), and mesh_conv::MC_curve::skinning().

00043     {
00044         int N=double_vec_list.size();
00045         if(N==new_size) //same size
00046             return *this;
00047 
00048         if(new_size<0)
00049         {std::cout<<"Error in MC_double_vector_vector::resize("<<new_size<<") new size must be >0"<<std::endl;exit(-1);}
00050 
00051         double_vec_list.resize(new_size);
00052         return *this;
00053     }

Here is the caller graph for this function:

MC_double_vector_vector & mesh_conv::MC_double_vector_vector::set ( const MC_int_vector k_index,
const MC_double_vector_vector new_value 
)

set an indexed value to a certain component. Adjust the size automatically

Returns:
the new vector

Definition at line 75 of file MC_double_vector_vector.cpp.

References first(), repeat(), mesh_conv::MC_int_vector::size(), and size().

00076     {
00077         MC_double_vector_vector v_new_value=new_value;
00078         if(new_value.size()!=1 && new_value.size()!=k_index.size())
00079         {std::cout<<"Error in MC_double_vector_vector::set(MC_int_vector,MC_double_vector_vector), size are not correct: "<<k_index.size()<<","<<new_value.size()<<std::endl;exit(-1);}
00080         if(new_value.size()==1)
00081             v_new_value=MC_double_vector_vector::repeat(new_value.first(),k_index.size());
00082 
00083 
00084         int N=v_new_value.size();
00085         for(int k=0;k<N;k++)
00086             set(k_index[k],v_new_value[k]);
00087         return *this;
00088     }

Here is the call graph for this function:

MC_double_vector_vector & mesh_conv::MC_double_vector_vector::set ( const int &  k_index,
const MC_double_vector new_value 
)

set an indexed value to a certain component. Adjust the size automatically

Returns:
the new vector

Definition at line 66 of file MC_double_vector_vector.cpp.

References double_vec_list, and size().

00067     {
00068         if(k_index<0)
00069         {std::cout<<"Error in MC_double_vector_vector::set("<<k_index<<","<<new_value<<"), index must be >0"<<std::endl;exit(-1);}
00070         if(k_index>=size())
00071             double_vec_list.resize(k_index+1);
00072         double_vec_list[k_index]=new_value;
00073         return *this;
00074     }

Here is the call graph for this function:

int mesh_conv::MC_double_vector_vector::size (  )  const

get the size of the vector

Definition at line 37 of file MC_double_vector_vector.cpp.

References double_vec_list.

Referenced by add(), delete_index(), first(), last(), operator()(), mesh_conv::operator+(), mesh_conv::operator-(), mesh_conv::operator<<(), and set().

00038     {return double_vec_list.size();}

Here is the caller graph for this function:


Friends And Related Function Documentation

MC_double_vector_vector operator+ ( const MC_double_vector_vector vec,
const double &  to_add 
) [friend]

add an int to all the entries

MC_double_vector_vector operator- ( const MC_double_vector_vector vec,
const double &  to_add 
) [friend]

substract an int to all the entries

std::ostream& operator<< ( std::ostream &  stream,
const MC_double_vector_vector input 
) [friend]
MC_double_vector_vector operator<< ( const MC_double_vector_vector vec,
const MC_double_vector_vector to_add 
) [friend]

add some values at the end of the vertex

Returns:
the new vector (copy)
MC_double_vector_vector operator<< ( const MC_double_vector_vector vec,
const MC_double_vector value 
) [friend]

add a value at the end of the vertex

Returns:
the current vector (copy)

Member Data Documentation

internal storage as a std::vector <MC_double_vector>

Definition at line 223 of file MC_double_vector_vector.hpp.

Referenced by add(), assert_bounds(), clear(), delete_index(), first(), last(), MC_double_vector_vector(), operator()(), operator[](), pointer(), pointer_unprotected(), resize(), set(), and size().


The documentation for this class was generated from the following files:

Generated on Sun Apr 18 20:24:48 2010 by  doxygen 1.6.1