ADTF  3.18.2
TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >

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

Inheritance diagram for TypeAccessList< 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::vector< value_typecontainer_type
 local definition of the container type
 
typedef std::unordered_map< std::string, value_typecontainer_named_type
 local definition of the container type for getNamedItemViewList
 
typedef std::unordered_map< std::string, value_typecontainer_named_compatibility_type
 local definition of the container type for getNamedItemList, which was had incompatible changes within dev_essential 1.3.0 and 1.3.1
 
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 TypeAccessListObserver< DDL_TYPE_TO_ACCESS > parent_type
 local definition of the parent type to register observer
 
typedef TypeAccessListSubject< 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

 TypeAccessList ()=delete
 no default CTOR!
 
 TypeAccessList (TYPE_VALIDATOR_CLASS *validator, const std::string &validation_info)
 CTOR. More...
 
virtual ~TypeAccessList ()
 DTOR.
 
 TypeAccessList (TypeAccessList &&other)
 move CTOR
 
TypeAccessListoperator= (TypeAccessList &&other)
 move assignment operator More...
 
 TypeAccessList (const TypeAccessList &other)
 copies (deepcopy!) CTOR More...
 
TypeAccessListoperator= (const TypeAccessList &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...
 
OptionalSize getPosOf (const std::string &type_name) const
 Get the Pos Of the item with the name type_name. More...
 
bool contains (const std::string &type_name) const
 determines is the type name exists in this list More...
 
bool contains (const DDL_TYPE_TO_ACCESS &type_to_find) const
 determines if the item is in this list. More...
 
bool contains (const TypeAccessList &other) const
 determines if the other is a subset of this list More...
 
void add (const DDL_TYPE_TO_ACCESS &type_to_add)
 adds the given item More...
 
void insert (const size_t pos_idx, const DDL_TYPE_TO_ACCESS &type_to_add)
 inserts the given item at the given pos More...
 
void emplace (DDL_TYPE_TO_ACCESS &&type_to_add)
 emplace 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 TypeAccessList &other) const
 equality operator. More...
 
bool operator!= (const TypeAccessList &other) const
 non equality operator. More...
 
void clear ()
 clears the list and remove this as observer
 
void popBack ()
 removes the last element if exists. More...
 
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 (TypeAccessList &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...
 
size_t countContains (const std::string &type_name) const
 determines the count of the type name exists in this list More...
 
bool checkExistenceAndEquality (const DDL_TYPE_TO_ACCESS &type_to_add)
 
void setValidator (TYPE_VALIDATOR_CLASS *validator)
 
const container_named_typegetNamedContainer () const
 
container_named_typegetNamedContainer ()
 

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::TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >

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

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

Definition at line 79 of file dd_access_list.h.

Constructor & Destructor Documentation

◆ TypeAccessList() [1/2]

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

CTOR.

Parameters
validatorthe validator for name check!
validation_infoinfo for errors

Definition at line 146 of file dd_access_list.h.

◆ TypeAccessList() [2/2]

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

copies (deepcopy!) CTOR

Parameters
otherthe other list

Definition at line 193 of file dd_access_list.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 471 of file dd_access_list.h.

◆ 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 337 of file dd_access_list.h.

Referenced by TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::insert().

◆ begin() [1/2]

iterator begin ( )
inline

the range based begin iterator

Returns
iterator

Definition at line 505 of file dd_access_list.h.

Referenced by adtf::mediadescription::quiet::for_each_element_infix(), and TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::operator==().

◆ begin() [2/2]

const_iterator begin ( ) const
inline

range based begin operator for const access

Returns
const_iterator

Definition at line 545 of file dd_access_list.h.

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

◆ cbegin()

const_iterator cbegin ( ) const
inline

const begin iterator access

Returns
const_iterator

Definition at line 525 of file dd_access_list.h.

Referenced by TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::begin(), and TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::insert().

◆ cend()

const_iterator cend ( ) const
inline

const end iterator access

Returns
const_iterator

Definition at line 535 of file dd_access_list.h.

Referenced by TypeAccessList< 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 list.

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

Definition at line 305 of file dd_access_list.h.

References TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::get().

◆ contains() [2/3]

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

determines is the type name exists in this list

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

Definition at line 279 of file dd_access_list.h.

Referenced by TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::contains().

◆ contains() [3/3]

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

determines if the other is a subset of this list

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

Definition at line 321 of file dd_access_list.h.

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

◆ countContains()

size_t countContains ( const std::string &  type_name) const
inlineprivate

determines the count of the type name exists in this list

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

Definition at line 701 of file dd_access_list.h.

Referenced by TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::modelChanged().

◆ deepCopy()

void deepCopy ( TypeAccessList< 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 689 of file dd_access_list.h.

◆ emplace()

void emplace ( DDL_TYPE_TO_ACCESS &&  type_to_add)
inline

emplace the given item

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

Definition at line 409 of file dd_access_list.h.

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

◆ end() [1/2]

iterator end ( )
inline

the range based end iterator

Returns
iterator

Definition at line 515 of file dd_access_list.h.

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

◆ end() [2/2]

const_iterator end ( ) const
inline

range based end operator for const access

Returns
const_iterator

Definition at line 555 of file dd_access_list.h.

References TypeAccessList< 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 232 of file dd_access_list.h.

Referenced by TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::contains().

◆ getPosOf()

OptionalSize getPosOf ( const std::string &  type_name) const
inline

Get the Pos Of the item with the name type_name.

Parameters
type_namethe item to get the pos of
Return values
validOptionalSize with the position within the list (0 based)
invalidnot in list

Definition at line 259 of file dd_access_list.h.

◆ getSize()

size_t getSize ( ) const
inline

◆ insert()

void insert ( const size_t  pos_idx,
const DDL_TYPE_TO_ACCESS &  type_to_add 
)
inline

inserts the given item at the given pos

Parameters
type_to_addthe item to insert
pos_idxthe pos where to insert the item
Exceptions
throwsif a item with that name already exists, or the pos_idx is invalid or out of range

Definition at line 368 of file dd_access_list.h.

References TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::add(), TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::cbegin(), and TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::getSize().

◆ 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 640 of file dd_access_list.h.

References TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::countContains().

◆ operator!=()

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

non equality operator.

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

Definition at line 581 of file dd_access_list.h.

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

◆ operator=() [1/2]

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

copies (deepcopy!) and overwrite the current content.

Parameters
otherthe other list
Returns
TypeAccessList&

Definition at line 210 of file dd_access_list.h.

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

◆ operator=() [2/2]

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

move assignment operator

Returns
TypeAccessList&

Definition at line 170 of file dd_access_list.h.

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

◆ operator==()

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

equality operator.

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

Definition at line 567 of file dd_access_list.h.

References TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::begin(), and TypeAccessList< DDL_TYPE_TO_ACCESS, TYPE_VALIDATOR_CLASS >::end().

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

◆ popBack()

void popBack ( )
inline

removes the last element if exists.

Exceptions
ddl::dd::Errorif it is empty.

Definition at line 608 of file dd_access_list.h.

◆ remove()

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

item to remove

Parameters
type_namethe item name to remove

Definition at line 437 of file dd_access_list.h.