• Main Page
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

/export/development/ViennaGrid/release/ViennaGrid-1.0.0/viennagrid/traits/container.hpp

Go to the documentation of this file.
00001 #ifndef VIENNAGRID_TRAITS_CONTAINER_HPP
00002 #define VIENNAGRID_TRAITS_CONTAINER_HPP
00003 
00004 /* =======================================================================
00005    Copyright (c) 2011, Institute for Microelectronics,
00006                        Institute for Analysis and Scientific Computing,
00007                        TU Wien.
00008 
00009                             -----------------
00010                      ViennaGrid - The Vienna Grid Library
00011                             -----------------
00012 
00013    Authors:      Karl Rupp                           rupp@iue.tuwien.ac.at
00014                  Josef Weinbub                    weinbub@iue.tuwien.ac.at
00015                
00016    (A list of additional contributors can be found in the PDF manual)
00017 
00018    License:      MIT (X11), see file LICENSE in the base directory
00019 ======================================================================= */
00020 
00021 
00022 #include <vector>
00023 #include <limits>
00024 #include "viennagrid/forwards.h"
00025 
00030 namespace viennagrid 
00031 {
00032   
00034   namespace traits
00035   {
00036     
00038     template <typename T>
00039     void reserve(T & t, std::size_t new_size)
00040     {
00041       //by default, no need to do anything.
00042     }
00043     
00045     template <typename T, typename A>
00046     void reserve(std::vector<T, A> & vec, std::size_t new_size)
00047     {
00048       vec.reserve(new_size);
00049     }
00050 
00051 
00053     template <typename T>
00054     void resize(T & t, std::size_t new_size)
00055     {
00056       //by default, no need to do anything.
00057     }
00058     
00060     template <typename T, typename A>
00061     void resize(std::vector<T, A> & vec, std::size_t new_size)
00062     {
00063       vec.resize(new_size);
00064     }
00065 
00066 
00068     template <typename T>
00069     std::size_t size(T & t)
00070     {
00071       //by default, a member function .size() is expected:
00072       return t.size();
00073     }
00074     
00076     template <typename T>
00077     std::size_t capacity(T & t)
00078     {
00079       return std::numeric_limits<std::size_t>::max();
00080     }
00081     
00083     template <typename T, typename A>
00084     std::size_t capacity(std::vector<T, A> & vec, std::size_t new_size)
00085     {
00086       return vec.capacity();
00087     }
00088 
00089 
00090   }
00091 } 
00092 
00093 #endif

Generated on Wed Sep 14 2011 19:21:30 for ViennaGrid by  doxygen 1.7.1