16 #ifndef dealii__memory_consumption_h 17 #define dealii__memory_consumption_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/std_cxx11/shared_ptr.h> 22 #include <deal.II/base/std_cxx11/type_traits.h> 23 #include <deal.II/base/std_cxx11/unique_ptr.h> 31 DEAL_II_NAMESPACE_OPEN
100 typename std_cxx11::enable_if<std_cxx11::is_fundamental<T>::value, std::size_t>::type
109 template <
typename T>
111 typename std_cxx11::enable_if<!(std_cxx11::is_fundamental<T>::value || std_cxx11::is_pointer<T>::value), std::size_t>::type
112 memory_consumption (
const T &t);
127 template <
typename T>
135 template <
typename T>
173 template <
typename T>
185 template <
typename T,
int N>
203 template <
typename A,
typename B>
226 template <
typename T>
235 template <
typename T>
246 template <
typename T>
248 typename std_cxx11::enable_if<std_cxx11::is_fundamental<T>::value, std::size_t>::type
265 return sizeof(char)*(strlen(
string) + 1);
271 template <
typename T>
275 return sizeof(std::complex<T>);
280 template <
typename T>
292 return sizeof(s) + s.length();
297 template <
typename T>
301 if (std_cxx11::is_fundamental<T>::value || std_cxx11::is_pointer<T>::value)
303 return v.capacity()*
sizeof(T) +
sizeof(v);
307 std::size_t mem =
sizeof(std::vector<T>);
308 for (
unsigned int i=0; i<v.size(); ++i)
312 mem += (v.capacity() - v.size())*
sizeof(T);
319 template <
typename T,
int N>
323 for (
unsigned int i=0; i<N; ++i)
333 return v.capacity() / 8 +
sizeof(v);
338 template <
typename A,
typename B>
358 template <
typename T>
363 return sizeof(std_cxx11::shared_ptr<T>);
368 template <
typename T>
373 return sizeof(std_cxx11::unique_ptr<T>);
378 template <
typename T>
380 typename std_cxx11::enable_if<!(std_cxx11::is_fundamental<T>::value || std_cxx11::is_pointer<T>::value), std::size_t>::type
383 return t.memory_consumption();
387 DEAL_II_NAMESPACE_CLOSE
std_cxx11::enable_if< std_cxx11::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)