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_IMAGE_VALUE_MORPHER_HH
00027 # define MLN_CORE_INTERNAL_IMAGE_VALUE_MORPHER_HH
00028
00037 # include <mln/core/internal/image_morpher.hh>
00038
00039
00040 namespace mln
00041 {
00042
00043 namespace internal
00044 {
00045
00046
00047
00052 template <typename I, typename T, typename E>
00053 class image_value_morpher : public image_morpher<I, T, mln_domain(I), E>
00054 {
00055 public:
00056
00057 const mln_domain(I)& domain() const;
00058 bool has(const mln_psite(I)& p) const;
00059
00060 protected:
00061 image_value_morpher();
00062 };
00063
00064
00065 # ifndef MLN_INCLUDE_ONLY
00066
00067 template <typename I, typename T, typename E>
00068 inline
00069 image_value_morpher<I,T,E>::image_value_morpher()
00070 {
00071 }
00072
00073 template <typename I, typename T, typename E>
00074 inline
00075 const mln_domain(I)&
00076 image_value_morpher<I,T,E>::domain() const
00077 {
00078 mln_precondition(this->delegatee_() != 0);
00079 return this->delegatee_()->domain();
00080 }
00081
00082 template <typename I, typename T, typename E>
00083 inline
00084 bool
00085 image_value_morpher<I,T,E>::has(const mln_psite(I)& p) const
00086 {
00087 mln_precondition(this->delegatee_() != 0);
00088 return this->delegatee_()->has(p);
00089 }
00090
00091 # endif // ! MLN_INCLUDE_ONLY
00092
00093 }
00094
00095 }
00096
00097
00098 #endif // ! MLN_CORE_INTERNAL_IMAGE_VALUE_MORPHER_HH