Lunchbox  1.10.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
lunchbox Namespace Reference

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  Compressor
 A C++ class to handle one compressor plugin instance. More...
 
struct  CompressorResult
 A structure to hold the results from one compress operation. More...
 
class  Condition
 A condition variable and associated lock. More...
 
class  Decompressor
 A C++ class to handle one decompressor plugin instance. More...
 
class  Downloader
 A C++ class to handle one downloader plugin instance. 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  FutureTrue
 A boolean future always returning true. 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
 Holder for all functions and information of one compression plugin DSO. More...
 
class  PluginRegistry
 A registry for loaded plugins. More...
 
class  PluginVisitorT
 Visitor for all plugins and compressors of a Plugin or PluginRegistry. More...
 
class  Pool
 An object allocation pool. 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  Servus
 Simple wrapper for ZeroConf key/value pairs. 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  uint128_t
 A base type for 128 bit unsigned integer values. More...
 
class  UnorderedIntervalSet
 A container to store intervals of elements efficently. More...
 
class  Uploader
 A C++ class to handle one uploader plugin instance. More...
 
class  URI
 The URI class parses the given uri string according to the regex given in RFC3986. 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,
uint128_t
podTypes
 List of supported POD types for lunchbox::Any serialization. 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< bool > f_bool_t
 A future with a boolean return value.
 
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 Array< void > CompressorChunk
 
typedef std::vector
< CompressorChunk
CompressorChunks
 
typedef std::vector< Plugin * > Plugins
 
typedef Plugins::const_iterator PluginsCIter
 
typedef PluginVisitorT< Plugin,
EqCompressorInfo
PluginVisitor
 
typedef PluginVisitorT< const
Plugin, const EqCompressorInfo
ConstPluginVisitor
 

Enumerations

enum  LogLevel {
  LOG_ERROR = 1, LOG_WARN, LOG_INFO, LOG_VERB,
  LOG_ALL
}
 The logging levels. More...
 
enum  LogTopic { LOG_EXCEPTION = 0x01, LOG_PLUGIN = 0x02, 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 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...
 
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...
 
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 std::ostream & operator<< (std::ostream &, const Servus &)
 Output the servus instance in human-readable format. More...
 
LUNCHBOX_API std::ostream & operator<< (std::ostream &, const Servus::Interface &)
 Output the servus interface in human-readable format. More...
 
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 uint128_t &id)
 ostream operator for 128 bit unsigned integers. More...
 
std::istream & operator>> (std::istream &is, uint128_t &id)
 istream operator for 128 bit unsigned integers. More...
 
uint128_t operator+ (const lunchbox::uint128_t &a, const uint64_t &b)
 Add a 64 bit value to a 128 bit value. More...
 
uint128_t operator+ (const lunchbox::uint128_t &a, const lunchbox::uint128_t &b)
 Add two 128 bit values. More...
 
uint128_t operator- (const lunchbox::uint128_t &a, const uint64_t &b)
 Subtract a 64 bit value from a 128 bit value. More...
 
uint128_t operator& (const lunchbox::uint128_t &a, const lunchbox::uint128_t &b)
 Bitwise and operation on two 128 bit values. More...
 
uint128_t operator| (const lunchbox::uint128_t &a, const lunchbox::uint128_t &b)
 Bitwise or operation on two 128 bit values. More...
 
LUNCHBOX_API uint128_t make_uint128 (const char *string)
 Create a 128 bit integer based on a string. More...
 
LUNCHBOX_API uint128_t make_UUID ()
 Construct a new 128 bit integer with a generated universally unique identifier. More...
 
std::ostream & operator<< (std::ostream &os, const URI &uri)
 
std::ostream & operator<< (std::ostream &os, const VisitorResult &result)
 

Variables

class lunchbox::NonCopyable LB_DEPRECATED
 

Detailed Description

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 Documentation

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, uint128_t > lunchbox::podTypes

List of supported POD types for lunchbox::Any serialization.

Definition at line 49 of file anySerialization.h.

A scoped mutex for a write operation on a condition.

Version
1.3.6

Definition at line 126 of file scopedMutex.h.

A scoped mutex for a fast uncontended read operation.

Version
1.1.2

Definition at line 114 of file scopedMutex.h.

A scoped mutex for a fast uncontended write operation.

Version
1.1.2

Definition at line 117 of file scopedMutex.h.

A scoped mutex for a read operation.

Version
1.1.5

Definition at line 120 of file scopedMutex.h.

typedef ScopedMutex< Lock, WriteOp > lunchbox::ScopedWrite

A scoped mutex for a write operation.

Version
1.1.5

Definition at line 123 of file scopedMutex.h.

typedef std::vector< std::string > lunchbox::Strings

A vector of std::strings.

Version
1.0

