MC_double_vector_vector.hpp

Go to the documentation of this file.
00001 
00002 /*
00003 **    Mesh Converter
00004 **    Copyright (C) 2008 Damien Rohmer
00005 **
00006 **    This program is free software: you can redistribute it and/or modify
00007 **    it under the terms of the GNU General Public License as published by
00008 **    the Free Software Foundation, either version 3 of the License, or
00009 **    (at your option) any later version.
00010 **
00011 **   This program is distributed in the hope that it will be useful,
00012 **    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 **    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 **    GNU General Public License for more details.
00015 **
00016 **    You should have received a copy of the GNU General Public License
00017 **    along with this program.  If not, see <http://www.gnu.org/licenses/>.
00018 */
00019 
00020 
00021 #ifndef _MC_DOUBLE_VECTOR_VECTOR_HPP_
00022 #define _MC_DOUBLE_VECTOR_VECTOR_HPP_
00023 
00024 #include <MC_double_vector.hpp>
00025 
00026 #include <stdlib.h>
00027 #include <vector>
00028 #include <list>
00029 
00030 namespace mesh_conv
00031 {
00035     class MC_double_vector_vector
00036     {
00037     public:
00038 
00039         //************************************************//
00040         //************************************************//
00041         //CONSTRUCTORS
00042         //************************************************//
00043         //************************************************//
00044 
00046         MC_double_vector_vector();
00048         MC_double_vector_vector(const MC_double_vector& v0);
00050         MC_double_vector_vector(const MC_double_vector& v0,const MC_double_vector& v1);
00052         MC_double_vector_vector(const MC_double_vector& v0,const MC_double_vector& v1,const MC_double_vector& v2);
00054         MC_double_vector_vector(const MC_double_vector& v0,const MC_double_vector& v1,const MC_double_vector& v2,const MC_double_vector& v3);
00055 
00057         MC_double_vector_vector(const std::list <MC_double_vector>& vec);
00059         MC_double_vector_vector(const std::vector <MC_double_vector>& vec);
00060 
00061         //************************************************//
00062         //************************************************//
00063         //Asserts
00064         //************************************************//
00065         //************************************************//
00066 
00070         void assert_bounds(const int& u) const;
00071 
00072 
00073         //************************************************//
00074         //************************************************//
00075         //Informations
00076         //************************************************//
00077         //************************************************//
00078 
00080         int size() const;
00081 
00082 
00083 
00084 
00085 
00086         //************************************************//
00087         //************************************************//
00088         //Manipulation
00089         //************************************************//
00090         //************************************************//
00091 
00093         void clear();
00094 
00098         MC_double_vector_vector& resize(const int& new_size);
00099 
00103         MC_double_vector_vector& add(const MC_double_vector& val);
00107         friend MC_double_vector_vector operator<<(const MC_double_vector_vector& vec,const MC_double_vector& value);
00108 
00109 
00113         MC_double_vector_vector& add(const MC_double_vector_vector& val);
00117         friend MC_double_vector_vector operator<<(const MC_double_vector_vector& vec,const MC_double_vector_vector& to_add);
00118 
00122         MC_double_vector_vector& set(const int& k_index,const MC_double_vector& new_value);
00126         MC_double_vector_vector& set(const MC_int_vector& k_index,const MC_double_vector_vector& new_value);
00127 
00133         std::pair <MC_double_vector_vector,MC_double_vector> delete_index(const int& index_to_delete) const;
00139         std::pair <MC_double_vector_vector,MC_double_vector_vector> delete_index(const MC_int_vector& index_to_delete) const;
00140 
00142         static MC_double_vector_vector empty(const int& N);
00143 
00144         //************************************************//
00145         //************************************************//
00146         //Math operator
00147         //************************************************//
00148         //************************************************//
00149 
00151         friend MC_double_vector_vector operator+(const MC_double_vector_vector& vec,const double& to_add);
00153         friend MC_double_vector_vector operator-(const MC_double_vector_vector& vec,const double& to_add);
00154 
00155 
00156         //************************************************//
00157         //************************************************//
00158         //Static initialization
00159         //************************************************//
00160         //************************************************//
00161 
00166         static MC_double_vector_vector repeat(const MC_double_vector& input,const int& N_repeat);
00167 
00168         //************************************************//
00169         //************************************************//
00170         //Get value
00171         //************************************************//
00172         //************************************************//
00173 
00175         const MC_double_vector& operator()(const int& index) const ;
00177         MC_double_vector& operator()(const int& index) ;
00179         const MC_double_vector& operator[](const int& index) const ;
00181         MC_double_vector& operator[](const int& index) ;
00182 
00183 
00184 
00186         MC_double_vector_vector operator()(const MC_int_vector& index) const;
00188         MC_double_vector_vector operator[](const MC_int_vector& index) const;
00189 
00190 
00191 
00192 
00194         const MC_double_vector& first() const;
00196         MC_double_vector& first();
00198         const MC_double_vector& last() const;
00200         MC_double_vector& last();
00201 
00203         const MC_double_vector* pointer() const;
00207         MC_double_vector* pointer_unprotected();
00208 
00209 
00210 
00211 
00212         //************************************************//
00213         //************************************************//
00214         //Input/Output
00215         //************************************************//
00216         //************************************************//
00217 
00218         friend std::ostream& operator<<(std::ostream& stream,const MC_double_vector_vector& input);
00219 
00220     private:
00221 
00223         std::vector <MC_double_vector> double_vec_list;
00224     };
00225 }
00226 
00227 #endif

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