IBR-DTNSuite  0.10
ibrcommon::BloomFilter Class Reference

#include <BloomFilter.h>

Collaboration diagram for ibrcommon::BloomFilter:
Collaboration graph

Public Member Functions

 BloomFilter (std::size_t table_size=8192, std::size_t salt_count=2)
 
 BloomFilter (const BloomFilter &filter)
 
virtual ~BloomFilter ()
 
void load (const cell_type *data, size_t len)
 
BloomFilteroperator= (const BloomFilter &filter)
 
bool operator! () const
 
void clear ()
 
void insert (const unsigned char *key_begin, const std::size_t length)
 
template<typename T >
void insert (const T &t)
 
void insert (const std::string &key)
 
void insert (const char *data, const std::size_t &length)
 
template<typename InputIterator >
void insert (const InputIterator begin, const InputIterator end)
 
virtual bool contains (const unsigned char *key_begin, const std::size_t length) const
 
template<typename T >
bool contains (const T &t) const
 
bool contains (const std::string &key) const
 
bool contains (const char *data, const std::size_t &length) const
 
template<typename InputIterator >
InputIterator contains_all (const InputIterator begin, const InputIterator end) const
 
template<typename InputIterator >
InputIterator contains_none (const InputIterator begin, const InputIterator end) const
 
virtual std::size_t size () const
 
BloomFilteroperator&= (const BloomFilter &filter)
 
BloomFilteroperator|= (const BloomFilter &filter)
 
BloomFilteroperator^= (const BloomFilter &filter)
 
const cell_typetable () const
 
double getAllocation () const
 

Protected Member Functions

virtual void compute_indices (const bloom_type &hash, std::size_t &bit_index, std::size_t &bit) const
 

Protected Attributes

DefaultHashProvider _hashp
 
unsigned char * bit_table_
 
std::size_t table_size_
 
unsigned int _itemcount
 
std::size_t salt_count_
 

Static Protected Attributes

static const std::size_t bits_per_char = 0x08
 
static const unsigned char bit_mask [bits_per_char]
 

Detailed Description

Definition at line 77 of file BloomFilter.h.

Constructor & Destructor Documentation

ibrcommon::BloomFilter::BloomFilter ( std::size_t  table_size = 8192,
std::size_t  salt_count = 2 
)

Definition at line 139 of file BloomFilter.cpp.

References bit_table_, bits_per_char, and table_size_.

ibrcommon::BloomFilter::BloomFilter ( const BloomFilter filter)

Definition at line 151 of file BloomFilter.cpp.

References bit_table_, bits_per_char, and table_size_.

ibrcommon::BloomFilter::~BloomFilter ( )
virtual

Definition at line 158 of file BloomFilter.cpp.

References bit_table_.

Member Function Documentation

void ibrcommon::BloomFilter::clear ( )

Definition at line 178 of file BloomFilter.cpp.

References _itemcount, bit_table_, bits_per_char, and table_size_.

Referenced by dtn::data::BundleSet::clear().

void ibrcommon::BloomFilter::compute_indices ( const bloom_type hash,
std::size_t &  bit_index,
std::size_t &  bit 
) const
protectedvirtual

Definition at line 311 of file BloomFilter.cpp.

References bits_per_char, and table_size_.

Referenced by contains(), and insert().

bool ibrcommon::BloomFilter::contains ( const unsigned char *  key_begin,
const std::size_t  length 
) const
virtual
template<typename T >
bool ibrcommon::BloomFilter::contains ( const T &  t) const
inline

Definition at line 120 of file BloomFilter.h.

References contains().

Here is the call graph for this function:

bool ibrcommon::BloomFilter::contains ( const std::string &  key) const

Definition at line 229 of file BloomFilter.cpp.

References contains().

Here is the call graph for this function:

bool ibrcommon::BloomFilter::contains ( const char *  data,
const std::size_t &  length 
) const

Definition at line 234 of file BloomFilter.cpp.

References contains().

Here is the call graph for this function:

template<typename InputIterator >
InputIterator ibrcommon::BloomFilter::contains_all ( const InputIterator  begin,
const InputIterator  end 
) const
inline

Definition at line 130 of file BloomFilter.h.

References contains().

Here is the call graph for this function:

template<typename InputIterator >
InputIterator ibrcommon::BloomFilter::contains_none ( const InputIterator  begin,
const InputIterator  end 
) const
inline

