DGtal 1.3.0
Loading...
Searching...
No Matches
CUnaryFunctor.h
1
17#pragma once
18
30#if defined(CUnaryFunctor_RECURSES)
31#error Recursive header files inclusion detected in CUnaryFunctor.h
32#else // defined(CUnaryFunctor_RECURSES)
34#define CUnaryFunctor_RECURSES
35
36#if !defined CUnaryFunctor_h
38#define CUnaryFunctor_h
39
41// Inclusions
42#include <iostream>
43#include "DGtal/base/Common.h"
44#include "DGtal/base/ConceptUtils.h"
46
47namespace DGtal
48{
49 namespace concepts
50 {
52 // class CUnaryFunctor
88 template <typename X, typename A, typename R>
90 {
91
92 // ----------------------- Concept checks ------------------------------
93 public:
94
96 {
97 // x( a ) returns r.
98 ConceptUtils::sameType( r, x.operator() ( a ) );
99 }
100 // ------------------------- Private Datas --------------------------------
101 private:
102 X x;
103 A a;
105 // ------------------------- Internals ------------------------------------
106 private:
107
108 }; // end of concept CUnaryFunctor
109
110 //specialization for references
111 template <typename X, typename A, typename R>
113 {
114
115 // ----------------------- Concept checks ------------------------------
116 public:
117
119 {
120 ConceptUtils::sameType( getRef(r), x.operator() ( getRef(a) ) );
121 }
122 // ------------------------- Private Datas --------------------------------
123 private:
124 X x;
125 A a;
127 // ------------------------- Internals ------------------------------------
128 private:
129 template<typename T>
130 T& getRef(T& t)
131 {
132 return t;
133 }
134
135 }; // end of concept CUnaryFunctor
136 }
137} // namespace DGtal
138
139// //
141
142#endif // !defined CUnaryFunctor_h
143
144#undef CUnaryFunctor_RECURSES
145#endif // else defined(CUnaryFunctor_RECURSES)
void sameType(const T &, const T &)
Definition: ConceptUtils.h:117
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: Defines a unary functor, which associates arguments to results.
Definition: CUnaryFunctor.h:90
BOOST_CONCEPT_USAGE(CUnaryFunctor)
Definition: CUnaryFunctor.h:95
Go to http://www.sgi.com/tech/stl/Assignable.html.
Definition: Boost.dox:32