libzypp  17.18.0
zypp::callback::UserData Class Reference

Typesafe passing of user data via callbacks. More...

#include <UserData.h>

Public Types

typedef boost::any AnyType
 
typedef boost::bad_any_cast bad_AnyType_cast
 
typedef std::map< std::string, AnyTypeDataType
 
typedef DataType::size_type size_type
 
typedef DataType::key_type key_type
 
typedef DataType::value_type value_type
 
typedef DataType::const_iterator const_iterator
 
typedef zypp::ContentType ContentType
 

Public Member Functions

 UserData ()
 Default ctor. More...
 
 UserData (ContentType type_r)
 Ctor taking ContentType. More...
 
 UserData (std::string type_r)
 Ctor taking ContentType. More...
 
 UserData (std::string type_r, std::string subtype_r)
 Ctor taking ContentType. More...
 
const ContentTypetype () const
 Get type. More...
 
void type (ContentType type_r)
 Set type. More...
 
 operator bool () const
 Validate object in a boolean context: has data. More...
 
bool empty () const
 Whether data is empty. More...
 
size_type size () const
 Size of data. More...
 
const DataTypedata () const
 The data. More...
 
bool haskey (const std::string &key_r) const
 Whether key_r is in data. More...
 
bool hasvalue (const std::string &key_r) const
 Whether key_r is in data and value is not empty. More...
 
bool set (const std::string &key_r, AnyType val_r)
 Set the value for key (nonconst version always returns true). More...
 
bool set (const std::string &key_r, AnyType val_r) const
 
bool reset (const std::string &key_r)
 Set an empty value for key_r (if possible). More...
 
bool reset (const std::string &key_r) const
 
void erase (const std::string &key_r)
 Remove key from data. More...
 
const AnyTypegetvalue (const std::string &key_r) const
 get helper returning the keys AnyType value or an empty value if key does not exist. More...
 
template<class Tp >
const Tp & get (const std::string &key_r) const
 Pass back a const Tp & reference to key_r value. More...
 
template<class Tp >
Tp get (const std::string &key_r, const Tp &default_r) const
 Pass back a Tp copy of key_r value. More...
 
template<class Tp >
bool get (const std::string &key_r, Tp &ret_r) const
 If the value for key_r is of the same type as ret_r, pass it back in ret_r and return true;. More...
 

Private Member Functions

DataTypedataRef () const
 

Private Attributes

ContentType _type
 
shared_ptr< DataType_dataP
 

Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &str, const UserData &obj)
 

Detailed Description

Typesafe passing of user data via callbacks.

Basically a std::map<std::string,AnyType> plus associated ContentType.

Constness protects non-empty values from being modified. It is possible to overwrite empty values or to add new ones.

Definition at line 38 of file UserData.h.

Member Typedef Documentation

◆ AnyType

Definition at line 41 of file UserData.h.

◆ bad_AnyType_cast

typedef boost::bad_any_cast zypp::callback::UserData::bad_AnyType_cast

Definition at line 42 of file UserData.h.

◆ DataType

typedef std::map<std::string,AnyType> zypp::callback::UserData::DataType

Definition at line 44 of file UserData.h.

◆ size_type

typedef DataType::size_type zypp::callback::UserData::size_type

Definition at line 45 of file UserData.h.

◆ key_type

typedef DataType::key_type zypp::callback::UserData::key_type

Definition at line 46 of file UserData.h.

◆ value_type

typedef DataType::value_type zypp::callback::UserData::value_type

Definition at line 47 of file UserData.h.

◆ const_iterator

typedef DataType::const_iterator zypp::callback::UserData::const_iterator

Definition at line 48 of file UserData.h.

◆ ContentType

Constructor & Destructor Documentation

◆ UserData() [1/4]

zypp::callback::UserData::UserData ( )
inline

Default ctor.

Definition at line 54 of file UserData.h.

◆ UserData() [2/4]

zypp::callback::UserData::UserData ( ContentType  type_r)
inlineexplicit

Ctor taking ContentType.

Definition at line 58 of file UserData.h.

◆ UserData() [3/4]

zypp::callback::UserData::UserData ( std::string  type_r)
inlineexplicit

Ctor taking ContentType.

Definition at line 62 of file UserData.h.

◆ UserData() [4/4]

zypp::callback::UserData::UserData ( std::string  type_r,
std::string  subtype_r 
)
inline

Ctor taking ContentType.

Definition at line 66 of file UserData.h.

Member Function Documentation

◆ type() [1/2]

const ContentType& zypp::callback::UserData::type ( ) const
inline

Get type.

Definition at line 72 of file UserData.h.

◆ type() [2/2]

void zypp::callback::UserData::type ( ContentType  type_r)
inline

Set type.

Definition at line 76 of file UserData.h.

◆ operator bool()

zypp::callback::UserData::operator bool ( ) const
inlineexplicit

Validate object in a boolean context: has data.

Definition at line 81 of file UserData.h.

◆ empty()

bool zypp::callback::UserData::empty ( ) const
inline

Whether data is empty.

Definition at line 85 of file UserData.h.

◆ size()

size_type zypp::callback::UserData::size ( ) const
inline

Size of data.

Definition at line 89 of file UserData.h.

◆ data()

const DataType& zypp::callback::UserData::data ( ) const
inline

The data.

Definition at line 93 of file UserData.h.

◆ haskey()

bool zypp::callback::UserData::haskey ( const std::string &  key_r) const
inline

Whether key_r is in data.

Definition at line 97 of file UserData.h.

◆ hasvalue()

bool zypp::callback::UserData::hasvalue ( const std::string &  key_r) const
inline

Whether key_r is in data and value is not empty.

Definition at line 101 of file UserData.h.

◆ set() [1/2]

bool zypp::callback::UserData::set ( const std::string &  key_r,
AnyType  val_r 
)
inline

Set the value for key (nonconst version always returns true).

Const version is allowed to set empty values or to add new ones only.

Definition at line 118 of file UserData.h.

◆ set() [2/2]

bool zypp::callback::UserData::set ( const std::string &  key_r,
AnyType  val_r 
) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 121 of file UserData.h.

◆ reset() [1/2]

bool zypp::callback::UserData::reset ( const std::string &  key_r)
inline

Set an empty value for key_r (if possible).

Definition at line 134 of file UserData.h.

◆ reset() [2/2]

bool zypp::callback::UserData::reset ( const std::string &  key_r) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 137 of file UserData.h.

◆ erase()

void zypp::callback::UserData::erase ( const std::string &  key_r)
inline

Remove key from data.

Definition at line 141 of file UserData.h.

◆ getvalue()

const AnyType& zypp::callback::UserData::getvalue ( const std::string &  key_r) const
inline

get helper returning the keys AnyType value or an empty value if key does not exist.

Definition at line 145 of file UserData.h.

◆ get() [1/3]

template<class Tp >
const Tp& zypp::callback::UserData::get ( const std::string &  key_r) const
inline

Pass back a const Tp & reference to key_r value.

Exceptions
bad_AnyType_castif key is not set or value is not of appropriate type
std::string value( "defaultvalue" );
try
{
value = data.get<std::string>( "mykey" );
}
catch ( const UserData::bad_AnyType_cast & )
{
// no "mykey" or not a std::sting
}

Definition at line 175 of file UserData.h.

◆ get() [2/3]

template<class Tp >
Tp zypp::callback::UserData::get ( const std::string &  key_r,
const Tp &  default_r 
) const
inline

Pass back a Tp copy of key_r value.

Exceptions
bad_AnyType_castif key is not set or value is not of appropriate type
std::string value = data.get<std::string>( "mykey", "defaultvalue" );

Definition at line 186 of file UserData.h.

◆ get() [3/3]

template<class Tp >
bool zypp::callback::UserData::get ( const std::string &  key_r,
Tp &  ret_r 
) const
inline

If the value for key_r is of the same type as ret_r, pass it back in ret_r and return true;.

std::string value( "defaultvalue" );
if ( ! data.get<std::string>( "mykey", value )
{
// no "mykey" or not a std::sting
}

Definition at line 200 of file UserData.h.

◆ dataRef()

DataType& zypp::callback::UserData::dataRef ( ) const
inlineprivate

Definition at line 220 of file UserData.h.

Friends And Related Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream &  str,
const UserData obj 
)
related

Stream output

Definition at line 229 of file UserData.h.

Member Data Documentation

◆ _type

ContentType zypp::callback::UserData::_type
private

Definition at line 224 of file UserData.h.

◆ _dataP

shared_ptr<DataType> zypp::callback::UserData::_dataP
mutableprivate

Definition at line 225 of file UserData.h.


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