Lunchbox
1.11.0
|
Abstraction layer and common utilities for multi-threaded programming. More...
Classes | |
class | Any |
A class which can hold instances of any type. More... | |
class | bad_any_cast |
A specialization for exceptions thrown by an unsuccessful any_cast. More... | |
class | Array |
A wrapper for C arrays without any memory management. More... | |
class | Atomic |
A variable with atomic semantics and standalone atomic operations. More... | |
class | Buffer |
A simple memory buffer with some helper functions. More... | |
class | Clock |
A class for time measurements. More... | |
class | Condition |
A condition variable and associated lock. More... | |
class | DSO |
Helper to access dynamic shared objects (DSO) More... | |
class | FutureTimeout |
class | FutureImpl |
Base class to implement the wait method fulfilling the future. More... | |
class | Future |
A future represents a asynchronous operation. More... | |
class | Future< void > |
Future template specialization for void. More... | |
class | FutureFunction |
A Future implementation using a boost::function for fulfilment. More... | |
class | PtrHash |
A hash for pointer keys. More... | |
struct | hashRefPtr |
A hash function for RefPtr keys. More... | |
class | RefPtrHash |
A hash for RefPtr keys. More... | |
class | IndexIterator |
Counter-based, as opposed to pointer-based, iterator for any container. More... | |
class | Launcher |
The launcher executes a command from a separate process. More... | |
class | LFQueue |
A thread-safe, lock-free queue with non-blocking access. More... | |
class | LFVector |
STL-like vector implementation providing certain thread-safety guarantees. More... | |
class | LFVectorIterator |
An iterator for LFVector. More... | |
class | Lock |
A lock (mutex) primitive. More... | |
class | Lockable |
A convenience structure to hold data together with a lock for access. More... | |
class | Log |
The logging class. More... | |
class | MemoryMap |
Helper to map a file to a memory address (mmap). More... | |
class | Monitor |
A monitor primitive. More... | |
class | MPI |
MPI functionality wrapper. More... | |
class | MTQueue |
A thread-safe queue with a blocking read access. More... | |
class | NonCopyable |
Base class to make objects non-copyable. More... | |
class | OMP |
Base class for OpenMP functionality. More... | |
class | PersistentMap |
Unified interface to save key-value pairs in a persistent store. More... | |
class | PerThread |
Implements thread-specific storage for C++ objects. More... | |
class | PerThreadRef |
Thread-specific storage for a RefPtr. More... | |
class | Plugin |
Manages a class deriving from a PluginT interface. More... | |
class | PluginFactory |
Factory for Plugin classes. More... | |
struct | hasInitDataT |
Helper class to statically register derived plugin classes. More... | |
class | PluginRegisterer |
class | PluginRegisterer< Impl, true > |
Specialized PluginRegisterer for implementations which have the InitDataT definition. More... | |
class | PluginRegisterer< Impl, false > |
Specialized PluginRegisterer for plugin implementations which don't have the InitDataT definition. More... | |
class | Pool |
An object allocation pool. More... | |
class | FutureBool |
A boolean future with a known value. More... | |
class | Referenced |
Base class for referenced objects. More... | |
class | RefPtr |
A smart reference pointer, aka boost::intrusive_ptr. More... | |
class | Request |
A Future implementation for a RequestHandler request. More... | |
class | RequestHandler |
A thread-safe request handler. More... | |
class | Result |
A result returns an error code and behaves like a boolean. More... | |
class | RNG |
A random number generator. More... | |
class | ScopedMutex |
A scoped mutex. More... | |
class | SpinLock |
A fast lock for uncontended memory access. More... | |
class | Thread |
Utility class to execute code in a separate execution thread. More... | |
class | ThreadID |
An utility class to wrap OS-specific thread identifiers. More... | |
class | TimedLock |
A mutex with timeout capabilities. More... | |
class | TLS |
Provides thread-local storage API used by PerThread and PerThreadRef. More... | |
class | UnorderedIntervalSet |
A container to store intervals of elements efficently. More... | |
class | Version |
Information about the current Lunchbox version. More... | |
Typedefs | |
typedef boost::mpl::list < int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, float, double, bool, std::string, servus::uint128_t > | podTypes |
List of supported POD types for lunchbox::Any serialization. More... | |
typedef Future< bool > | f_bool_t |
A boolean future. More... | |
typedef Monitor< bool > | Monitorb |
A boolean monitor variable. | |
typedef Monitor< uint32_t > | Monitoru |
An unsigned 32bit integer monitor. | |
typedef ScopedMutex< SpinLock, ReadOp > | ScopedFastRead |
A scoped mutex for a fast uncontended read operation. More... | |
typedef ScopedMutex< SpinLock, WriteOp > | ScopedFastWrite |
A scoped mutex for a fast uncontended write operation. More... | |
typedef ScopedMutex< Lock, ReadOp > | ScopedRead |
A scoped mutex for a read operation. More... | |
typedef ScopedMutex< Lock, WriteOp > | ScopedWrite |
A scoped mutex for a write operation. More... | |
typedef ScopedMutex< Condition, WriteOp > | ScopedCondition |
A scoped mutex for a write operation on a condition. More... | |
typedef std::vector< std::string > | Strings |
A vector of std::strings. More... | |
typedef Strings::const_iterator | StringsCIter |
typedef Strings::iterator | StringsIter |
typedef Atomic< int32_t > | a_int32_t |
An atomic 32 bit integer variable. | |
typedef Atomic< ssize_t > | a_ssize_t |
An atomic signed size variable. | |
typedef Buffer< uint8_t > | Bufferb |
a byte buffer | |
typedef Future< uint32_t > | f_uint32_t |
A future 32 bit unsigned promise. | |
typedef Future< ssize_t > | f_ssize_t |
A future signed size promise. | |
typedef Future< void > | f_void_t |
A future signed size promise. | |
typedef std::vector< DSO * > | DSOs |
Enumerations | |
enum | LogLevel { LOG_ERROR = 1, LOG_WARN = LOG_ERROR, LOG_INFO, LOG_DEBUG, LOG_VERB, LOG_ALL } |
The logging levels. More... | |
enum | LogTopic { LOG_EXCEPTION = 0x01, LOG_BUG = 0x04, LOG_CUSTOM = 0x10, LOG_ANY = 0xffffu } |
The logging topics. More... | |
enum | VisitorResult { TRAVERSE_CONTINUE, TRAVERSE_TERMINATE, TRAVERSE_PRUNE } |
The result code from any visit operation. More... | |
Functions | |
template<typename T > | |
std::vector< T >::iterator | find (std::vector< T > &container, const T &element) |
Find the element in the given vector. More... | |
template<typename T > | |
std::vector< T >::const_iterator | find (const std::vector< T > &container, const T &element) |
Find the element in the given vector. More... | |
template<typename T , typename P > | |
std::vector< T >::iterator | find_if (std::vector< T > &container, const P &predicate) |
Find the element matching the predicate. More... | |
template<typename T , typename P > | |
std::vector< T >::const_iterator | find_if (std::vector< const T > &container, const P &predicate) |
Find the element matching the predicate. More... | |
template<typename C > | |
void | usort (C &c) |
Uniquely sort and eliminate duplicates in a container. More... | |
template<typename ValueType > | |
ValueType * | any_cast (Any *operand) |
Retrieve the value stored in an Any including type checking. More... | |
template<typename ValueType > | |
const ValueType * | any_cast (const Any *operand) |
Retrieve the value stored in an Any including type checking. More... | |
template<typename ValueType > | |
ValueType | any_cast (Any &operand) |
Retrieve the value stored in an Any including type checking. More... | |
template<typename ValueType > | |
ValueType | any_cast (const Any &operand) |
Retrieve the value stored in an Any including type checking. More... | |
template<typename ValueType > | |
ValueType * | unsafe_any_cast (Any *operand) |
Retrieve the value stored in an Any without type checking. More... | |
template<typename ValueType > | |
const ValueType * | unsafe_any_cast (const Any *operand) |
Retrieve the value stored in an Any without type checking. More... | |
template<typename ValueType > | |
ValueType | unsafe_any_cast (Any &operand) |
Retrieve the value stored in an Any without type checking. More... | |
template<typename ValueType > | |
ValueType | unsafe_any_cast (const Any &operand) |
Retrieve the value stored in an Any without type checking. More... | |
template<class TypeList , class Archive > | |
void | registerTypelist (Archive &ar) |
Registers the types from the given type list for serializing it inside a lunchbox::Any through the given archive. | |
template<class Archive , class Object , class Stream > | |
void | serializeAny (Object &object, Stream &stream) |
Serializes the given object which can be a lunchbox::Any through the given archive type to/from the given stream. | |
template<class Archive , class Object , class Stream > | |
void | saveAny (Object &object, Stream &stream) |
Saves the given object which can be a lunchbox::Any through the given archive type to/from the given stream. | |
template<class Archive , class Object , class Stream > | |
void | loadAny (Object &object, Stream &stream) |
Loads the given object which can be a lunchbox::Any through the given archive type to/from the given stream. | |
template<class T > | |
std::ostream & | operator<< (std::ostream &os, const Array< T > &array) |
Pretty-print all members of the array. More... | |
void | memoryBarrier () |
Perform a full memory barrier. More... | |
void | memoryBarrierAcquire () |
Perform a load-with-acquire memory barrier. More... | |
void | memoryBarrierRelease () |
Perform a store-with-release memory barrier. More... | |
template<class T > | |
int32_t | getIndexOfLastBit (T value) |
template<class T > | |
void | byteswap (T &value) |
Swap the byte order of the given value. More... | |
bool | daemonize () |
Turn the calling process into a daemon. More... | |
LUNCHBOX_API void | abort () |
LUNCHBOX_API void | checkHeap () |
LUNCHBOX_API std::ostream & | sysError (std::ostream &os) |
Print a textual description of the current system error. More... | |
LUNCHBOX_API std::string | sysError () |
LUNCHBOX_API std::string | backtrace (const size_t skipFrames) |
Get the current call stack. More... | |
LUNCHBOX_API std::ostream & | backtrace (std::ostream &os) |
Print the current call stack. More... | |
LUNCHBOX_API std::string | demangleTypeID (const char *mangled) |
template<class T > | |
std::string | className (const T *object) |
Print the RTTI name of the given class. More... | |
template<class T > | |
std::string | className (const T &object) |
Print the RTTI name of the given class. More... | |
template<class T > | |
std::string | format (const T *data, const size_t num) |
Format the given array in a human-readable form. More... | |
template<> | |
std::string | format (const uint8_t *data, const size_t num) |
template<> | |
std::string | format (const void *data, const size_t num) |
template<class T > | |
std::string | format (const std::vector< T > &data) |
LUNCHBOX_API Strings | searchDirectory (const std::string &directory, const std::string &pattern) |
Retrieve a list of files in a directory matching a boost::regex pattern. More... | |
LUNCHBOX_API std::string | getFilename (const std::string &filename) |
LUNCHBOX_API std::string | getDirname (const std::string &filename) LB_DEPRECATED |
LUNCHBOX_API std::string | getExecutablePath () |
LUNCHBOX_API std::string | getLibraryPath () |
LUNCHBOX_API Strings | getLibraryPaths () |
LUNCHBOX_API bool | init (const int argc, char **argv) |
Initialize the Lunchbox base classes. More... | |
LUNCHBOX_API bool | exit () |
De-initialize the Lunchbox base classes. More... | |
template<class T > | |
std::ostream & | operator<< (std::ostream &os, const LFVector< T > &v) |
Output the vector and up to 256 items to the ostream. More... | |
template<class D , class L > | |
std::ostream & | operator<< (std::ostream &os, const Lockable< D, L > &l) |
Print the data to the given output stream. More... | |
LUNCHBOX_API std::ostream & | indent (std::ostream &os) |
Increases the indentation level of the Log stream, causing subsequent lines to be intended by four characters. More... | |
LUNCHBOX_API std::ostream & | exdent (std::ostream &os) |
Decrease the indentation level of the Log stream. More... | |
LUNCHBOX_API std::ostream & | disableFlush (std::ostream &os) |
Disable flushing of the Log stream. More... | |
LUNCHBOX_API std::ostream & | enableFlush (std::ostream &os) |
Re-enable flushing of the Log stream. More... | |
LUNCHBOX_API std::ostream & | forceFlush (std::ostream &os) |
Flush the Log stream regardless of the auto-flush state. More... | |
LUNCHBOX_API std::ostream & | disableHeader (std::ostream &os) |
Disable printing of the Log header for subsequent lines. More... | |
LUNCHBOX_API std::ostream & | enableHeader (std::ostream &os) |
Re-enable printing of the Log header. More... | |
std::ostream & | startBlock (std::ostream &os) |
Indent, disable flush and header for block printing. More... | |
std::ostream & | stopBlock (std::ostream &os) |
Exdent, denable flush and header to stop block print. More... | |
std::ostream & | operator<< (std::ostream &os, const MemoryMap &m) |
template<typename T > | |
std::ostream & | operator<< (std::ostream &os, const Monitor< T > &monitor) |
Print the monitor to the given output stream. More... | |
static void | setZero (void *ptr, const size_t size) |
OS-independent call to bzero(3). More... | |
LUNCHBOX_API std::string | getHostname () |
template<class T > | |
void | perThreadDelete (T *object) |
Default PerThread destructor deleting the object. More... | |
template<class T > | |
void | perThreadNoDelete (T *) |
Empty PerThread destructor. More... | |
Future< bool > | makeTrueFuture () |
Future< bool > | makeFalseFuture () |
template<class T > | |
std::ostream & | operator<< (std::ostream &os, RefPtr< T > rp) |
Print the reference pointer to the given output stream. More... | |
template<class T > | |
std::string | className (const RefPtr< T > &rp) |
LUNCHBOX_API std::ostream & | operator<< (std::ostream &, const RequestHandler &) |
std::ostream & | operator<< (std::ostream &os, const Result &result) |
LUNCHBOX_API void | sleep (const uint32_t milliSeconds) |
Sleep the current thread for a number of milliseconds. More... | |
LUNCHBOX_API std::ostream & | operator<< (std::ostream &, const Thread::Affinity) |
Output the affinity setting in human-readable form. More... | |
LUNCHBOX_API std::ostream & | operator<< (std::ostream &, const ThreadID &) |
Print the thread to the given output stream. More... | |
std::ostream & | operator<< (std::ostream &os, const VisitorResult &result) |
Variables | |
class lunchbox::NonCopyable | LB_DEPRECATED |
Abstraction layer and common utilities for multi-threaded programming.
Lunchbox provides C++ classes to abstract the underlying operating system and to implement common utilities for multi-threaded C++ programs. Classes with non-virtual destructors are not intended to be subclassed.
typedef Future< bool > lunchbox::f_bool_t |
typedef boost::mpl::list< int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, float, double, bool, std::string, servus::uint128_t > lunchbox::podTypes |
List of supported POD types for lunchbox::Any serialization.
Definition at line 49 of file anySerialization.h.
typedef ScopedMutex< Condition, WriteOp > lunchbox::ScopedCondition |
A scoped mutex for a write operation on a condition.
Definition at line 126 of file scopedMutex.h.
typedef ScopedMutex< SpinLock, ReadOp > lunchbox::ScopedFastRead |
A scoped mutex for a fast uncontended read operation.
Definition at line 114 of file scopedMutex.h.
typedef ScopedMutex< SpinLock, WriteOp > lunchbox::ScopedFastWrite |
A scoped mutex for a fast uncontended write operation.
Definition at line 117 of file scopedMutex.h.
typedef ScopedMutex< Lock, ReadOp > lunchbox::ScopedRead |
typedef ScopedMutex< Lock, WriteOp > lunchbox::ScopedWrite |
typedef std::vector< std::string > lunchbox::Strings |
enum lunchbox::LogLevel |
enum lunchbox::LogTopic |
The result code from any visit operation.
Enumerator | |
---|---|
TRAVERSE_CONTINUE |
continue the traversal |
TRAVERSE_TERMINATE |
abort the traversal |
TRAVERSE_PRUNE |
do not traverse current entity downwards |
Definition at line 29 of file visitorResult.h.
ValueType* lunchbox::any_cast | ( | Any * | operand | ) |
Retrieve the value stored in an Any including type checking.
Definition at line 236 of file any.h.
References lunchbox::Any::type().
Referenced by any_cast().
|
inline |
Retrieve the value stored in an Any including type checking.
Definition at line 255 of file any.h.
References any_cast().
ValueType lunchbox::any_cast | ( | Any & | operand | ) |
Retrieve the value stored in an Any including type checking.
bad_any_cast | if types are not matching |
Definition at line 268 of file any.h.
References any_cast(), and lunchbox::Any::type().
|
inline |
Retrieve the value stored in an Any including type checking.
bad_any_cast | if types are not matching |
Definition at line 288 of file any.h.
References any_cast().
LUNCHBOX_API std::string lunchbox::backtrace | ( | const size_t | skipFrames | ) |
Get the current call stack.
May not be implemented on all platforms.
skipFrames | the number of most recent stack frames to ignore. |
Referenced by lunchbox::Referenced::ref().
LUNCHBOX_API std::ostream& lunchbox::backtrace | ( | std::ostream & | os | ) |
Print the current call stack.
|
inline |
Print the RTTI name of the given class.
Definition at line 74 of file debug.h.
Referenced by format(), lunchbox::PerThread< T, D >::operator*(), lunchbox::RefPtr< FutureImpl< void > >::operator*(), lunchbox::RefPtr< FutureImpl< void > >::operator->(), and operator<<().
|
inline |
|
inline |
Turn the calling process into a daemon.
Only the forked child process returns from this function. A new session is created and the standard file descriptors are closed. The current working directory is unchanged, and the Log output is not redirected to a file.
Definition at line 39 of file daemon.h.
References exit(), LBWARN, and sysError().
LUNCHBOX_API std::ostream& lunchbox::disableFlush | ( | std::ostream & | os | ) |
Disable flushing of the Log stream.
Referenced by operator<<(), and startBlock().
LUNCHBOX_API std::ostream& lunchbox::disableHeader | ( | std::ostream & | os | ) |
Disable printing of the Log header for subsequent lines.
Referenced by startBlock().
LUNCHBOX_API std::ostream& lunchbox::enableFlush | ( | std::ostream & | os | ) |
Re-enable flushing of the Log stream.
Referenced by operator<<(), and stopBlock().
LUNCHBOX_API std::ostream& lunchbox::enableHeader | ( | std::ostream & | os | ) |
Re-enable printing of the Log header.
Referenced by stopBlock().
LUNCHBOX_API std::ostream& lunchbox::exdent | ( | std::ostream & | os | ) |
Decrease the indentation level of the Log stream.
Referenced by stopBlock().
LUNCHBOX_API bool lunchbox::exit | ( | ) |
De-initialize the Lunchbox base classes.
Referenced by daemonize().
std::vector< T >::iterator lunchbox::find | ( | std::vector< T > & | container, |
const T & | element | ||
) |
std::vector< T >::const_iterator lunchbox::find | ( | const std::vector< T > & | container, |
const T & | element | ||
) |
std::vector< T >::iterator lunchbox::find_if | ( | std::vector< T > & | container, |
const P & | predicate | ||
) |
std::vector<T>::const_iterator lunchbox::find_if | ( | std::vector< const T > & | container, |
const P & | predicate | ||
) |
LUNCHBOX_API std::ostream& lunchbox::forceFlush | ( | std::ostream & | os | ) |
Flush the Log stream regardless of the auto-flush state.
|
inline |
Format the given array in a human-readable form.
Depending on the data type, a different formatting may be used.
data | The pointer to the data to print. |
num | The number of elements of T to print, for T==void the number of bytes. |
Definition at line 93 of file debug.h.
References className().
Referenced by operator<<().
LUNCHBOX_API std::string lunchbox::getDirname | ( | const std::string & | filename | ) |
LUNCHBOX_API std::string lunchbox::getExecutablePath | ( | ) |
LUNCHBOX_API std::string lunchbox::getFilename | ( | const std::string & | filename | ) |
LUNCHBOX_API std::string lunchbox::getHostname | ( | ) |
LUNCHBOX_API std::string lunchbox::getLibraryPath | ( | ) |
LUNCHBOX_API Strings lunchbox::getLibraryPaths | ( | ) |
LUNCHBOX_API std::ostream& lunchbox::indent | ( | std::ostream & | os | ) |
Increases the indentation level of the Log stream, causing subsequent lines to be intended by four characters.
Referenced by startBlock().
LUNCHBOX_API bool lunchbox::init | ( | const int | argc, |
char ** | argv | ||
) |
Initialize the Lunchbox base classes.
exit() should be called independent of the return value of this function.
argc | the command line argument count. |
argv | the command line argument values. |
|
inline |
Definition at line 39 of file readyFuture.h.
|
inline |
Definition at line 35 of file readyFuture.h.
|
inline |
Perform a full memory barrier.
Definition at line 38 of file atomic.h.
Referenced by memoryBarrierAcquire(), memoryBarrierRelease(), lunchbox::Atomic< T >::operator!=(), lunchbox::Atomic< T >::operator=(), and lunchbox::Atomic< T >::operator==().
|
inline |
Perform a load-with-acquire memory barrier.
Definition at line 54 of file atomic.h.
References memoryBarrier().
Referenced by lunchbox::Atomic< T >::addAndGet(), lunchbox::Atomic< T >::getAndAdd(), lunchbox::Atomic< T >::getAndSub(), lunchbox::Atomic< T >::operator T(), and lunchbox::Atomic< T >::subAndGet().
|
inline |
Perform a store-with-release memory barrier.
Definition at line 65 of file atomic.h.
References memoryBarrier().
Referenced by lunchbox::Atomic< T >::addAndGet(), lunchbox::Atomic< T >::getAndAdd(), lunchbox::Atomic< T >::getAndSub(), and lunchbox::Atomic< T >::subAndGet().
|
inline |
|
inline |
Print the data to the given output stream.
Definition at line 68 of file lockable.h.
References disableFlush(), and enableFlush().
LUNCHBOX_API std::ostream& lunchbox::operator<< | ( | std::ostream & | , |
const ThreadID & | |||
) |
Print the thread to the given output stream.
|
inline |
Print the reference pointer to the given output stream.
Definition at line 180 of file refPtr.h.
References disableFlush(), and enableFlush().
LUNCHBOX_API std::ostream& lunchbox::operator<< | ( | std::ostream & | , |
const Thread::Affinity | |||
) |
Output the affinity setting in human-readable form.
std::ostream & lunchbox::operator<< | ( | std::ostream & | os, |
const LFVector< T > & | v | ||
) |
Output the vector and up to 256 items to the ostream.
Definition at line 423 of file lfVector.ipp.
References className().
|
inline |
Print the monitor to the given output stream.
Definition at line 436 of file monitor.h.
References lunchbox::Monitor< T >::get().
void lunchbox::perThreadDelete | ( | T * | object | ) |
Default PerThread destructor deleting the object.
Definition at line 29 of file perThread.h.
void lunchbox::perThreadNoDelete | ( | T * | ) |
LUNCHBOX_API Strings lunchbox::searchDirectory | ( | const std::string & | directory, |
const std::string & | pattern | ||
) |
Retrieve a list of files in a directory matching a boost::regex pattern.
|
inlinestatic |
OS-independent call to bzero(3).
Definition at line 74 of file os.h.
Referenced by lunchbox::LFVector< T, nSlots >::LFVector().
LUNCHBOX_API void lunchbox::sleep | ( | const uint32_t | milliSeconds | ) |
Sleep the current thread for a number of milliseconds.
|
inline |
Indent, disable flush and header for block printing.
Definition at line 178 of file log.h.
References disableFlush(), disableHeader(), and indent().
|
inline |
Exdent, denable flush and header to stop block print.
Definition at line 181 of file log.h.
References enableFlush(), enableHeader(), and exdent().
LUNCHBOX_API std::ostream& lunchbox::sysError | ( | std::ostream & | os | ) |
Print a textual description of the current system error.
The current system error is OS-specific, e.g., errno or GetLastError().
Referenced by daemonize().
LUNCHBOX_API std::string lunchbox::sysError | ( | ) |
|
inline |
Retrieve the value stored in an Any without type checking.
Definition at line 302 of file any.h.
Referenced by unsafe_any_cast().
|
inline |
Retrieve the value stored in an Any without type checking.
Definition at line 315 of file any.h.
References unsafe_any_cast().
ValueType lunchbox::unsafe_any_cast | ( | Any & | operand | ) |
Retrieve the value stored in an Any without type checking.
Definition at line 327 of file any.h.
References unsafe_any_cast().
ValueType lunchbox::unsafe_any_cast | ( | const Any & | operand | ) |
Retrieve the value stored in an Any without type checking.
Definition at line 340 of file any.h.
References unsafe_any_cast().
void lunchbox::usort | ( | C & | c | ) |
Uniquely sort and eliminate duplicates in a container.
Definition at line 62 of file algorithm.h.
Referenced by usort().