File: corerange.h

package info (click to toggle)
falconpl 0.9.6.9-git20120606-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 46,176 kB
  • sloc: cpp: 181,389; ansic: 109,025; yacc: 2,310; xml: 1,218; sh: 403; objc: 245; makefile: 82; sql: 20
file content (92 lines) | stat: -rw-r--r-- 1,935 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
   FALCON - The Falcon Programming Language.
   FILE: corerange.h

   Range object implementation
   -------------------------------------------------------------------
   Author: Giancarlo Niccolai
   Begin: Wed, 07 Jan 2009 11:03:32 +0100

   -------------------------------------------------------------------
   (C) Copyright 2009: the FALCON developers (see list in AUTHORS file)

   See LICENSE file for licensing details.
*/

#ifndef FLC_CORE_RANGE_H
#define FLC_CORE_RANGE_H

#include <falcon/setup.h>
#include <falcon/types.h>
#include <falcon/garbageable.h>
#include <limits.h>

#ifndef LLONG_MIN
#define LLONG_MIN (-9223372036854775807LL-1)
#endif

namespace Falcon {

class FALCON_DYN_CLASS CoreRange: public Garbageable
{
   int64 m_start;
   int64 m_end;
   int64 m_step;

public:
   CoreRange():
      Garbageable(),
      m_start(0),
      m_end( 0 ),
      m_step( 0 )
   {}

   CoreRange( int64 start ):
      Garbageable(),
      m_start( start ),
      m_end( 0 ),
      m_step( LLONG_MIN )
   {}

   CoreRange( int64 start, int64 end ):
      Garbageable(),
      m_start( start ),
      m_end( end ),
      m_step( 0 )
   {}

   CoreRange( int64 start, int64 end, int64 step ):
      Garbageable(),
      m_start( start ),
      m_end( end ),
      m_step( step )
   {}

   CoreRange( const CoreRange &other ):
      Garbageable(),
      m_start( other.m_start ),
      m_end( other.m_end ),
      m_step( other.m_step )
   {}

   virtual ~CoreRange() {}

   bool isOpen() const { return m_step == (int64) LLONG_MIN; }
   int64 start() const { return m_start; }
   int64 end() const { return m_end; }
   int64 step() const { return m_step; }

   void setOpen() { m_step = LLONG_MIN; }
   void start( int64 s ) { m_start = s; }
   void end( int64 s ) { m_end = s; }
   void step( int64 s ) { m_step = s; }

   CoreRange* clone() const { return new CoreRange( *this ); }
};

}

#endif

/* end of corerange.h */