DGtal  1.5.beta
DGtal::concepts::CIncrementalSegmentComputer< T > Struct Template Reference

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.
More...

#include <DGtal/geometry/curves/CIncrementalSegmentComputer.h>

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

Public Member Functions

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

Private Attributes

myX
 
T::ConstIterator myI
 
bool myB
 

Additional Inherited Members

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

Detailed Description

template<typename T>
struct DGtal::concepts::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 Post condition Complexity
Initialization x.init(i) void set a segment to i x is valid and P is true O(1)
Extension test x.isExtendableFront() bool x is valid and P is true check whether x can be extended to x.end() or not x is valid and P is true
Extension x.extendFront() bool x is valid and P is true check whether x can be extended to x.end() or not, extend only 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 );
}
MyDigitalSurface::ConstIterator ConstIterator

Models

Notes

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

Definition at line 112 of file CIncrementalSegmentComputer.h.

Member Function Documentation

◆ BOOST_CONCEPT_USAGE()

Field Documentation

◆ myB

◆ myI

◆ myX


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