88 lines
1.5 KiB
C++
88 lines
1.5 KiB
C++
#ifndef MARISA_RANGE_H_
|
|
#define MARISA_RANGE_H_
|
|
|
|
#include "base.h"
|
|
|
|
namespace marisa {
|
|
|
|
class Range {
|
|
public:
|
|
Range() : begin_(0), end_(0), pos_(0) {}
|
|
Range(UInt32 begin, UInt32 end, UInt32 pos)
|
|
: begin_(begin), end_(end), pos_(pos) {}
|
|
|
|
void set_begin(UInt32 begin) {
|
|
begin_ = begin;
|
|
}
|
|
void set_end(UInt32 end) {
|
|
end_ = end;
|
|
}
|
|
void set_pos(UInt32 pos) {
|
|
pos_ = pos;
|
|
}
|
|
|
|
UInt32 begin() const {
|
|
return begin_;
|
|
}
|
|
UInt32 end() const {
|
|
return end_;
|
|
}
|
|
UInt32 pos() const {
|
|
return pos_;
|
|
}
|
|
|
|
private:
|
|
UInt32 begin_;
|
|
UInt32 end_;
|
|
UInt32 pos_;
|
|
};
|
|
|
|
class WRange {
|
|
public:
|
|
WRange() : range_(), weight_(0.0) {}
|
|
WRange(const Range &range, double weight)
|
|
: range_(range), weight_(weight) {}
|
|
WRange(UInt32 begin, UInt32 end, UInt32 pos, double weight)
|
|
: range_(begin, end, pos), weight_(weight) {}
|
|
|
|
void set_begin(UInt32 begin) {
|
|
range_.set_begin(begin);
|
|
}
|
|
void set_end(UInt32 end) {
|
|
range_.set_end(end);
|
|
}
|
|
void set_pos(UInt32 pos) {
|
|
range_.set_pos(pos);
|
|
}
|
|
void set_weight(double weight) {
|
|
weight_ = weight;
|
|
}
|
|
|
|
const Range &range() const {
|
|
return range_;
|
|
}
|
|
UInt32 begin() const {
|
|
return range_.begin();
|
|
}
|
|
UInt32 end() const {
|
|
return range_.end();
|
|
}
|
|
UInt32 pos() const {
|
|
return range_.pos();
|
|
}
|
|
double weight() const {
|
|
return weight_;
|
|
}
|
|
|
|
private:
|
|
Range range_;
|
|
double weight_;
|
|
};
|
|
|
|
inline bool operator>(const WRange &lhs, const WRange &rhs) {
|
|
return lhs.weight() > rhs.weight();
|
|
}
|
|
|
|
} // namespace marisa
|
|
|
|
#endif // MARISA_RANGE_H_
|