DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Private Attributes
DGtal::CIncrementalSegmentComputer< T > Struct Template Reference

#include <CIncrementalSegmentComputer.h>

Inheritance diagram for DGtal::CIncrementalSegmentComputer< T >:
Inheritance graph
[legend]
Collaboration diagram for DGtal::CIncrementalSegmentComputer< T >:
Collaboration graph
[legend]

Public Member Functions

 BOOST_CONCEPT_USAGE (CIncrementalSegmentComputer)
- Public Member Functions inherited from DGtal::CSegmentFactory< T >
 BOOST_STATIC_ASSERT ((boost::is_same< T, Self >::value))
 BOOST_CONCEPT_USAGE (CSegmentFactory)
- Public Member Functions inherited from DGtal::CSegment< T >
 BOOST_CONCEPT_USAGE (CSegment)

Private Attributes

myX
T::ConstIterator myI
bool myB

Additional Inherited Members

- Public Types inherited from DGtal::CSegmentFactory< T >
typedef T::Self Self
typedef T::Reverse Reverse
- Public Types inherited from DGtal::CSegment< T >
typedef T::ConstIterator ConstIterator

Detailed Description

template<typename T>
struct DGtal::CIncrementalSegmentComputer< T >

Aim: Defines the concept describing an incremental segment computer, ie. a model of CSegmentFactory that can, in addition, incrementally check whether or not an implicit predicate P is true. In other words, it can control its own extension from a range of one element (in the direction that is relative to the underlying iterator) so that an implicit predicate P remains true.

Description of concept 'CIncrementalSegmentComputer'

Refinement of CSegmentFactory

Associated types :

the same as CSegmentFactory

Notation

Definitions

Valid expressions and

Name Expression Type requirements Return type Precondition Semantics Postcondition Complexity
initialization x.init(i) void set a segment to i x is valid and P is true O(1)
extension test x.isExtendableForward() bool x is valid and P is true checks whether x can be extended to x.end() or not x is valid and P is true
extension x.extendForward() bool x is valid and P is true check whether x can be extended to x.end() or not, only extend if true x is valid and P is true

Invariants

Models of CIncrementalSegmentComputer garantee that for each iterator it from s.begin() to s.end(), the range [s.begin(), it) is a segment such that P is true.

for ( ConstIterator it = s.begin(),
ConstIterator itEnd = s.end();
it != itEnd; ++it)
{ // [s.begin(), it) is a segment:
s.init( s.begin() );
bool flag = true;
while ( (s.end() != it)&&(flag) ) { flag = s.extend(); }
ASSERT( flag );
}

Models

Notes

Template Parameters:
Tthe type that should be a model of CIncrementalSegmentComputer.

Definition at line 145 of file CIncrementalSegmentComputer.h.


Member Function Documentation

template<typename T >
DGtal::CIncrementalSegmentComputer< T >::BOOST_CONCEPT_USAGE ( CIncrementalSegmentComputer< T >  )
inline

Field Documentation

template<typename T >
bool DGtal::CIncrementalSegmentComputer< T >::myB
private
template<typename T >
T::ConstIterator DGtal::CIncrementalSegmentComputer< T >::myI
private
template<typename T >
T DGtal::CIncrementalSegmentComputer< T >::myX
private

The documentation for this struct was generated from the following file: