mlpack
delete_visitor_impl.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_METHODS_ANN_VISITOR_DELETE_VISITOR_IMPL_HPP
13 #define MLPACK_METHODS_ANN_VISITOR_DELETE_VISITOR_IMPL_HPP
14 
15 // In case it hasn't been included yet.
16 #include "delete_visitor.hpp"
17 
18 namespace mlpack {
19 namespace ann {
20 
22 template<typename LayerType>
23 inline typename std::enable_if<
24  !HasModelCheck<LayerType>::value, void>::type
25 DeleteVisitor::operator()(LayerType* layer) const
26 {
27  if (layer)
28  delete layer;
29 }
30 
31 template<typename LayerType>
32 inline typename std::enable_if<
33  HasModelCheck<LayerType>::value, void>::type
34 DeleteVisitor::operator()(LayerType* layer) const
35 {
36  if (layer)
37  {
38  for (size_t i = 0; i < layer->Model().size(); ++i)
39  boost::apply_visitor(DeleteVisitor(), layer->Model()[i]);
40 
41  delete layer;
42  }
43 }
44 
45 inline void DeleteVisitor::operator()(MoreTypes layer) const
46 {
47  layer.apply_visitor(*this);
48 }
49 
50 } // namespace ann
51 } // namespace mlpack
52 
53 #endif
DeleteVisitor executes the destructor of the instantiated object.
Definition: delete_visitor.hpp:27
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
std::enable_if< !HasModelCheck< LayerType >::value, void >::type operator()(LayerType *layer) const
Execute the destructor if the layer does not hold layers internally.
Definition: delete_visitor_impl.hpp:25