Definition at line 221 of file types.h.

Enumeration Type Documentation

The logging levels.

Version
1.0
Enumerator
LOG_ERROR 

Output critical errors.

LOG_WARN 

Output potentially critical warnings.

LOG_INFO 

Output informational messages.

LOG_VERB 

Be noisy.

Definition at line 43 of file log.h.

The logging topics.

See Also
net/log.h, client/log.h
Version
1.0
Enumerator
LOG_EXCEPTION 

Log exception within LBTHROW.

LOG_PLUGIN 

Log plugin handling.

LOG_CUSTOM 

Log topics for other namespaces start here.

LOG_ANY 

Log all Lunchbox topics.

Definition at line 58 of file log.h.

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.

Function Documentation

template<typename ValueType >
ValueType* lunchbox::any_cast ( Any *  operand)

Retrieve the value stored in an Any including type checking.

Returns
the value stored in the given Any, 0 if types are not matching
Version
1.5.0

Definition at line 235 of file any.h.

References lunchbox::Any::type().

Referenced by any_cast().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename ValueType >
const ValueType* lunchbox::any_cast ( const Any *  operand)
inline

Retrieve the value stored in an Any including type checking.

Returns
the value stored in the given Any, 0 if types are not matching
Version
1.5.0

Definition at line 254 of file any.h.

References any_cast().

+ Here is the call graph for this function:

template<typename ValueType >
ValueType lunchbox::any_cast ( Any &  operand)

Retrieve the value stored in an Any including type checking.

Returns
the value stored in the given Any
Exceptions
bad_any_castif types are not matching
Version
1.5.0

Definition at line 267 of file any.h.

References any_cast(), and lunchbox::Any::type().

+ Here is the call graph for this function:

template<typename ValueType >
ValueType lunchbox::any_cast ( const Any &  operand)
inline

Retrieve the value stored in an Any including type checking.

Returns
the value stored in the given Any
Exceptions
bad_any_castif types are not matching
Version
1.5.0

Definition at line 287 of file any.h.

References any_cast().

+ Here is the call graph for this function:

LUNCHBOX_API std::string lunchbox::backtrace ( const size_t  skipFrames)

Get the current call stack.

May not be implemented on all platforms.

Parameters
skipFramesthe number of most recent stack frames to ignore.
Version
1.9.1

Referenced by lunchbox::Referenced::ref().

+ Here is the caller graph for this function:

LUNCHBOX_API std::ostream& lunchbox::backtrace ( std::ostream &  os)

Print the current call stack.

Version
1.0
template<class T >
std::string lunchbox::className ( const T *  object)
inline

Print the RTTI name of the given class.

Version
1.0

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<<().

+ Here is the caller graph for this function:

template<class T >
std::string lunchbox::className ( const T &  object)
inline

Print the RTTI name of the given class.

Version
1.0

Definition at line 78 of file debug.h.

bool lunchbox::daemonize ( )
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.

Returns
true on success, false on error.
Version
1.5.1

Definition at line 39 of file daemon.h.

References exit(), LBWARN, and sysError().

+ Here is the call graph for this function:

LUNCHBOX_API std::ostream& lunchbox::disableFlush ( std::ostream &  os)

Disable flushing of the Log stream.

Version
1.0

Referenced by operator<<(), and startBlock().

+ Here is the caller graph for this function:

LUNCHBOX_API std::ostream& lunchbox::disableHeader ( std::ostream &  os)

Disable printing of the Log header for subsequent lines.

Version
1.0

Referenced by startBlock().

+ Here is the caller graph for this function:

LUNCHBOX_API std::ostream& lunchbox::enableFlush ( std::ostream &  os)

Re-enable flushing of the Log stream.

Version
1.0

Referenced by operator<<(), and stopBlock().

+ Here is the caller graph for this function:

LUNCHBOX_API std::ostream& lunchbox::enableHeader ( std::ostream &  os)

Re-enable printing of the Log header.

Version
1.0

Referenced by stopBlock().

+ Here is the caller graph for this function:

LUNCHBOX_API std::ostream& lunchbox::exdent ( std::ostream &  os)

Decrease the indentation level of the Log stream.

Version
1.0

Referenced by stopBlock().

+ Here is the caller graph for this function:

LUNCHBOX_API bool lunchbox::exit ( )

De-initialize the Lunchbox base classes.

Returns
true if the library was successfully de-initialised, false otherwise
Version
1.0

Referenced by daemonize().

+ Here is the caller graph for this function:

template<typename T >
std::vector< T >::iterator lunchbox::find ( std::vector< T > &  container,
const T &  element 
)

Find the element in the given vector.

Version
1.0

Definition at line 43 of file algorithm.h.

template<typename T >
std::vector< T >::const_iterator lunchbox::find ( const std::vector< T > &  container,
const T &  element 
)

