libcaf  0.13.2
Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | Related Functions | List of all members
caf::uniform_type_info Class Referenceabstract

Provides a platform independent type name and a (very primitive) kind of reflection in combination with object. More...

#include <uniform_type_info.hpp>

Inheritance diagram for caf::uniform_type_info:
caf::abstract_uniform_type_info< T >

Public Member Functions

 uniform_type_info (uniform_type_info &&)=delete
 
 uniform_type_info (const uniform_type_info &)=delete
 
uniform_type_infooperator= (uniform_type_info &&)=delete
 
uniform_type_infooperator= (const uniform_type_info &)=delete
 
virtual uniform_value create (const uniform_value &other=uniform_value{}) const =0
 Creates a copy of other.
 
uniform_value deserialize (deserializer *source) const
 Deserializes an object of this type from source.
 
virtual const char * name () const =0
 Get the internal name for this type. More...
 
virtual bool equal_to (const std::type_info &tinfo) const =0
 Determines if this uniform_type_info describes the same type than tinfo. More...
 
virtual bool equals (const void *instance1, const void *instance2) const =0
 Compares two instances of this type. More...
 
virtual void serialize (const void *instance, serializer *sink) const =0
 Serializes instance to sink. More...
 
virtual void deserialize (void *instance, deserializer *source) const =0
 Deserializes instance from source. More...
 
virtual message as_message (void *instance) const =0
 Returns instance encapsulated as an message.
 
uint16_t type_nr () const
 Returns a unique number for builtin types or 0.
 

Static Public Member Functions

static const uniform_type_infofrom (const std::string &uniform_name)
 Get instance by uniform name. More...
 
static const uniform_type_infofrom (const std::type_info &tinfo)
 Get instance by std::type_info. More...
 
static std::vector< const uniform_type_info * > instances ()
 Get all instances. More...
 

Protected Member Functions

 uniform_type_info (uint16_t typenr=0)
 
template<class T >
uniform_value create_impl (const uniform_value &other) const
 

Friends

bool operator== (const uniform_type_info &lhs, const uniform_type_info &rhs)
 

Related Functions

(Note that these are not member functions.)

using uniform_type_info_ptr = std::unique_ptr< uniform_type_info >
 
bool operator== (const uniform_type_info &lhs, const uniform_type_info &rhs)
 
bool operator!= (const uniform_type_info &lhs, const uniform_type_info &rhs)
 

Detailed Description

Provides a platform independent type name and a (very primitive) kind of reflection in combination with object.

The platform independent name is equal to the "in-sourcecode-name" with a few exceptions:

Member Function Documentation

virtual void caf::uniform_type_info::deserialize ( void *  instance,
deserializer source 
) const
pure virtual

Deserializes instance from source.

Parameters
instanceInstance of this type.
sourceData source.
Precondition
instance has the type of this.
virtual bool caf::uniform_type_info::equal_to ( const std::type_info &  tinfo) const
pure virtual

Determines if this uniform_type_info describes the same type than tinfo.

Returns
true if tinfo describes the same type as this.

Implemented in caf::abstract_uniform_type_info< T >.

virtual bool caf::uniform_type_info::equals ( const void *  instance1,
const void *  instance2 
) const
pure virtual

Compares two instances of this type.

Parameters
instance1Left hand operand.
instance2Right hand operand.
Returns
true if *instance1 == *instance2. @preinstance1andinstance2have the type ofthis`.

Implemented in caf::abstract_uniform_type_info< T >.

static const uniform_type_info* caf::uniform_type_info::from ( const std::string &  uniform_name)
static

Get instance by uniform name.

Parameters
uniform_nameThe internal name for a type.
Returns
The instance associated to uniform_name.
Exceptions
std::runtime_errorif no type named uniform_name was found.
static const uniform_type_info* caf::uniform_type_info::from ( const std::type_info &  tinfo)
static

Get instance by std::type_info.

Parameters
tinfoA STL RTTI object.
Returns
An instance describing the same type as tinfo.
Exceptions
std::runtime_errorif tinfo is not an announced type.
static std::vector<const uniform_type_info*> caf::uniform_type_info::instances ( )
static

Get all instances.

Returns
A vector with all known (announced) instances.
virtual const char* caf::uniform_type_info::name ( ) const
pure virtual

Get the internal name for this type.

Returns
A string describing the internal type name.

Implemented in caf::abstract_uniform_type_info< T >.

virtual void caf::uniform_type_info::serialize ( const void *  instance,
serializer sink 
) const
pure virtual

Serializes instance to sink.

Parameters
instanceInstance of this type.
sinkTarget data sink.
Precondition
instance has the type of this.
Exceptions
std::ios_base::failureThrown when the underlying serialization layer is unable to serialize the data, e.g., when exceeding maximum buffer sizes.

Friends And Related Function Documentation

bool operator!= ( const uniform_type_info lhs,
const uniform_type_info rhs 
)
related
bool operator== ( const uniform_type_info lhs,
const uniform_type_info rhs 
)
related
using uniform_type_info_ptr = std::unique_ptr<uniform_type_info>
related

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