ADTF
TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >

Utility class for observable named items where the order is NOT important. More...

Inheritance diagram for TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >:
[legend]

Public Types

typedef DDL_TYPE_TO_ACCESS access_type
 local definition of the access type
 
typedef std::shared_ptr< DDL_TYPE_TO_ACCESS > value_type
 local definition of the value type
 
typedef std::unordered_map< std::string, value_typecontainer_type
 local definition of the container type
 
typedef container_type::iterator iterator
 local definition of the container iterator
 
typedef container_type::const_iterator const_iterator
 local definition of the container const_iterator
 
typedef TypeAccessMapObserver< DDL_TYPE_TO_ACCESS > parent_type
 local definition of the parent type to register observe
 
typedef TypeAccessMapSubject< DDL_TYPE_TO_ACCESS > map_subject_type
 local definition of the internal subject type
 
typedef map_subject_type::observer_type observer_type
 local definition of the observer type
 
typedef parent_type::event_code_type event_code_type
 local definition of the eventcode type
 
typedef parent_type::subject_type subject_type
 local definition of the subject type
 
- Public Types inherited from ModelObserverUtility< MODEL_SUBJECT_T, EVENT_CODE_T >
typedef EVENT_CODE_T event_code_type
 local definition of the event code type
 
typedef MODEL_SUBJECT_T subject_type
 local definition of the subject code type
 

Public Member Functions

 TypeAccessMap ()=delete
 no default CTOR!
 
 TypeAccessMap (TYPE_VALIDATOR_CLASS *validator, const std::string &validation_info)
 CTOR. More...
 
virtual ~TypeAccessMap ()
 DTOR.
 
 TypeAccessMap (TypeAccessMap &&other)
 move CTOR
 
TypeAccessMapoperator= (TypeAccessMap &&other)
 move assignment operator More...
 
 TypeAccessMap (const TypeAccessMap &other)
 copies (deepcopy!) CTOR More...
 
TypeAccessMapoperator= (const TypeAccessMap &other)
 copies (deepcopy!) and overwrite the current content. More...
 
std::shared_ptr< const DDL_TYPE_TO_ACCESS > get (const std::string &type_name) const
 get the item with the given name type_name More...
 
bool contains (const std::string &type_name) const
 determines is the type name exists in this map More...
 
bool contains (const DDL_TYPE_TO_ACCESS &type_to_find) const
 determines if the item is in this map. More...
 
bool contains (const TypeAccessMap &other) const
 determines if the other is a subset of this map More...
 
std::shared_ptr< DDL_TYPE_TO_ACCESS > create (const DDL_TYPE_TO_ACCESS &type_to_add)
 creates the given item by copy More...
 
void add (const DDL_TYPE_TO_ACCESS &type_to_add)
 adds the given item More...
 
std::shared_ptr< DDL_TYPE_TO_ACCESS > create (DDL_TYPE_TO_ACCESS &&type_to_add)
 creates the given item in place More...
 
void emplace (DDL_TYPE_TO_ACCESS &&type_to_add)
 emplaces the given item More...
 
void remove (const std::string &type_name)
 item to remove More...
 
std::shared_ptr< DDL_TYPE_TO_ACCESS > access (const std::string &type_name)
 change access to an item More...
 
size_t getSize () const
 Get the Size. More...
 
iterator begin ()
 the range based begin iterator More...
 
iterator end ()
 the range based end iterator More...
 
const_iterator cbegin () const
 const begin iterator access More...
 
const_iterator cend () const
 const end iterator access More...
 
const_iterator begin () const
 range based begin operator for const access More...
 
const_iterator end () const
 range based end operator for const access More...
 
bool operator== (const TypeAccessMap &other) const
 equality operator. More...
 
bool operator!= (const TypeAccessMap &other) const
 non equality operator. More...
 
void clear ()
 clears the list and remove this as observer
 
void modelChanged (event_code_type event_code, subject_type &subject_changed, const std::string &additional_info)
 overrides the observers utility function. More...
 

