bloom_filter(size_t m, unsigned long k, const HashPair& fns = HashPair()) :
   mem_block_t(super::nb_bytes__(m)),
   super(m, k, (unsigned char*)mem_block_t::get_ptr(), fns)
 {
   if(!mem_block_t::get_ptr())
     throw std::runtime_error(err::msg() << "Failed to allocate " << super::nb_bytes__(m) << " bytes of memory for bloom_filter");
 }
 bloom_filter(double fp, size_t n, const HashPair& fns = HashPair()) :
   mem_block_t(super::nb_bytes__(super::opt_m(fp, n))),
   super(super::opt_m(fp, n), super::opt_k(fp), (unsigned char*)mem_block_t::get_ptr(), fns)
 {
   if(!mem_block_t::get_ptr())
     throw std::runtime_error(err::msg() << "Failed to allocate " << super::nb_bytes__(super::opt_m(fp, n))
                              << " bytes of memory for bloom_filter");
 }
  bloom_filter(size_t m, unsigned long k, std::istream& is, const HashPair& fns = HashPair()) :
    mem_block_t(super::nb_bytes__(m)),
    super(m, k, (unsigned char*)mem_block_t::get_ptr(), fns)
  {
    if(!mem_block_t::get_ptr())
      eraise(std::runtime_error) << "Failed to allocate " << super::nb_bytes__(m) << " bytes of memory for bloom_filter";

    is.read((char*)mem_block_t::get_ptr(), mem_block_t::get_size());
  }
 bloom_filter_base(size_t m, unsigned long k, unsigned char* ptr, const HashPair& fns = HashPair()) :
   super(m, k, ptr, fns)
 { }
 bloom_filter_file(size_t m, unsigned long k, const char* path, const HashPair& fns = HashPair(), off_t offset = 0) :
   mapped_file(path),
   super(m, k, (unsigned char*)mapped_file::base() + offset, fns)
 { }
 bloom_base(size_t m, unsigned long k, unsigned char* ptr, const HashPair& fns = HashPair()) :
   d_(m), k_(k), data_(ptr), hash_fns_(fns)
 { }
void StaticHashTableBuilder::add (const std::string & key, const std::string & value) {
	sf::HashValue h = sf::hash ((unsigned char*) key.c_str());
	mHashes.push_back (HashPair (KeyValue (key, value), h));
}