dht::Hash< N > Class Template Reference

`#include <infohash.h>`

## Public Types

using | T = std::array< uint8_t, N >
typedef T::iterator | iterator
typedef T::const_iterator | const_iterator

## Public Member Functions

| Hash (const uint8_t *h, size_t data_len)
| Hash (const std::string &hex)
| Hash (const msgpack::object &o)
size_t | size () const
const uint8_t * | data () const
uint8_t * | data ()
iterator | begin ()
const_iterator | cbegin () const
iterator | end ()
const_iterator | cend () const
bool | operator== (const Hash &h) const
bool | operator!= (const Hash &h) const
bool | operator< (const Hash &o) const
| operator bool () const
uint8_t & | operator[] (size_t index)
const uint8_t & | operator[] (size_t index) const
int | lowbit () const
int | xorCmp (const Hash &id1, const Hash &id2) const
bool | getBit (unsigned nbit) const
void | setBit (unsigned nbit, bool b)
double | toFloat () const
const char * | to_c_str () const
std::string | toString () const
template<typename Packer >
void | msgpack_pack (Packer &pk) const
void | msgpack_unpack (msgpack::object o)

## Static Public Member Functions

static int | cmp (const Hash &id1, const Hash &id2)
static unsigned | commonBits (const Hash &id1, const Hash &id2)
static Hash | get (const std::string &data)
static Hash | get (const std::vector< uint8_t > &data)
static Hash | get (const uint8_t *data, size_t data_len)
static Hash | getRandom ()

## Friends

template<size_t M>
OPENDHT_PUBLIC friend std::ostream & | operator<< (std::ostream &s, const Hash< M > &h)
template<size_t M>
OPENDHT_PUBLIC friend std::istream & | operator>> (std::istream &s, Hash< M > &h)

## Detailed Description

template<size_t N>
class dht::Hash< N >

Represents an InfoHash. An InfoHash is a byte array of HASH_LEN bytes. InfoHashes identify nodes and values in the Dht.

Definition at line 62 of file infohash.h.

## Member Typedef Documentation

## const_iterator

template<size_t N>

typedef T::const_iterator dht::Hash< N >::const_iterator

Definition at line 66 of file infohash.h.

## iterator

template<size_t N>

typedef T::iterator dht::Hash< N >::iterator

Definition at line 65 of file infohash.h.

## T

template<size_t N>

using dht::Hash< N >::T = std::array<uint8_t, N>

Definition at line 64 of file infohash.h.

## Constructor & Destructor Documentation

## Hash() [1/4]

template<size_t N>

dht::Hash< N >::Hash | ( |  | ) |

inline

Definition at line 68 of file infohash.h.

## Hash() [2/4]

template<size_t N>

dht::Hash< N >::Hash | ( | const uint8_t * | h,
|  | size_t | data_len
| ) |  |

inline

Definition at line 71 of file infohash.h.

## Hash() [3/4]

template<size_t N>

dht::Hash< N >::Hash | ( | const std::string & | hex | ) |

explicit

Constructor from an hexadecimal string (without "0x"). hex must be at least 2.HASH_LEN characters long. If too long, only the first 2.HASH_LEN characters are read.

Definition at line 290 of file infohash.h.

## Hash() [4/4]

template<size_t N>

dht::Hash< N >::Hash | ( | const msgpack::object & | o | ) |

inline

Definition at line 84 of file infohash.h.

## Member Function Documentation

## begin()

template<size_t N>

iterator dht::Hash< N >::begin | ( |  | ) |

inline

Definition at line 91 of file infohash.h.

## cbegin()

template<size_t N>

const_iterator dht::Hash< N >::cbegin | ( |  | ) | const

inline

Definition at line 92 of file infohash.h.

## cend()

template<size_t N>

const_iterator dht::Hash< N >::cend | ( |  | ) | const

inline

Definition at line 94 of file infohash.h.

## cmp()

template<size_t N>

static int dht::Hash< N >::cmp | ( | const Hash< N > & | id1,
|  | const Hash< N > & | id2
| ) |  |

inline static

Forget about the `‘XOR-metric’'. An id is just a path from the root of the tree, so bits are numbered from the start.

Definition at line 149 of file infohash.h.

## commonBits()

template<size_t N>

static unsigned dht::Hash< N >::commonBits | ( | const Hash< N > & | id1,
|  | const Hash< N > & | id2
| ) |  |

inline static

Find how many bits two ids have in common.

Definition at line 155 of file infohash.h.

## data() [1/2]

template<size_t N>

uint8_t * dht::Hash< N >::data | ( |  | ) |

inline

Definition at line 90 of file infohash.h.

## data() [2/2]

template<size_t N>

const uint8_t * dht::Hash< N >::data | ( |  | ) | const

inline

Definition at line 89 of file infohash.h.

## end()

template<size_t N>

iterator dht::Hash< N >::end | ( |  | ) |

inline

Definition at line 93 of file infohash.h.

## get() [1/3]

template<size_t N>

static Hash dht::Hash< N >::get | ( | const std::string & | data | ) |

inline static

Definition at line 220 of file infohash.h.

## get() [2/3]

template<size_t N>

static Hash dht::Hash< N >::get | ( | const std::vector< uint8_t > & | data | ) |

inline static

Definition at line 224 of file infohash.h.

## get() [3/3]

template<size_t N>

static Hash dht::Hash< N >::get | ( | const uint8_t * | data,
|  | size_t | data_len
| ) |  |

inline static

Computes the hash from a given data buffer of size data_len.

Definition at line 231 of file infohash.h.

## getBit()

template<size_t N>

bool dht::Hash< N >::getBit | ( | unsigned | nbit | ) | const

inline

Definition at line 197 of file infohash.h.

## getRandom()

template<size_t N>

Hash< N > dht::Hash< N >::getRandom

static

Definition at line 316 of file infohash.h.

## lowbit()

template<size_t N>

int dht::Hash< N >::lowbit | ( |  | ) | const

inline

Find the lowest 1 bit in an id. Result will allways be lower than 8*N

Definition at line 132 of file infohash.h.

## msgpack_pack()

template<size_t N>
template<typename Packer >

void dht::Hash< N >::msgpack_pack | ( | Packer & | pk | ) | const

inline

Definition at line 251 of file infohash.h.

## msgpack_unpack()

template<size_t N>

void dht::Hash< N >::msgpack_unpack | ( | msgpack::object | o | ) |

inline

Definition at line 257 of file infohash.h.

## operator bool()

template<size_t N>

dht::Hash< N >::operator bool | ( |  | ) | const

inline explicit

Definition at line 115 of file infohash.h.

## operator!=()

template<size_t N>

bool dht::Hash< N >::operator!= | ( | const Hash< N > & | h | ) | const

inline

Definition at line 105 of file infohash.h.

## operator<()

template<size_t N>

bool dht::Hash< N >::operator< | ( | const Hash< N > & | o | ) | const

inline

Definition at line 107 of file infohash.h.

## operator==()

template<size_t N>

bool dht::Hash< N >::operator== | ( | const Hash< N > & | h | ) | const

inline

Definition at line 96 of file infohash.h.

## operator[]() [1/2]

template<size_t N>

uint8_t & dht::Hash< N >::operator[] | ( | size_t | index | ) |

inline

Definition at line 125 of file infohash.h.

## operator[]() [2/2]

template<size_t N>

const uint8_t & dht::Hash< N >::operator[] | ( | size_t | index | ) | const

inline

Definition at line 126 of file infohash.h.

## setBit()

template<size_t N>

void dht::Hash< N >::setBit | ( | unsigned | nbit,
|  | bool | b
| ) |  |

inline

Definition at line 205 of file infohash.h.

## size()

template<size_t N>

size_t dht::Hash< N >::size | ( |  | ) | const

inline

Definition at line 88 of file infohash.h.

## to_c_str()

template<size_t N>

const char * dht::Hash< N >::to_c_str

Definition at line 343 of file infohash.h.

## toFloat()

template<size_t N>

double dht::Hash< N >::toFloat | ( |  | ) | const

inline

Definition at line 212 of file infohash.h.

## toString()

template<size_t N>

std::string dht::Hash< N >::toString

Definition at line 356 of file infohash.h.

## xorCmp()

template<size_t N>

int dht::Hash< N >::xorCmp | ( | const Hash< N > & | id1,
|  | const Hash< N > & | id2
| ) |  | const

inline

Determine whether id1 or id2 is closer to this

Definition at line 180 of file infohash.h.

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

- /tmp/slackbuilds_libs/opendht-1.7.4/include/opendht/infohash.h