DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CBidirectionalOutputRange.h
1 
17 #pragma once
18 
30 #if defined(CBidirectionalOutputRange_RECURSES)
31 #error Recursive header files inclusion detected in CBidirectionalOutputRange.h
32 #else // defined(CBidirectionalOutputRange_RECURSES)
33 
34 #define CBidirectionalOutputRange_RECURSES
35 
36 #if !defined CBidirectionalOutputRange_h
37 
38 #define CBidirectionalOutputRange_h
39 
41 // Inclusions
42 #include <iostream>
43 #include "DGtal/base/Common.h"
44 #include "DGtal/base/CSinglePassOutputRange.h"
46 
47 namespace DGtal
48 {
49 
51  // class CBidirectionalOutputRange
89  template <typename T, typename Value>
91  {
92  // ----------------------- Concept checks ------------------------------
93  public:
94  // 1. define first provided types (i.e. inner types), like
95  typedef typename T::ReverseOutputIterator ReverseOutputIterator;
96  // possibly check these types so as to satisfy a concept with
97  //BOOST_CONCEPT_ASSERT(( CConcept< InnerType > ));
98 
100  {
101  ConceptUtils::sameType( myOutput, myX.routputIterator( ) );
102  }
103  // ------------------------- Private Datas --------------------------------
104  private:
105  T myX; // do not require T to be default constructible.
107 
108  // ------------------------- Internals ------------------------------------
109  private:
110 
111  }; // end of concept CBidirectionalOutputRange
112 
113 } // namespace DGtal
114 
115 // //
117 
118 #endif // !defined CBidirectionalOutputRange_h
119 
120 #undef CBidirectionalOutputRange_RECURSES
121 #endif // else defined(CBidirectionalOutputRange_RECURSES)