DGtal 1.3.0
Loading...
Searching...
No Matches
CDigitalSet.h
1
17#pragma once
18
35#if defined(CDigitalSet_RECURSES)
36#error Recursive header files inclusion detected in CDigitalSet.h
37#else // defined(CDigitalSet_RECURSES)
39#define CDigitalSet_RECURSES
40
41#if !defined CDigitalSet_h
43#define CDigitalSet_h
44
46// Inclusions
47#include <iostream>
48#include "boost/concept_check.hpp"
49#include "DGtal/base/Common.h"
50#include "DGtal/base/CowPtr.h"
51#include "DGtal/kernel/CPointPredicate.h"
52#include "DGtal/kernel/domains/CDomain.h"
54
55namespace DGtal
56{
57 namespace concepts
58 {
60 // class CDigitalSet
62 // class CDigitalSet
137 template <typename T>
138 struct CDigitalSet :
141 {
142 // ----------------------- Concept checks ------------------------------
143 public:
144 // 1. define first provided types (i.e. inner types), like
145 typedef typename T::Domain Domain;
146 typedef typename T::Point Point;
147 typedef typename T::Size Size;
148 typedef typename T::Iterator Iterator;
149 typedef typename T::ConstIterator ConstIterator;
150
154
155 // 2. then check the presence of data members, operators and methods with
157 {
160 }
165 {
167 ConceptUtils::sameType( myDomainPtr, myX.domainPointer() );
170
174 }
175
180 {
181 myX.insert( myPoint );
182 // template <typename PointInputIterator>
183 // BOOST_CONCEPT_REQUIRES
184 // ( ((boost::InputIterator<PointInputIterator>)),
185 // (void) )
186 // myX.insert( PointInputIterator, PointInputIterator );
187 myX.insertNew( myPoint );
189 myX.erase( myIterator );
190 myX.erase( myIterator, myIterator );
191 myX.clear();
192 ConceptUtils::sameType( myX, myX.operator+=( myX ) );
193 myX.computeComplement( myOutputIt );
194 myX.assignFromComplement( myX );
195 myX.computeBoundingBox( myPoint, myPoint );
199 }
200
201 // ------------------------- Private Datas --------------------------------
202 private:
203 T myX; // only if T is default constructible.
207 bool myBool;
212 // ------------------------- Internals ------------------------------------
213 private:
214
215 }; // end of concept CDigitalSet
216 }
217} // namespace DGtal
218
219// //
221
222#endif // !defined CDigitalSet_h
223
224#undef CDigitalSet_RECURSES
225#endif // else defined(CDigitalSet_RECURSES)
Aim: Copy on write shared pointer.
Definition: CowPtr.h:68
void sameType(const T &, const T &)
Definition: ConceptUtils.h:117
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: Represents a set of points within the given domain. This set of points is modifiable by the user...
Definition: CDigitalSet.h:141
BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept< ConstIterator >))
BOOST_CONCEPT_ASSERT((boost_concepts::SinglePassIteratorConcept< ConstIterator >))
void checkConstConstraints() const
Definition: CDigitalSet.h:164
BOOST_CONCEPT_USAGE(CDigitalSet)
Definition: CDigitalSet.h:156
CowPtr< Domain > myDomainPtr
Definition: CDigitalSet.h:205
T::ConstIterator ConstIterator
Definition: CDigitalSet.h:149
BOOST_CONCEPT_ASSERT((concepts::CDomain< Domain >))
Aim: This concept represents a digital domain, i.e. a non mutable subset of points of the given digit...
Definition: CDomain.h:130
Aim: Defines a predicate on a point.
Go to http://www.sgi.com/tech/stl/CopyConstructible.html.
Definition: Boost.dox:34
Go to http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/ReadableIterator.html.
Go to http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/SinglePassIterator.html.