| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #include <boost/functional/hash.hpp> |
| #include "Bitmap.h" |
|
|
| namespace Moses |
| { |
|
|
| TO_STRING_BODY(Bitmap); |
|
|
| Bitmap::Bitmap(size_t size, const std::vector<bool>& initializer) |
| :m_bitmap(initializer.begin(), initializer.end()) |
| { |
|
|
| |
| |
| m_bitmap.resize(size, false); |
|
|
| m_numWordsCovered = std::count(m_bitmap.begin(), m_bitmap.end(), true); |
|
|
| |
| std::vector<char>::const_iterator first_gap = std::find( |
| m_bitmap.begin(), m_bitmap.end(), false); |
| m_firstGap = ( |
| (first_gap == m_bitmap.end()) ? |
| NOT_FOUND : first_gap - m_bitmap.begin()); |
| } |
|
|
| |
| Bitmap::Bitmap(size_t size) |
| :m_bitmap(size, false) |
| ,m_firstGap(0) |
| ,m_numWordsCovered(0) |
|
|
| { |
| } |
|
|
| |
| Bitmap::Bitmap(const Bitmap ©) |
| :m_bitmap(copy.m_bitmap) |
| ,m_firstGap(copy.m_firstGap) |
| ,m_numWordsCovered(copy.m_numWordsCovered) |
| { |
| } |
|
|
| Bitmap::Bitmap(const Bitmap ©, const Range &range) |
| :m_bitmap(copy.m_bitmap) |
| ,m_firstGap(copy.m_firstGap) |
| ,m_numWordsCovered(copy.m_numWordsCovered) |
| { |
| SetValueNonOverlap(range); |
| } |
|
|
| |
| size_t Bitmap::hash() const |
| { |
| size_t ret = boost::hash_value(m_bitmap); |
| return ret; |
| } |
|
|
| bool Bitmap::operator==(const Bitmap& other) const |
| { |
| return m_bitmap == other.m_bitmap; |
| } |
|
|
| |
| std::ostream& operator<<(std::ostream& out, const Bitmap& bitmap) |
| { |
| for (size_t i = 0 ; i < bitmap.m_bitmap.size() ; i++) { |
| out << int(bitmap.GetValue(i)); |
| } |
| return out; |
| } |
|
|
| } |
|
|
|
|
|
|