Public Attributes

friend TYPE_VALIDATOR_CLASS
 friend validator class
 

Private Member Functions

void deepCopy (TypeAccessMap &destination, TYPE_VALIDATOR_CLASS *validator) const
 copies the content of the of the list (by reseting the observer) and resets the validator to the given one. More...
 

Private Attributes

container_type _types
 
TYPE_VALIDATOR_CLASS_validator
 
std::string _validation_info
 

Additional Inherited Members

- Protected Member Functions inherited from ModelObserverUtility< MODEL_SUBJECT_T, EVENT_CODE_T >
virtual ~ModelObserverUtility ()
 protected DTOR
 

Detailed Description

template<typename DDL_TYPE_TO_ACCESS, typename TYPE_VALIDATOR_CLASS>
class ddl::dd::utility::TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >

Utility class for observable named items where the order is NOT important.

Template Parameters
DDL_TYPE_TO_ACCESSthe value type
TYPE_VALIDATOR_CLASSthe validator class to inform on changes

Definition at line 79 of file access_map.h.

Constructor & Destructor Documentation

◆ TypeAccessMap() [1/2]

TypeAccessMap ( TYPE_VALIDATOR_CLASS validator,
const std::string &  validation_info 
)
inline

CTOR.

Parameters
validatorthe validator for name check!
validation_infoinfo for errors

Definition at line 116 of file access_map.h.

◆ TypeAccessMap() [2/2]

TypeAccessMap ( const TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS > &  other)
inline

copies (deepcopy!) CTOR

Parameters
otherthe other list

Definition at line 163 of file access_map.h.

Member Function Documentation

◆ access()

std::shared_ptr<DDL_TYPE_TO_ACCESS> access ( const std::string &  type_name)
inline

change access to an item

Parameters
type_namethe item name
Returns
std::shared_ptr<DDL_TYPE_TO_ACCESS>

Definition at line 404 of file access_map.h.

Referenced by TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::create(), and TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::remove().

◆ add()

void add ( const DDL_TYPE_TO_ACCESS &  type_to_add)
inline

adds the given item

Parameters
type_to_addthe item to add
Exceptions
throwsif a item with that name already exists

Definition at line 310 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::create().

◆ begin() [1/2]

iterator begin ( )
inline

the range based begin iterator

Returns
iterator

Definition at line 426 of file access_map.h.

◆ begin() [2/2]

const_iterator begin ( ) const
inline

range based begin operator for const access

Returns
const_iterator

Definition at line 462 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::cbegin().

◆ cbegin()

const_iterator cbegin ( ) const
inline

const begin iterator access

Returns
const_iterator

Definition at line 444 of file access_map.h.

Referenced by TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::begin().

◆ cend()

const_iterator cend ( ) const
inline

const end iterator access

Returns
const_iterator

Definition at line 453 of file access_map.h.

Referenced by TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::end().

◆ contains() [1/3]

bool contains ( const DDL_TYPE_TO_ACCESS &  type_to_find) const
inline

determines if the item is in this map.

Parameters
type_to_findthe item to find
Returns
true the item is in this map
false the item is not in this map

Definition at line 233 of file access_map.h.

◆ contains() [2/3]

bool contains ( const std::string &  type_name) const
inline

determines is the type name exists in this map

Parameters
type_namethe type name to check
Returns
true if the typename exists
false the typename does not exist

Definition at line 218 of file access_map.h.

Referenced by TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::contains(), TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::modelChanged(), and TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::operator==().

◆ contains() [3/3]

bool contains ( const TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS > &  other) const
inline

determines if the other is a subset of this map

Parameters
otherthe other map
Returns
true the other map is a subset of this
false the other is not a subset of this

Definition at line 248 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::contains().

◆ create() [1/2]

std::shared_ptr<DDL_TYPE_TO_ACCESS> create ( const DDL_TYPE_TO_ACCESS &  type_to_add)
inline