Definition at line 145 of file BloomFilter.h.

References contains().

Here is the call graph for this function:

double ibrcommon::BloomFilter::getAllocation ( ) const

Definition at line 317 of file BloomFilter.cpp.

References _itemcount, salt_count_, and table_size_.

void ibrcommon::BloomFilter::insert ( const unsigned char *  key_begin,
const std::size_t  length 
)

Definition at line 184 of file BloomFilter.cpp.

References _hashp, _itemcount, bit_mask, bit_table_, bits_per_char, compute_indices(), and ibrcommon::DefaultHashProvider::hash().

Referenced by insert().

Here is the call graph for this function:

template<typename T >
void ibrcommon::BloomFilter::insert ( const T &  t)
inline

Definition at line 98 of file BloomFilter.h.

References insert().

Here is the call graph for this function:

void ibrcommon::BloomFilter::insert ( const std::string &  key)

Definition at line 200 of file BloomFilter.cpp.

References insert().

Here is the call graph for this function:

void ibrcommon::BloomFilter::insert ( const char *  data,
const std::size_t &  length 
)

Definition at line 205 of file BloomFilter.cpp.

References insert().

Here is the call graph for this function:

template<typename InputIterator >
void ibrcommon::BloomFilter::insert ( const InputIterator  begin,
const InputIterator  end 
)
inline

Definition at line 108 of file BloomFilter.h.

References insert().

Here is the call graph for this function:

void ibrcommon::BloomFilter::load ( const cell_type data,
size_t  len 
)

Definition at line 292 of file BloomFilter.cpp.

References _itemcount, bit_table_, and table_size_.

Referenced by dtn::data::operator>>().

bool ibrcommon::BloomFilter::operator! ( ) const

Definition at line 173 of file BloomFilter.cpp.

References table_size_.

BloomFilter & ibrcommon::BloomFilter::operator&= ( const BloomFilter filter)

Definition at line 244 of file BloomFilter.cpp.

References _hashp, bit_table_, bits_per_char, and table_size_.

BloomFilter & ibrcommon::BloomFilter::operator= ( const BloomFilter filter)

Definition at line 163 of file BloomFilter.cpp.

References _hashp, bit_table_, bits_per_char, and table_size_.

BloomFilter & ibrcommon::BloomFilter::operator^= ( const BloomFilter filter)

Definition at line 276 of file BloomFilter.cpp.

References _hashp, bit_table_, bits_per_char, and table_size_.

BloomFilter & ibrcommon::BloomFilter::operator|= ( const BloomFilter filter)

Definition at line 260 of file BloomFilter.cpp.

References _hashp, bit_table_, bits_per_char, and table_size_.

std::size_t ibrcommon::BloomFilter::size ( ) const
virtual

Definition at line 239 of file BloomFilter.cpp.

References bits_per_char, and table_size_.

Referenced by dtn::data::BundleSet::getLength(), and dtn::data::operator<<().

const cell_type * ibrcommon::BloomFilter::table ( ) const

Definition at line 306 of file BloomFilter.cpp.

References bit_table_.

Referenced by dtn::data::operator<<().

Member Data Documentation

DefaultHashProvider ibrcommon::BloomFilter::_hashp
protected

Definition at line 171 of file BloomFilter.h.

Referenced by contains(), insert(), operator&=(), operator=(), operator^=(), and operator|=().

unsigned int ibrcommon::BloomFilter::_itemcount
protected

Definition at line 176 of file BloomFilter.h.

Referenced by clear(), getAllocation(), insert(), and load().

const unsigned char ibrcommon::BloomFilter::bit_mask
staticprotected
Initial value:
= {
0x01,
0x02,
0x04,
0x08,
0x10,
0x20,
0x40,
0x80
}

Definition at line 81 of file BloomFilter.h.

Referenced by contains(), and insert().

unsigned char* ibrcommon::BloomFilter::bit_table_
protected
const std::size_t ibrcommon::BloomFilter::bits_per_char = 0x08
staticprotected
std::size_t ibrcommon::BloomFilter::salt_count_
protected

Definition at line 177 of file BloomFilter.h.

Referenced by getAllocation().

std::size_t ibrcommon::BloomFilter::table_size_
protected

The documentation for this class was generated from the following files: