mlpack
delete_allocated_memory.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_BINDINGS_CLI_DELETE_ALLOCATED_MEMORY_HPP
13 #define MLPACK_BINDINGS_CLI_DELETE_ALLOCATED_MEMORY_HPP
14 
16 
17 namespace mlpack {
18 namespace bindings {
19 namespace cli {
20 
21 template<typename T>
22 void DeleteAllocatedMemoryImpl(
23  util::ParamData& /* d */,
24  const typename std::enable_if<!data::HasSerialize<T>::value>::type* = 0,
25  const typename std::enable_if<!arma::is_arma_type<T>::value>::type* = 0)
26 {
27  // Do nothing.
28 }
29 
30 template<typename T>
31 void DeleteAllocatedMemoryImpl(
32  util::ParamData& /* d */,
33  const typename std::enable_if<arma::is_arma_type<T>::value>::type* = 0)
34 {
35  // Do nothing.
36 }
37 
38 template<typename T>
39 void DeleteAllocatedMemoryImpl(
40  util::ParamData& d,
41  const typename std::enable_if<!arma::is_arma_type<T>::value>::type* = 0,
42  const typename std::enable_if<data::HasSerialize<T>::value>::type* = 0)
43 {
44  // Delete the allocated memory (hopefully we actually own it).
45  typedef std::tuple<T*, std::string> TupleType;
46  delete std::get<0>(*boost::any_cast<TupleType>(&d.value));
47 }
48 
49 template<typename T>
50 void DeleteAllocatedMemory(
51  util::ParamData& d,
52  const void* /* input */,
53  void* /* output */)
54 {
55  DeleteAllocatedMemoryImpl<typename std::remove_pointer<T>::type>(d);
56 }
57 
58 } // namespace cli
59 } // namespace bindings
60 } // namespace mlpack
61 
62 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1