libzypp 17.37.17
zypp::callback::UserData Class Reference

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

#include <zypp-core/UserData.h>

Inheritance diagram for zypp::callback::UserData:

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

Private Member Functions

DataTypedataRef () const

Private Attributes

ContentType _type
shared_ptr< DataType_dataP

(Note that these are not member symbols.)

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

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 39 of file UserData.h.

Member Typedef Documentation

◆ AnyType

Definition at line 42 of file UserData.h.

◆ bad_AnyType_cast

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

Definition at line 43 of file UserData.h.

◆ DataType

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

Definition at line 45 of file UserData.h.

◆ size_type

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

Definition at line 46 of file UserData.h.

◆ key_type

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

Definition at line 47 of file UserData.h.

◆ value_type

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

Definition at line 48 of file UserData.h.

◆ const_iterator

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

Definition at line 49 of file UserData.h.

◆ ContentType

Constructor & Destructor Documentation

◆ UserData() [1/4]

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

Default ctor.

Definition at line 55 of file UserData.h.

◆ UserData() [2/4]

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

Ctor taking ContentType.

Definition at line 59 of file UserData.h.

◆ UserData() [3/4]

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

Ctor taking ContentType.

Definition at line 63 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 67 of file UserData.h.

Member Function Documentation

◆ type() [1/2]

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

Get type.

Definition at line 73 of file UserData.h.

◆ type() [2/2]

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

Set type.

Definition at line 77 of file UserData.h.

◆ operator bool()

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

Validate object in a boolean context: has data.

Definition at line 82 of file UserData.h.

◆ empty()

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

Whether data is empty.

Definition at line 86 of file UserData.h.

◆ size()

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

Size of data.

Definition at line 90 of file UserData.h.

◆ data()

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

The data.

Definition at line 94 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 98 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 102 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 119 of file UserData.h.

◆ set() [2/2]

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

Definition at line 122 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 135 of file UserData.h.

◆ reset() [2/2]

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

Definition at line 138 of file UserData.h.

◆ erase()

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

Remove key from data.

Definition at line 142 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 146 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
}
UserData()
Default ctor.
Definition UserData.h:55
const DataType & data() const
The data.
Definition UserData.h:94
boost::bad_any_cast bad_AnyType_cast
Definition UserData.h:43

Definition at line 176 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 187 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 201 of file UserData.h.

◆ dataRef()

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

Definition at line 221 of file UserData.h.

◆ operator<<()

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

Stream output.

Definition at line 230 of file UserData.h.

Member Data Documentation

◆ _type

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

Definition at line 225 of file UserData.h.

◆ _dataP

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

Definition at line 226 of file UserData.h.


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