Find the element in the given vector.

Version
1.0

Definition at line 48 of file algorithm.h.

template<typename T , typename P >
std::vector< T >::iterator lunchbox::find_if ( std::vector< T > &  container,
const P &  predicate 
)

Find the element matching the predicate.

Version
1.0

Definition at line 53 of file algorithm.h.

template<typename T , typename P >
std::vector<T>::const_iterator lunchbox::find_if ( std::vector< const T > &  container,
const P &  predicate 
)

Find the element matching the predicate.

Version
1.0

Definition at line 58 of file algorithm.h.

LUNCHBOX_API std::ostream& lunchbox::forceFlush ( std::ostream &  os)

Flush the Log stream regardless of the auto-flush state.

Version
1.0
template<class T >
std::string lunchbox::format ( const T *  data,
const size_t  num 
)
inline

Format the given array in a human-readable form.

Depending on the data type, a different formatting may be used.

Parameters
dataThe pointer to the data to print.
numThe number of elements of T to print, for T==void the number of bytes.
Version
1.9.1

Definition at line 93 of file debug.h.

References className().

Referenced by operator<<().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LUNCHBOX_API std::string lunchbox::getDirname ( const std::string &  filename)
Returns
the directory name part of a path.
Version
1.0
Deprecated:
Use Boost.Filesystem
LUNCHBOX_API std::string lunchbox::getFilename ( const std::string &  filename)
Returns
the file name part of a path.
Version
1.0
Deprecated:
Use Boost.Filesystem
LUNCHBOX_API std::string lunchbox::getHostname ( )
Returns
the local hostname.
Version
1.9.2
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.

Version
1.0

Referenced by startBlock().

+ Here is the caller graph for this function:

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.

Parameters
argcthe command line argument count.
argvthe command line argument values.
Returns
true if the library was successfully initialised, false otherwise
Version
1.0
LUNCHBOX_API uint128_t lunchbox::make_uint128 ( const char *  string)

Create a 128 bit integer based on a string.

The MD5 hash of the given text is used to form the uint128_t.

Parameters
stringthe string to form the uint128_t from.
Version
1.3.2
LUNCHBOX_API uint128_t lunchbox::make_UUID ( )

Construct a new 128 bit integer with a generated universally unique identifier.

Version
1.9.1
void lunchbox::memoryBarrier ( )
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==().

+ Here is the caller graph for this function:

void lunchbox::memoryBarrierAcquire ( )
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().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void lunchbox::memoryBarrierRelease ( )
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().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint128_t lunchbox::operator& ( const lunchbox::uint128_t a,
const lunchbox::uint128_t b 
)
inline

Bitwise and operation on two 128 bit values.

Version
1.1.5

Definition at line 341 of file uint128_t.h.

References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().

+ Here is the call graph for this function:

uint128_t lunchbox::operator+ ( const lunchbox::uint128_t a,
const uint64_t &  b 
)
inline

Add a 64 bit value to a 128 bit value.

Version
1.0

Definition at line 312 of file uint128_t.h.

References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().

+ Here is the call graph for this function:

uint128_t lunchbox::operator+ ( const lunchbox::uint128_t a,
const lunchbox::uint128_t b 
)
inline

Add two 128 bit values.

Version
1.5.1

Definition at line 322 of file uint128_t.h.

uint128_t lunchbox::operator- ( const lunchbox::uint128_t a,
const uint64_t &  b 
)
inline

Subtract a 64 bit value from a 128 bit value.

Version
1.0

Definition at line 331 of file uint128_t.h.

References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().

+ Here is the call graph for this function:

std::ostream & lunchbox::operator<< ( std::ostream &  os,
const uint128_t &  id 
)
inline

ostream operator for 128 bit unsigned integers.

Version
1.0

Definition at line 293 of file uint128_t.h.

template<class T >
std::ostream& lunchbox::operator<< ( std::ostream &  os,
const Array< T > &  array 
)
inline

Pretty-print all members of the array.

Version
1.9.1

Definition at line 47 of file array.h.

References format().

+ Here is the call graph for this function:

template<class D , class L >
std::ostream& lunchbox::operator<< ( std::ostream &  os,
const Lockable< D, L > &  l 
)
inline

Print the data to the given output stream.

Definition at line 68 of file lockable.h.

References disableFlush(), and enableFlush().

+ Here is the call graph for this function:

LUNCHBOX_API std::ostream& lunchbox::operator<< ( std::ostream &  ,
const ThreadID &   
)

Print the thread to the given output stream.

template<class T >
std::ostream& lunchbox::operator<< ( std::ostream &  os,
RefPtr< T >  rp 
)
inline

Print the reference pointer to the given output stream.

Definition at line 180 of file refPtr.h.

References disableFlush(), and enableFlush().

