Lunchbox  1.12.0
Multi-threaded C++ toolbox library for all application developers creating high-performance multi-threaded programs.
lunchbox::Any Class Reference

A class which can hold instances of any type. More...

#include <any.h>

+ Collaboration diagram for lunchbox::Any:

Public Member Functions

Construction/Destruction
LUNCHBOX_API Any ()
 Construct a new, empty Any. More...
 
template<typename ValueType >
 Any (const ValueType &value)
 Construct a new Any with the given value. More...
 
LUNCHBOX_API Any (const Any &other)
 Copy-construct a new Any with copying content of other. More...
 
LUNCHBOX_API ~Any ()
 Destruct this Any. More...
 
Modifiers
LUNCHBOX_API Anyswap (Any &rhs)
 Exchange the content of this and rhs. More...
 
template<typename ValueType >
Anyoperator= (const ValueType &rhs)
 Assign a new value to this Any. More...
 
LUNCHBOX_API Anyoperator= (Any rhs)
 Exchange the content of this and rhs. More...
 
Queries
LUNCHBOX_API bool empty () const
 
LUNCHBOX_API const std::type_info & type () const
 
LUNCHBOX_API bool operator== (const Any &rhs) const
 
bool operator!= (const Any &rhs) const
 

Friends

class boost::serialization::access
 
template<typename ValueType >
ValueType * any_cast (Any *)
 Retrieve the value stored in an Any including type checking. More...
 
template<typename ValueType >
ValueType * unsafe_any_cast (Any *)
 Retrieve the value stored in an Any without type checking. More...
 

Detailed Description

A class which can hold instances of any type.

This class is based on boost.any with the extension to support serialization if the ValueType supports boost.serialization.

Example:

/* Copyright (c) 2012, Daniel Nachbaur <danielnachbaur@gmail.com>
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License version 2.1 as published
* by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "test.h"
#include <lunchbox/any.h>
int main( int, char** )
{
lunchbox::Any otherAny;
TEST( any.empty( ));
TEST( any.type() == typeid(void));
TEST( any == otherAny );
any = 5;
otherAny = any;
TEST( lunchbox::any_cast< int >( any ) == 5 );
TEST( any.type() == typeid(int));
TEST( any == otherAny );
any = 42;
otherAny = 42;
TEST( lunchbox::any_cast< int >( any ) == 42 );
TEST( any == otherAny );
any = std::string( "blablub" );
TEST( lunchbox::any_cast< std::string >( any ) == "blablub" );
TEST( any.type() == typeid(std::string));
TEST( any != otherAny );
try { TEST( lunchbox::any_cast< int >( any ) != 42 ); }
catch( const lunchbox::bad_any_cast& ) {}
return EXIT_SUCCESS;
}

Definition at line 67 of file any.h.

Constructor & Destructor Documentation

LUNCHBOX_API lunchbox::Any::Any ( )

Construct a new, empty Any.

Version
1.5.0

Referenced by operator=().

+ Here is the caller graph for this function:

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

Construct a new Any with the given value.

Version
1.5.0

Definition at line 77 of file any.h.

LUNCHBOX_API lunchbox::Any::Any ( const Any other)

Copy-construct a new Any with copying content of other.

Version
1.5.0
LUNCHBOX_API lunchbox::Any::~Any ( )

Destruct this Any.

Version
1.5.0

Member Function Documentation

LUNCHBOX_API bool lunchbox::Any::empty ( ) const
Returns
true if this Any is not holding a value.
Version
1.5.0
bool lunchbox::Any::operator!= ( const Any rhs) const
inline
Returns
true if the value from this and rhs are not equal.
Version
1.5.0

Definition at line 127 of file any.h.

template<typename ValueType >
Any& lunchbox::Any::operator= ( const ValueType &  rhs)
inline

Assign a new value to this Any.

Version
1.5.0

Definition at line 95 of file any.h.

References Any().

+ Here is the call graph for this function:

LUNCHBOX_API Any& lunchbox::Any::operator= ( Any  rhs)

Exchange the content of this and rhs.

Version
1.5.0
LUNCHBOX_API bool lunchbox::Any::operator== ( const Any rhs) const
Returns
true if this and rhs are empty or if their values are equal.
Version
1.5.0
LUNCHBOX_API Any& lunchbox::Any::swap ( Any rhs)

Exchange the content of this and rhs.

Version
1.5.0
LUNCHBOX_API const std::type_info& lunchbox::Any::type ( ) const
Returns
the typeid of the contained value if non-empty, otherwise typeid(void).
Version
1.5.0

Referenced by lunchbox::any_cast().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

template<typename ValueType >
ValueType* any_cast ( Any operand)
friend

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.

template<typename ValueType >
ValueType* unsafe_any_cast ( Any operand)
friend

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.


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