DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
DigitalSetDomain.h
1 
17 #pragma once
18 
31 #if defined(DigitalSetDomain_RECURSES)
32 #error Recursive header files inclusion detected in DigitalSetDomain.h
33 #else // defined(DigitalSetDomain_RECURSES)
34 
35 #define DigitalSetDomain_RECURSES
36 
37 #if !defined DigitalSetDomain_h
38 
39 #define DigitalSetDomain_h
40 
42 // Inclusions
43 #include <iostream>
44 #include "DGtal/base/Common.h"
45 #include "DGtal/kernel/NumberTraits.h"
46 #include "DGtal/kernel/sets/SetPredicate.h"
48 
49 namespace DGtal
50 {
51 
53  // template class DigitalSetDomain
58  template <typename TDigitalSet>
60  {
61  // ----------------------- associated types -------------------------------
62  public:
63  typedef TDigitalSet DigitalSet;
64  typedef typename DigitalSet::Domain Domain;
65  typedef typename Domain::Space Space;
66  typedef typename Domain::Integer Integer;
68  typedef typename Domain::Point Point;
69  typedef typename Domain::Vector Vector;
70  typedef typename Domain::Size Size;
71  typedef typename Domain::Dimension Dimension;
72  typedef typename DigitalSet::ConstIterator ConstIterator;
74  // ----------------------- Standard services ------------------------------
75  public:
76 
81 
86  DigitalSetDomain ( const DigitalSet & aSet );
87 
88 
93  DigitalSetDomain ( const DigitalSetDomain & other );
94 
95  // ----------------------- Domain services --------------------------------
96  public:
97 
102  ConstIterator begin(const Point &aPoint) const;
103 
107  ConstIterator begin() const;
108 
112  ConstIterator end() const;
113 
118  const Point &lowerBound() const;
119 
124  const Point &upperBound() const ;
125 
130  Size size() const ;
131 
136  bool isInside( const Point & p ) const;
137 
141  const Predicate & predicate() const;
142 
143 
144  // ----------------------- Interface --------------------------------------
145  public:
146 
151  void selfDisplay ( std::ostream & out ) const;
152 
157  bool isValid() const;
158 
159  // ------------------------- Protected Datas ------------------------------
160  private:
161  // ------------------------- Private Datas --------------------------------
162  private:
163 
167  const DigitalSet & mySet;
168 
173 
178 
181 
182  // ------------------------- Hidden services ------------------------------
183  protected:
184 
190 
191  private:
192 
199  DigitalSetDomain & operator= ( const DigitalSetDomain & other );
200 
201  // ------------------------- Internals ------------------------------------
202  private:
203 
204 
205  }; // end of class DigitalSetDomain
206 
207 
214  template <typename T>
215  std::ostream&
216  operator<< ( std::ostream & out, const DigitalSetDomain<T> & object );
217 
218 } // namespace DGtal
219 
220 
222 // Includes inline functions.
223 #include "DGtal/kernel/sets/DigitalSetDomain.ih"
224 
225 // //
227 
228 #endif // !defined DigitalSetDomain_h
229 
230 #undef DigitalSetDomain_RECURSES
231 #endif // else defined(DigitalSetDomain_RECURSES)