DGtal  1.5.beta
SetValueIterator.h
1 
17 #pragma once
18 
31 #if defined(SetValueIterator_RECURSES)
32 #error Recursive header files inclusion detected in SetValueIterator.h
33 #else // defined(SetValueIterator_RECURSES)
35 #define SetValueIterator_RECURSES
36 
37 #if !defined SetValueIterator_h
39 #define SetValueIterator_h
40 
42 // Inclusions
43 #include "DGtal/base/Common.h"
44 #include "DGtal/kernel/domains/CDomain.h"
45 #include "DGtal/images/CTrivialImage.h"
46 
47 #include <iostream>
48 
50 
51 namespace DGtal
52 {
53 
55  // template class SetValueIterator
65  template <typename TImage, typename TIteratorOnPts
68  {
69  // ----------------------- Types definitions ------------------------------
70  public:
71 
72  using iterator_category = std::output_iterator_tag;
73  using value_type = void;
74  using difference_type = void;
75  using pointer = void;
76  using reference = void;
77 
78  typedef TImage Image;
80 
81 
82  // ----------------------- Standard services ------------------------------
83  public:
89  SetValueIterator(const TIteratorOnPts& aItOnPts, Image &aImg)
90 : myImg(&aImg), myItOnPts(aItOnPts) {}
91 
98 : myImg(&aImg), myItOnPts(myImg->domain().begin()) {}
99 
105 : myImg(other.myImg), myItOnPts(other.myItOnPts) {}
106 
111 
112  // ----------------------- Interface --------------------------------------
113  public:
114 
120  SetValueIterator& operator=(const typename Image::Value& aValue)
121  {
122  myImg->setValue( *myItOnPts, aValue );
123  return *this;
124  }
125 
130  SetValueIterator& operator*() { return *this; }
131 
136  SetValueIterator& operator++() { ++myItOnPts; return *this; }
137 
143  {
144  SetValueIterator tmp = *this;
145  ++myItOnPts;
146  return tmp;
147  }
148 
149 
150  // ------------------------- Private Datas --------------------------------
151  private:
152 
153  // ------------------------- Hidden services ------------------------------
154  protected:
155 
156 
157  private:
158 
159 
160  // ------------------------- Internals ------------------------------------
161  private:
162 
167 
171  TIteratorOnPts myItOnPts;
172 
173  }; // end of class SetValueIterator
174 
175 }
177 // Includes inline functions.
178 //#include "DGtal/images/SetValueIterator.ih"
179 
180 //
182 
183 #endif // !defined SetValueIterator_h
184 
185 #undef SetValueIterator_RECURSES
186 #endif // else defined(SetValueIterator_RECURSES)
Aim: implements an output iterator, which is able to write values in an underlying image,...
std::output_iterator_tag iterator_category
BOOST_CONCEPT_ASSERT((concepts::CTrivialImage< Image >))
SetValueIterator(const SetValueIterator &other)
SetValueIterator & operator++()
SetValueIterator & operator*()
SetValueIterator(const TIteratorOnPts &aItOnPts, Image &aImg)
SetValueIterator & operator=(const typename Image::Value &aValue)
SetValueIterator operator++(int)
MyDigitalSurface::ConstIterator ConstIterator
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: Defines the concept describing an image without extra ranges, which is a refinement of CTrivialC...
Definition: CTrivialImage.h:85
Domain domain