00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef FLC_CORE_RANGE_H
00017 #define FLC_CORE_RANGE_H
00018
00019 #include <falcon/setup.h>
00020 #include <falcon/types.h>
00021 #include <falcon/garbageable.h>
00022 #include <limits.h>
00023
00024 #ifndef LLONG_MIN
00025 #define LLONG_MIN (-9223372036854775807LL-1)
00026 #endif
00027
00028 namespace Falcon {
00029
00030 class FALCON_DYN_CLASS CoreRange: public Garbageable
00031 {
00032 int64 m_start;
00033 int64 m_end;
00034 int64 m_step;
00035
00036 public:
00037 CoreRange():
00038 Garbageable(),
00039 m_start(0),
00040 m_end( 0 ),
00041 m_step( 0 )
00042 {}
00043
00044 CoreRange( int64 start ):
00045 Garbageable(),
00046 m_start( start ),
00047 m_end( 0 ),
00048 m_step( LLONG_MIN )
00049 {}
00050
00051 CoreRange( int64 start, int64 end ):
00052 Garbageable(),
00053 m_start( start ),
00054 m_end( end ),
00055 m_step( 0 )
00056 {}
00057
00058 CoreRange( int64 start, int64 end, int64 step ):
00059 Garbageable(),
00060 m_start( start ),
00061 m_end( end ),
00062 m_step( step )
00063 {}
00064
00065 CoreRange( const CoreRange &other ):
00066 Garbageable(),
00067 m_start( other.m_start ),
00068 m_end( other.m_end ),
00069 m_step( other.m_step )
00070 {}
00071
00072 virtual ~CoreRange() {}
00073
00074 bool isOpen() const { return m_step == (int64) LLONG_MIN; }
00075 int64 start() const { return m_start; }
00076 int64 end() const { return m_end; }
00077 int64 step() const { return m_step; }
00078
00079 void setOpen() { m_step = LLONG_MIN; }
00080 void start( int64 s ) { m_start = s; }
00081 void end( int64 s ) { m_end = s; }
00082 void step( int64 s ) { m_step = s; }
00083
00084 CoreRange* clone() const { return new CoreRange( *this ); }
00085 };
00086
00087 }
00088
00089 #endif
00090
00091
00092