00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef MLN_CORE_INTERNAL_WINDOW_BASE_HH
00027 # define MLN_CORE_INTERNAL_WINDOW_BASE_HH
00028
00032
00033 # include <mln/core/concept/window.hh>
00034
00035
00036 namespace mln
00037 {
00038
00039 namespace internal
00040 {
00041
00042
00047 template <typename D, typename E>
00048 struct window_base : public Window<E>
00049 {
00050
00052 typedef D dpsite;
00053
00055 typedef mln_psite(D) psite;
00056
00058 typedef mln_site(D) site;
00059
00061
00062 bool is_neighbable_() const;
00063
00065 bool is_valid() const;
00066
00067 protected:
00068 window_base();
00069 };
00070
00071
00072 # ifndef MLN_INCLUDE_ONLY
00073
00074 template <typename D, typename E>
00075 inline
00076 window_base<D,E>::window_base()
00077 {
00078 }
00079
00080 template <typename D, typename E>
00081 inline
00082 bool
00083 window_base<D,E>::is_valid() const
00084 {
00085 return true;
00086 }
00087
00088 template <typename D, typename E>
00089 inline
00090 bool
00091 window_base<D,E>::is_neighbable_() const
00092 {
00093 return exact(this)->is_symmetric() && ! exact(this)->is_centered();
00094 }
00095
00096 # endif // ! MLN_INCLUDE_ONLY
00097
00098 }
00099
00100 }
00101
00102
00103 #endif // ! MLN_CORE_INTERNAL_WINDOW_BASE_HH