creates the given item by copy

Parameters
type_to_addthe item to add
Returns
shared pointer to the created element
Exceptions
throwsif a item with that name already exists

Definition at line 265 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::access(), and TypeValidationInfo< T >::getDifference().

Referenced by TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::add(), and TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::emplace().

◆ create() [2/2]

std::shared_ptr<DDL_TYPE_TO_ACCESS> create ( DDL_TYPE_TO_ACCESS &&  type_to_add)
inline

creates the given item in place

Parameters
type_to_addthe item to emplace
Returns
shared pointer to the created element
Exceptions
throwsif a item with that name already exists

Definition at line 322 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::access(), and TypeValidationInfo< T >::getDifference().

◆ deepCopy()

void deepCopy ( TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS > &  destination,
TYPE_VALIDATOR_CLASS validator 
) const
inlineprivate

copies the content of the of the list (by reseting the observer) and resets the validator to the given one.

Parameters
destinationthe destination list where to copy the content of this.
validatorthe validator to set in the destination!

Definition at line 568 of file access_map.h.

◆ emplace()

void emplace ( DDL_TYPE_TO_ACCESS &&  type_to_add)
inline

emplaces the given item

Parameters
type_to_addthe item to emplace
Exceptions
throwsif a item with that name already exists

Definition at line 368 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::create().

Referenced by DDFromXMLFactory< DOM_NODE_TYPE >::createDD().

◆ end() [1/2]

iterator end ( )
inline

the range based end iterator

Returns
iterator

Definition at line 435 of file access_map.h.

◆ end() [2/2]

const_iterator end ( ) const
inline

range based end operator for const access

Returns
const_iterator

Definition at line 471 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::cend().

◆ get()

std::shared_ptr<const DDL_TYPE_TO_ACCESS> get ( const std::string &  type_name) const
inline

get the item with the given name type_name

Parameters
type_namethe item to find
Returns
std::shared_ptr<const DDL_TYPE_TO_ACCESS>

Definition at line 202 of file access_map.h.

◆ getSize()

size_t getSize ( ) const
inline

Get the Size.

Returns
size_t

Definition at line 417 of file access_map.h.

Referenced by TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::operator==().

◆ modelChanged()

void modelChanged ( event_code_type  event_code,
subject_type subject_changed,
const std::string &  additional_info 
)
inlinevirtual

overrides the observers utility function.

Parameters
event_codethe internal event_code
subject_changedthe subject (these are the items of the list)
additional_infothe additional info (if any)

Implements ModelObserverUtility< MODEL_SUBJECT_T, EVENT_CODE_T >.

Definition at line 524 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::contains().

◆ operator!=()

bool operator!= ( const TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS > &  other) const
inline

non equality operator.

Parameters
otherthe other TypeAccessMap to compare this map to.
Returns
false the TypeAccessMap are equal (in size and content)
true the TypeAccessMap are not equal.

Definition at line 498 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::operator==().

◆ operator=() [1/2]

TypeAccessMap& operator= ( const TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS > &  other)
inline

copies (deepcopy!) and overwrite the current content.

Parameters
otherthe other list
Returns
TypeAccessMap&

Definition at line 180 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::clear().

◆ operator=() [2/2]

TypeAccessMap& operator= ( TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS > &&  other)
inline

move assignment operator

Returns
TypeAccessMap&

Definition at line 140 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::clear().

◆ operator==()

bool operator== ( const TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS > &  other) const
inline

equality operator.

Parameters
otherthe other TypeAccessMap to compare this map to.
Returns
true the TypeAccessMap are equal (in size and content)
false the TypeAccessMap are not equal.

Definition at line 482 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::contains(), and TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::getSize().

Referenced by TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::operator!=().

◆ remove()

void remove ( const std::string &  type_name)
inline

item to remove

Parameters
type_namethe item name to remove

Definition at line 378 of file access_map.h.

References TypeAccessMap< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::access().