+ Here is the call graph for this function:

LUNCHBOX_API std::ostream& lunchbox::operator<< ( std::ostream &  ,
const Thread::Affinity   
)

Output the affinity setting in human-readable form.

Version
1.7.1
LUNCHBOX_API std::ostream& lunchbox::operator<< ( std::ostream &  ,
const Servus &   
)

Output the servus instance in human-readable format.

Version
1.5.1
LUNCHBOX_API std::ostream& lunchbox::operator<< ( std::ostream &  ,
const Servus::Interface &   
)

Output the servus interface in human-readable format.

Version
1.9.2
template<class T >
std::ostream & lunchbox::operator<< ( std::ostream &  os,
const LFVector< T > &  v 
)

Output the vector and up to 256 items to the ostream.

Version
0.1

Definition at line 423 of file lfVector.ipp.

References className().

+ Here is the call graph for this function:

template<typename T >
std::ostream& lunchbox::operator<< ( std::ostream &  os,
const Monitor< T > &  monitor 
)
inline

Print the monitor to the given output stream.

Version
1.0

Definition at line 396 of file monitor.h.

References lunchbox::Monitor< T >::get().

+ Here is the call graph for this function:

std::istream& lunchbox::operator>> ( std::istream &  is,
uint128_t &  id 
)
inline

istream operator for 128 bit unsigned integers.

Version
1.7.0

Definition at line 303 of file uint128_t.h.

uint128_t lunchbox::operator| ( const lunchbox::uint128_t a,
const lunchbox::uint128_t b 
)
inline

Bitwise or operation on two 128 bit values.

Version
1.1.5

Definition at line 351 of file uint128_t.h.

References lunchbox::uint128_t::high(), and lunchbox::uint128_t::low().

+ Here is the call graph for this function:

template<class T >
void lunchbox::perThreadDelete ( T *  object)

Default PerThread destructor deleting the object.

Version
1.1.2

Definition at line 29 of file perThread.h.

template<class T >
void lunchbox::perThreadNoDelete ( T *  )

Empty PerThread destructor.

Version
1.1.2

Definition at line 32 of file perThread.h.

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.

Returns
all file names matching the given pattern in the given directory.
Version
1.0
1.7.1 using boost::regex for matching
Deprecated:
Use Boost.Filesystem
LUNCHBOX_API void lunchbox::sleep ( const uint32_t  milliSeconds)

Sleep the current thread for a number of milliseconds.

Version
1.0
Deprecated:
Use boost::this_thread::sleep()
std::ostream& lunchbox::startBlock ( std::ostream &  os)
inline

Indent, disable flush and header for block printing.

Version
1.9.1

Definition at line 182 of file log.h.

References disableFlush(), disableHeader(), and indent().

+ Here is the call graph for this function:

std::ostream& lunchbox::stopBlock ( std::ostream &  os)
inline

Exdent, denable flush and header to stop block print.

Version
1.9.1

Definition at line 185 of file log.h.

References enableFlush(), enableHeader(), and exdent().

+ Here is the call graph for this function:

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().

Version
1.0

Referenced by daemonize().

+ Here is the caller graph for this function:

LUNCHBOX_API std::string lunchbox::sysError ( )
Returns
a textual description of the current system error.
Version
1.9.1
template<typename ValueType >
ValueType* lunchbox::unsafe_any_cast ( Any *  operand)
inline

Retrieve the value stored in an Any without type checking.

Returns
the value stored in the given Any
Version
1.5.0

Definition at line 301 of file any.h.

Referenced by unsafe_any_cast().

+ Here is the caller graph for this function:

template<typename ValueType >
const ValueType* lunchbox::unsafe_any_cast ( const Any *  operand)
inline

Retrieve the value stored in an Any without type checking.

Returns
the value stored in the given Any
Version
1.5.0

Definition at line 314 of file any.h.

References unsafe_any_cast().

+ Here is the call graph for this function:

template<typename ValueType >
ValueType lunchbox::unsafe_any_cast ( Any &  operand)

Retrieve the value stored in an Any without type checking.

Returns
the value stored in the given Any
Version
1.5.0

Definition at line 326 of file any.h.

References unsafe_any_cast().

+ Here is the call graph for this function:

template<typename ValueType >
ValueType lunchbox::unsafe_any_cast ( const Any &  operand)

Retrieve the value stored in an Any without type checking.

Returns
the value stored in the given Any
Version
1.5.0

Definition at line 339 of file any.h.

References unsafe_any_cast().

+ Here is the call graph for this function:

template<typename C >
void lunchbox::usort ( C &  c)

Uniquely sort and eliminate duplicates in a container.

Version
1.9.1

Definition at line 62 of file algorithm.h.

Referenced by usort().

+ Here is the caller graph for this function: