Milena (Olena)
User documentation 2.0a Id
|
00001 // Copyright (C) 2008, 2009 EPITA Research and Development Laboratory (LRDE) 00002 // 00003 // This file is part of Olena. 00004 // 00005 // Olena is free software: you can redistribute it and/or modify it under 00006 // the terms of the GNU General Public License as published by the Free 00007 // Software Foundation, version 2 of the License. 00008 // 00009 // Olena is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU General Public License 00015 // along with Olena. If not, see <http://www.gnu.org/licenses/>. 00016 // 00017 // As a special exception, you may use this file as part of a free 00018 // software project without restriction. Specifically, if other files 00019 // instantiate templates or use macros or inline functions from this 00020 // file, or you compile this file and link it with other files to produce 00021 // an executable, this file does not by itself cause the resulting 00022 // executable to be covered by the GNU General Public License. This 00023 // exception does not however invalidate any other reasons why the 00024 // executable file might be covered by the GNU General Public License. 00025 00026 #ifndef MLN_CORE_INTERNAL_COMPLEX_WINDOW_P_BASE_HH 00027 # define MLN_CORE_INTERNAL_COMPLEX_WINDOW_P_BASE_HH 00028 00033 00034 # include <mln/core/internal/complex_window_base.hh> 00035 00036 # include <mln/topo/centered_iter_adapter.hh> 00037 00038 00039 00040 namespace mln 00041 { 00042 00043 namespace internal 00044 { 00045 template <unsigned D, typename G, typename F, typename B, typename E> 00046 class complex_window_p_base; 00047 } 00048 00049 00050 namespace trait 00051 { 00052 00053 template <unsigned D, typename G, typename F, typename B, typename E> 00054 struct window_< mln::internal::complex_window_p_base<D, G, F, B, E> > 00055 : window_< mln::internal::complex_window_base 00056 < D, G, 00057 mln::topo::centered_fwd_iter_adapter<D, F>, 00058 mln::topo::centered_bkd_iter_adapter<D, B>, 00059 E > > 00060 { 00061 }; 00062 00063 } // end of namespace mln::trait 00064 00065 00066 namespace internal 00067 { 00077 template <unsigned D, typename G, typename F, typename B, typename E> 00078 class complex_window_p_base 00079 : public complex_window_base 00080 < D, G, 00081 mln::topo::centered_fwd_iter_adapter<D, F>, 00082 mln::topo::centered_bkd_iter_adapter<D, B>, 00083 E > 00084 { 00085 typedef complex_window_base< D, G, 00086 topo::centered_fwd_iter_adapter<D, F>, 00087 topo::centered_bkd_iter_adapter<D, B>, 00088 E > super; 00089 00090 public: 00091 complex_window_p_base(); 00092 }; 00093 00094 00095 00096 # ifndef MLN_INCLUDE_ONLY 00097 00098 template <unsigned D, typename G, typename F, typename B, typename E> 00099 complex_window_p_base<D, G, F, B, E>::complex_window_p_base() 00100 : super(true) 00101 { 00102 } 00103 00104 # endif // ! MLN_INCLUDE_ONLY 00105 00106 } // end of namespace mln::internal 00107 00108 } // end of namespace mln 00109 00110 #endif // ! MLN_CORE_INTERNAL_COMPLEX_WINDOW_P_BASE_HH