DGtal
1.3.beta
src
DGtal
topology
CDigitalSurfaceTracker.h
1
17
#pragma once
18
31
#if defined(CDigitalSurfaceTracker_RECURSES)
32
#error Recursive header files inclusion detected in CDigitalSurfaceTracker.h
33
#else // defined(CDigitalSurfaceTracker_RECURSES)
34
35
#define CDigitalSurfaceTracker_RECURSES
36
37
#if !defined CDigitalSurfaceTracker_h
38
39
#define CDigitalSurfaceTracker_h
40
42
// Inclusions
43
#include <iostream>
44
#include "DGtal/base/Common.h"
46
47
namespace
DGtal
{
48
namespace
concepts {
49
51
// class CDigitalSurfaceTracker
84
template
<
typename
T>
85
struct
CDigitalSurfaceTracker
:
boost::CopyConstructible
<T>
86
{
87
// ----------------------- Concept checks ------------------------------
88
public
:
89
// 1. define first provided types (i.e. inner types), like
90
typedef
typename
T::Self
Self
;
91
typedef
typename
T::DigitalSurfaceContainer
DigitalSurfaceContainer
;
92
typedef
typename
T::Surfel
Surfel
;
93
// possibly check these types so as to satisfy a concept with
94
// BOOST_CONCEPT_ASSERT
95
// (( CDigitalSurfaceContainer< DigitalSurfaceContainer > ));
96
// To test if two types A and Y are equals, use
97
BOOST_STATIC_ASSERT
98
( (
ConceptUtils::SameType
<
Surfel
,
99
typename
DigitalSurfaceContainer::Surfel
>::value) );
100
// 2. then check the presence of data members, operators and methods with
101
BOOST_CONCEPT_USAGE
(
CDigitalSurfaceTracker
)
102
{
103
// x.move( Surfel ) should exist.
104
myX
.move(
mySurfel
);
105
// check const methods.
106
checkConstConstraints
();
107
}
108
void
checkConstConstraints
()
const
109
{
110
// x.surface() const, returns a const DigitalSurfaceContainer &
111
ConceptUtils::sameType
(
myDSC
,
myX
.surface() );
112
// x.current() const, returns a Surfel
113
ConceptUtils::sameType
(
mySurfel
,
myX
.current() );
114
// x.orthDir() const, returns a Dimension
115
ConceptUtils::sameType
(
myDim
,
myX
.orthDir() );
116
// x.adjacent( Surfel&, Dimension, bool ) const, returns a uint8_t
117
Surfel
modifiableSurfel;
118
ConceptUtils::sameType
(
myInt
,
119
myX
.adjacent( modifiableSurfel,
myDim
,
myBool
) );
120
}
121
122
// ------------------------- Private Datas --------------------------------
123
private
:
124
T
myX
;
// only if T is default constructible.
125
DigitalSurfaceContainer
myDSC
;
126
Surfel
mySurfel
;
127
Dimension
myDim
;
128
bool
myBool
;
129
uint8_t
myInt
;
130
131
// ------------------------- Internals ------------------------------------
132
private
:
133
134
};
// end of concept CDigitalSurfaceTracker
135
136
}
// namespace concepts
137
}
// namespace DGtal
138
139
// //
141
142
#endif // !defined CDigitalSurfaceTracker_h
143
144
#undef CDigitalSurfaceTracker_RECURSES
145
#endif // else defined(CDigitalSurfaceTracker_RECURSES)
DGtal::concepts::CDigitalSurfaceTracker::Self
T::Self Self
Definition:
CDigitalSurfaceTracker.h:90
DGtal::concepts::CDigitalSurfaceTracker::BOOST_STATIC_ASSERT
BOOST_STATIC_ASSERT((ConceptUtils::SameType< Surfel, typename DigitalSurfaceContainer::Surfel >::value))
DGtal::concepts::CDigitalSurfaceTracker::BOOST_CONCEPT_USAGE
BOOST_CONCEPT_USAGE(CDigitalSurfaceTracker)
Definition:
CDigitalSurfaceTracker.h:101
DGtal::concepts::CDigitalSurfaceTracker::Surfel
T::Surfel Surfel
Definition:
CDigitalSurfaceTracker.h:92
DGtal::concepts::CDigitalSurfaceTracker
Aim:
Definition:
CDigitalSurfaceTracker.h:85
DGtal::Dimension
DGtal::uint32_t Dimension
Definition:
Common.h:137
DGtal::concepts::CDigitalSurfaceTracker::myDim
Dimension myDim
Definition:
CDigitalSurfaceTracker.h:127
DGtal::concepts::CDigitalSurfaceTracker::myDSC
DigitalSurfaceContainer myDSC
Definition:
CDigitalSurfaceTracker.h:125
Surfel
KSpace::SCell Surfel
Definition:
testArithmeticalDSSComputerOnSurfels.cpp:50
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
boost::CopyConstructible
Go to http://www.sgi.com/tech/stl/CopyConstructible.html.
Definition:
Boost.dox:34
DGtal::concepts::CDigitalSurfaceTracker::myX
T myX
Definition:
CDigitalSurfaceTracker.h:124
DGtal::concepts::ConceptUtils::sameType
void sameType(const T &, const T &)
Definition:
ConceptUtils.h:117
DGtal::concepts::CDigitalSurfaceTracker::DigitalSurfaceContainer
T::DigitalSurfaceContainer DigitalSurfaceContainer
Definition:
CDigitalSurfaceTracker.h:91
DGtal::concepts::CDigitalSurfaceTracker::myInt
uint8_t myInt
Definition:
CDigitalSurfaceTracker.h:129
DGtal::concepts::ConceptUtils::SameType
Definition:
ConceptUtils.h:106
DGtal::concepts::CDigitalSurfaceTracker::myBool
bool myBool
Definition:
CDigitalSurfaceTracker.h:128
DGtal::concepts::CDigitalSurfaceTracker::checkConstConstraints
void checkConstConstraints() const
Definition:
CDigitalSurfaceTracker.h:108
DGtal::concepts::CDigitalSurfaceTracker::mySurfel
Surfel mySurfel
Definition:
CDigitalSurfaceTracker.h:126
DGtal::uint8_t
boost::uint8_t uint8_t
unsigned 8-bit integer.
Definition:
BasicTypes.h:59
Generated on Mon Jun 20 2022 18:23:23 for DGtal by
1.8.17