ROSE  0.11.50.0
Classes | Typedefs | Functions
Rose::Combinatorics Namespace Reference

Description

Combinatoric functions.

Classes

class  Hasher
 Hash interface. More...
 
class  HasherFnv
 Fowler-Noll-Vo hashing using the Hasher interface. More...
 
class  HasherGcrypt
 Hasher for any libgcrypt hash algorithm. More...
 
class  HasherSha256Builtin
 Built-in SHA-256 hasher. More...
 

Typedefs

typedef HasherGcrypt< 0 > HasherMd5
 MD5 hasher. More...
 
typedef HasherGcrypt< 0 > HasherSha1
 SHA1 hasher. More...
 
typedef HasherGcrypt< 0 > HasherSha256
 SHA-256 hasher. More...
 
typedef HasherGcrypt< 0 > HasherSha384
 SHA-384 hasher. More...
 
typedef HasherGcrypt< 0 > HasherSha512
 SHA-512 hasher. More...
 
typedef HasherGcrypt< 0 > HasherCrc32
 ISO 3309 hasher. More...
 

Functions

ROSE_DLL_API bool flip_coin ()
 Simulate flipping a coin. More...
 
template<typename T >
void shuffle (std::vector< T > &vector, size_t nitems=UNLIMITED, size_t limit=UNLIMITED)
 Shuffle the values of a vector. More...
 
template<class T , class U >
std::vector< std::pair< T, U > > zip (const std::vector< T > &first, const std::vector< U > &second)
 Convert two vectors to a vector of pairs. More...
 
template<class T , class U >
std::pair< std::vector< T >, std::vector< U > > unzip (const std::vector< std::pair< T, U > > &pairs)
 Convert a vector of pairs to a pair of vectors. More...
 

Typedef Documentation

MD5 hasher.

Throws exception if libgcrypt is not configured.

Definition at line 383 of file Combinatorics.h.

SHA1 hasher.

Throws exception if libgcrypt is not configured.

Definition at line 384 of file Combinatorics.h.

SHA-256 hasher.

Throws exception if libgcrypt is not configured.

Definition at line 385 of file Combinatorics.h.

SHA-384 hasher.

Throws exception if libgcrypt is not configured.

Definition at line 386 of file Combinatorics.h.

SHA-512 hasher.

Throws exception if libgcrypt is not configured.

Definition at line 387 of file Combinatorics.h.

ISO 3309 hasher.

Throws exception if libgcrypt is not configured.

Definition at line 388 of file Combinatorics.h.

Function Documentation

ROSE_DLL_API bool Rose::Combinatorics::flip_coin ( )

Simulate flipping a coin.

Randomly returns true or false with equal probability.

template<typename T >
void Rose::Combinatorics::shuffle ( std::vector< T > &  vector,
size_t  nitems = UNLIMITED,
size_t  limit = UNLIMITED 
)

Shuffle the values of a vector.

This algorithm randomly shuffles the items in the vector by swapping values at indexes zero through limit with values at randomly selected indexes zero through nitems. The defaults for nitems and limit are the size of the input vector.

Definition at line 76 of file Combinatorics.h.

References Sawyer::fastRandomIndex().

template<class T , class U >
std::vector<std::pair<T, U> > Rose::Combinatorics::zip ( const std::vector< T > &  first,
const std::vector< U > &  second 
)

Convert two vectors to a vector of pairs.

If the two input vectors are not the same length, then the length of the result is the length of the shorter input vector.

Definition at line 427 of file Combinatorics.h.

template<class T , class U >
std::pair<std::vector<T>, std::vector<U> > Rose::Combinatorics::unzip ( const std::vector< std::pair< T, U > > &  pairs)

Convert a vector of pairs to a pair of vectors.

Definition at line 439 of file Combinatorics.h.