Files
Include/EGkIntervals.h
T
Dario Sassi 92dab77f32 Include :
- aggiornamenti vari.
2015-09-13 17:42:06 +00:00

62 lines
2.3 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkIntervals.h Data : 03.08.15 Versione : 1.6h1
// Contenuto : Dichiarazione della classe insieme di intervalli Intervals.
//
//
//
// Modifiche : 03.08.15 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include <algorithm>
#include <list>
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
class Intervals
{
public :
EGK_EXPORT Intervals( void)
: m_dToler( EPS_SMALL), m_Iter( m_lInts.end()) {}
EGK_EXPORT Intervals( double dToler)
: m_dToler( std::max( dToler, EPS_ZERO)), m_Iter( m_lInts.end()) {}
public :
EGK_EXPORT void Reset( void) ;
EGK_EXPORT void Set( double dMin, double dMax) ;
EGK_EXPORT void Add( double dMin, double dMax) ;
EGK_EXPORT void Subtract( double dMin, double dMax) ;
EGK_EXPORT void Add( const Intervals& Other) ;
EGK_EXPORT void Subtract( const Intervals& Other) ;
EGK_EXPORT void Intersect( const Intervals& Other) ;
EGK_EXPORT bool IsEmpty( void) const
{ return m_lInts.empty() ; }
EGK_EXPORT int GetCount( void) const
{ return int( m_lInts.size()) ; }
EGK_EXPORT bool GetMinMax( double& dMin, double& dMax) ;
EGK_EXPORT bool GetFirst( double& dMin, double& dMax) ;
EGK_EXPORT bool GetNext( double& dMin, double& dMax) ;
private :
typedef std::pair<double,double> INTERV ; // intervallo, definito come insieme di minimo e massimo
typedef std::list<INTERV> INTERVLIST ; // lista di intervalli
typedef INTERVLIST::const_iterator INTL_CINT ; // iteratore costante a lista di intervalli
private :
double m_dToler ;
INTERVLIST m_lInts ;
INTL_CINT m_Iter ;
} ;