00001 #pragma once
00002
00003 #include <boost/unordered_set.hpp>
00004 #include <boost/unordered_map.hpp>
00005 #include <set>
00006 #include "Bitmap.h"
00007 #include "Util.h"
00008
00009 namespace Moses
00010 {
00011
00012 class Bitmaps
00013 {
00014 typedef boost::unordered_map<Range, const Bitmap*> NextBitmaps;
00015 typedef boost::unordered_map<const Bitmap*, NextBitmaps, UnorderedComparer<Bitmap>, UnorderedComparer<Bitmap> > Coll;
00016
00017 Coll m_coll;
00018 const Bitmap *m_initBitmap;
00019
00020 const Bitmap &GetNextBitmap(const Bitmap &bm, const Range &range);
00021 public:
00022 Bitmaps(size_t inputSize, const std::vector<bool> &initSourceCompleted);
00023 virtual ~Bitmaps();
00024
00025 const Bitmap &GetInitialBitmap() const {
00026 return *m_initBitmap;
00027 }
00028 const Bitmap &GetBitmap(const Bitmap &bm, const Range &range);
00029
00030 };
00031
00032 }