Skip to content

Commit ad71beb

Browse files
committed
Encapsulation of interval
1 parent 58ec0c6 commit ad71beb

File tree

2 files changed

+26
-15
lines changed

2 files changed

+26
-15
lines changed

sbg/interval.cpp

+11-8
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ namespace SBG {
2424
namespace LIB {
2525

2626
Interval::Interval() : begin_(1), step_(1), end_(0) {}
27-
Interval::Interval(NAT x) : begin_(x), step_(1), end_(x) {}
28-
Interval::Interval(NAT begin, NAT step, NAT end)
27+
Interval::Interval(const NAT &x) : begin_(x), step_(1), end_(x) {}
28+
Interval::Interval(const NAT &begin, const NAT &step, const NAT &end)
2929
: begin_(begin), step_(step), end_(end)
3030
{
3131
if (end >= begin) {
@@ -43,9 +43,12 @@ Interval::Interval(NAT begin, NAT step, NAT end)
4343
}
4444
}
4545

46-
member_imp(Interval, NAT, begin);
47-
member_imp(Interval, NAT, step);
48-
member_imp(Interval, NAT, end);
46+
NAT Interval::begin() const { return begin_; }
47+
NAT &Interval::begin_ref() { return begin_; }
48+
NAT Interval::step() const { return step_; }
49+
NAT &Interval::step_ref() { return step_; }
50+
NAT Interval::end() const { return end_; }
51+
NAT &Interval::end_ref() { return end_; }
4952

5053
// Operators -------------------------------------------------------------------
5154

@@ -69,7 +72,7 @@ bool Interval::operator<(const Interval &other) const
6972
std::ostream &operator<<(std::ostream &out, const Interval &i)
7073
{
7174
out << "[" << Util::toStr(i.begin());
72-
if (i.step_ != 1)
75+
if (i.step() != 1)
7376
out << ":" << Util::toStr(i.step());
7477
out << ":" << Util::toStr(i.end()) << "]";
7578

@@ -85,7 +88,7 @@ unsigned int Interval::cardinal() const
8588

8689
bool Interval::isEmpty() const { return end_ < begin_; }
8790

88-
bool Interval::isMember(NAT x) const
91+
bool Interval::isMember(const NAT &x) const
8992
{
9093
if (x < begin_ || x > end_)
9194
return false;
@@ -128,7 +131,7 @@ Interval Interval::intersection(const Interval &other)const
128131

129132
// Extra operations ------------------------------------------------------------
130133

131-
Interval Interval::offset(Util::NAT off) const
134+
Interval Interval::offset(const Util::NAT &off) const
132135
{
133136
Util::NAT new_b = begin_ + off, new_e = end_ + off;
134137

sbg/interval.hpp

+15-7
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,16 @@ using MD_NAT = Util::MD_NAT;
4747
struct Interval {
4848
using MaybeInterval = std::optional<Interval>;
4949

50-
member_class(NAT, begin);
51-
member_class(NAT, step);
52-
member_class(NAT, end);
50+
NAT begin() const;
51+
NAT &begin_ref();
52+
NAT step() const;
53+
NAT &step_ref();
54+
NAT end() const;
55+
NAT &end_ref();
5356

5457
Interval();
55-
Interval(NAT x);
56-
Interval(NAT begin, NAT step, NAT end);
58+
Interval(const NAT &x);
59+
Interval(const NAT &begin, const NAT &step, const NAT &end);
5760

5861
bool operator==(const Interval &i) const;
5962
bool operator!=(const Interval &i) const;
@@ -64,15 +67,20 @@ struct Interval {
6467
*/
6568
unsigned int cardinal() const;
6669
bool isEmpty() const;
67-
bool isMember(NAT x) const;
70+
bool isMember(const NAT &x) const;
6871
Interval intersection(const Interval &i2) const;
6972

7073
/**
7174
* @brief Extra operations.
7275
*/
73-
Interval offset(Util::NAT off) const;
76+
Interval offset(const Util::NAT &off) const;
7477
Interval least(const Interval &i2) const;
7578
MaybeInterval compact(const Interval &i2) const;
79+
80+
private:
81+
NAT begin_;
82+
NAT step_;
83+
NAT end_;
7684
};
7785
std::ostream &operator<<(std::ostream &out, const Interval &i);
7886

0 commit comments

Comments
 (0)