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_GRAPH_WINDOW_BASE_HH
00027 # define MLN_CORE_INTERNAL_GRAPH_WINDOW_BASE_HH
00028
00029 # include <mln/core/concept/window.hh>
00030
00034
00035 namespace mln
00036 {
00037
00039 template <typename P, typename E>
00040 class graph_window_base : public Window<E>
00041 {
00042 typedef graph_window_base<P, E> self_;
00043
00044 public:
00048 typedef P site;
00049
00050
00051 typedef void dpsite;
00053
00057 bool is_empty() const;
00059 bool is_centered() const;
00061
00062 bool is_symmetric() const;
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 unsigned delta() const;
00077 self_& sym();
00078
00080 bool is_neighbable_() const;
00082
00084 bool is_valid() const;
00085
00086 protected:
00087 graph_window_base();
00088 };
00089
00090
00091 # ifndef MLN_INCLUDE_ONLY
00092
00093
00094
00095 template <typename P, typename E>
00096 inline
00097 graph_window_base<P,E>::graph_window_base()
00098 {
00099 }
00100
00101 template <typename P, typename E>
00102 inline
00103 bool
00104 graph_window_base<P,E>::is_empty() const
00105 {
00106 return false;
00107 }
00108
00109 template <typename P, typename E>
00110 inline
00111 bool
00112 graph_window_base<P,E>::is_centered() const
00113 {
00114 return false;
00115 }
00116
00117 template <typename P, typename E>
00118 inline
00119 bool
00120 graph_window_base<P,E>::is_symmetric() const
00121 {
00122 return true;
00123 }
00124
00125 template <typename P, typename E>
00126 inline
00127 unsigned
00128 graph_window_base<P,E>::delta() const
00129 {
00130
00131 return 0;
00132 }
00133
00134 template <typename P, typename E>
00135 inline
00136 graph_window_base<P,E>&
00137 graph_window_base<P,E>::sym()
00138 {
00139 return *this;
00140 }
00141
00142 template <typename P, typename E>
00143 inline
00144 bool
00145 graph_window_base<P,E>::is_neighbable_() const
00146 {
00147 return true;
00148 }
00149
00150 template <typename P, typename E>
00151 inline
00152 bool
00153 graph_window_base<P,E>::is_valid() const
00154 {
00155 return true;
00156 }
00157
00158
00159
00160 # endif // !MLN_INCLUDE_ONLY
00161
00162 }
00163
00164 #endif // ! MLN_CORE_INTERNAL_GRAPH_WINDOW_BASE_HH