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
00027 #ifndef MLN_CORE_INTERNAL_WINDOW_BASE_HH
00028 # define MLN_CORE_INTERNAL_WINDOW_BASE_HH
00029
00033
00034 # include <mln/core/concept/window.hh>
00035
00036
00037 namespace mln
00038 {
00039
00040 namespace internal
00041 {
00042
00043
00048 template <typename D, typename E>
00049 struct window_base : public Window<E>
00050 {
00051
00053 typedef D dpsite;
00054
00056 typedef mln_psite(D) psite;
00057
00059 typedef mln_site(D) site;
00060
00062 typedef psite center_t;
00063
00065
00066 bool is_neighbable_() const;
00067
00069 bool is_valid() const;
00070
00071 protected:
00072 window_base();
00073 };
00074
00075
00076 # ifndef MLN_INCLUDE_ONLY
00077
00078 template <typename D, typename E>
00079 inline
00080 window_base<D,E>::window_base()
00081 {
00082 }
00083
00084 template <typename D, typename E>
00085 inline
00086 bool
00087 window_base<D,E>::is_valid() const
00088 {
00089 return true;
00090 }
00091
00092 template <typename D, typename E>
00093 inline
00094 bool
00095 window_base<D,E>::is_neighbable_() const
00096 {
00097 return exact(this)->is_symmetric() && ! exact(this)->is_centered();
00098 }
00099
00100 # endif // ! MLN_INCLUDE_ONLY
00101
00102 }
00103
00104 }
00105
00106
00107 #endif // ! MLN_CORE_INTERNAL_WINDOW_BASE_HH