libebml_ng
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
ebml::ebmlPair< K, V > Class Template Reference

#include <ebmlPair.h>

Inheritance diagram for ebml::ebmlPair< K, V >:
ebml::ebmlElementCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElement > ebml::ebmlMasterElement ebml::ebmlElementCRTP< ebmlMasterElementType, ebmlMasterElement > ebml::ebmlElement

Classes

class  _const_iterator
 
class  _iterator
 

Public Member Functions

std::wstring minirepr () const override
 
K & key ()
 
pair_value_slot_t< V > value ()
 
const K & key () const
 
pair_const_value_t< V > value () const
 
- Public Member Functions inherited from ebml::ebmlElementCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElement >
 ebmlElementCRTP (const ebmlPairType< K, V > *cls, Args &&... args)
 
const ebmlPairType< K, V > & cls () const
 
ebml::ptr< ebmlPair< K, V > > sp ()
 
ebml::ptr< const ebmlPair< K, V > > sp () const
 
ebml::ptr< ebmlElementsp ()
 Returns a shared pointer to the element instance. More...
 
ebml::ptr< const ebmlElementsp () const
 Returns a shared pointer to a const element. More...
 
ebml::ptr< T > sp ()
 
ebml::ptr< T > sp () const
 
ebml::wptr< ebmlPair< K, V > > wp ()
 
ebml::wptr< const ebmlPair< K, V > > wp () const
 
ebml::wptr< ebmlElementwp ()
 
ebml::wptr< const ebmlElementwp () const
 
ebml::wptr< T > wp ()
 
ebml::wptr< T > wp () const
 
ebml::ptr< ebmlPair< K, V > > clone () const
 
- Public Member Functions inherited from ebml::ebmlMasterElement
size_t dataSize () const
 
sizetree_t sizetree () const
 Generates the size tree for the element hierarchy. More...
 
size_t encode (char *, const sizetree_t &) const
 Encodes the element using a precomputed size tree. More...
 
iterator begin ()
 
iterator end ()
 
const_iterator cbegin () const
 
const_iterator cend () const
 
size_t encode (char *) const
 
std::string encode () const
 
size_t encode (ioBase &) const
 
size_t encode (ioBase &, off_t) const
 
- Public Member Functions inherited from ebml::ebmlElementCRTP< ebmlMasterElementType, ebmlMasterElement >
 ebmlElementCRTP (const ebmlMasterElementType *cls, Args &&... args)
 
ebml::ptr< ebmlMasterElementsp ()
 
ebml::ptr< const ebmlMasterElementsp () const
 
ebml::ptr< ebmlElementsp ()
 Returns a shared pointer to the element instance. More...
 
ebml::ptr< const ebmlElementsp () const
 Returns a shared pointer to a const element. More...
 
ebml::ptr< T > sp ()
 
ebml::ptr< T > sp () const
 
ebml::wptr< ebmlMasterElementwp ()
 
ebml::wptr< const ebmlMasterElementwp () const
 
ebml::wptr< ebmlElementwp ()
 
ebml::wptr< const ebmlElementwp () const
 
ebml::wptr< T > wp ()
 
ebml::wptr< T > wp () const
 
ebml::ptr< ebmlMasterElementclone () const
 
- Public Member Functions inherited from ebml::ebmlElement
virtual ~ebmlElement ()
 
ebmlID_t ebmlID () const
 Retrieve the EBML ID of the element. More...
 
template<typename T = ebmlElement>
T & as ()
 Dynamically cast the element to the requested type. More...
 
template<typename T = ebmlElement>
T & as () const
 Const version of the dynamic cast. More...
 
ebml::ptr< ebmlElementsp ()
 Returns a shared pointer to the element instance. More...
 
ebml::ptr< const ebmlElementsp () const
 Returns a shared pointer to a const element. More...
 
template<typename T >
ebml::ptr< T > sp ()
 
template<typename T >
ebml::ptr< T > sp () const
 
ebml::wptr< ebmlElementwp ()
 
ebml::wptr< const ebmlElementwp () const
 
template<typename T >
ebml::wptr< T > wp ()
 
template<typename T >
ebml::wptr< T > wp () const
 
bool parent_is_const () const
 Check if the element's parent is a const object. More...
 
ebml::ptr< ebmlMasterElementparent () const
 Retrieve the parent of this element. More...
 
ebml::ptr< const ebmlMasterElementc_parent () const
 Retrieve a const shared pointer to the parent element. More...
 
ebmlElement_sp root () const
 
c_ebmlElement_sp c_root () const
 
ebmlDocument_sp document () const
 
bool hasParent () const
 
unsigned char headSize () const
 
unsigned char headSize (size_t) const
 
unsigned char sizeWidth () const
 
unsigned char sizeWidth (size_t) const
 
size_t outerSize () const
 
size_t outerSize (size_t) const
 
off_t offsetInParent () const
 
off_t offsetInFile () const
 
off_t dataOffsetInParent () const
 
off_t dataOffsetInFile () const
 
ebml::ptr< ebmlElementclone () const
 
virtual std::wstring repr () const
 
seekData_tmakeSeekData ()
 
seekData_tmakeSeekData () const
 
std::string encode () const
 Encodes the element and returns it as a std::string. More...
 
size_t encode (char *) const
 Encodes the element into a pre-allocated buffer. More...
 
size_t encode (ioBase &) const
 Encodes the element and writes it to a generic I/O stream. More...
 
size_t encode (ioBase &, off_t) const
 Encodes the element and writes it to a specific offset in a stream. More...
 
size_t encode (char *, size_t) const
 Encodes the element using a pre-computed size. More...
 

Protected Member Functions

 ebmlPair (const ebmlPairType< K, V > *)
 
 ebmlPair (const ebmlPairType< K, V > *, const K &, const pair_value_t< V > &)
 
 ebmlPair (const ebmlPairType< K, V > *, const K &, pair_value_t< V > &&)
 
 ebmlPair (const ebmlPairType< K, V > *, K &&, const pair_value_t< V > &)
 
 ebmlPair (const ebmlPairType< K, V > *, K &&, pair_value_t< V > &&)
 
 ebmlPair (const ebmlPair< K, V > &)
 
void _clear () override
 Clears all child elements. More...
 
void _setData (const K &, const pair_value_t< V > &)
 
void _setData (const K &, pair_value_t< V > &&)
 
void _setData (K &&, const pair_value_t< V > &)
 
void _setData (K &&, pair_value_t< V > &&)
 
ebmlMasterElement::_iterator_begin () override
 
ebmlMasterElement::_iterator_end () override
 
ebmlMasterElement::_const_iterator_cbegin () const override
 
ebmlMasterElement::_const_iterator_cend () const override
 
void _addChild (const ebmlElement_sp &) override
 Attaches a child element (rvalue version). More...
 
void _addChild (ebmlElement_sp &&) override
 Attaches a child element (move version). More...
 
- Protected Member Functions inherited from ebml::ebmlElementCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElement >
ebmlElement_clone () const
 
- Protected Member Functions inherited from ebml::ebmlMasterElement
 ebmlMasterElement (const ebmlMasterElementType *)
 
void _init (const parseString &)
 Initializes the element from a parsed EBML string. More...
 
void _init (const parseFile &)
 Initializes the element from parsed file data. More...
 
void _cinit (const parseString &)
 Const initialization from a parsed EBML string. More...
 
void _cinit (const parseFile &)
 Const initialization from parsed file data. More...
 
ebmlElement_decodeChild (const parseString &) const
 Decodes a child element from a parsed string. More...
 
ebmlElement_decodeChild (const parseFile &) const
 Decodes a child element from parsed file data. More...
 
ebmlElement_cdecodeChild (const parseString &) const
 Const version: Decodes a child element from a parsed string. More...
 
ebmlElement_cdecodeChild (const parseFile &) const
 Const version: Decodes a child element from parsed file data. More...
 
size_t _encode (char *) const
 
size_t _encode (char *, const sizetree_t &) const
 Encodes the element using a precomputed size tree. More...
 
virtual void _decodeChildren (parseString::iterator &)
 Decodes child elements from a parseString iterator. More...
 
virtual void _cdecodeChildren (parseString::iterator &)
 Const version of _decodeChildren. More...
 
virtual void _scanChildren (parseFile::iterator &)
 Scans for child elements from a parseFile iterator. More...
 
virtual void _cscanChildren (parseFile::iterator &)
 Scans for child elements from a parseFile iterator. (const version) More...
 
virtual void _handleParseFile (const parseFile &)
 Handles the parsing of seek data for a child element. More...
 
virtual void _chandleParseFile (const parseFile &)
 Handles the parsing of seek data for a child element. (const version) More...
 
void _attachChild (const ebmlElement_sp &child, bool weak=true) const
 Attaches a child element to the master element. More...
 
void _detachChild (const ebmlElement_sp &child) const
 Detaches a child element. More...
 
void _attachChildren (const ebmlElement_l &elems, bool weak=true) const
 Const version of _attachChildren. More...
 
void _detachChildren (const ebmlElement_l &elems) const
 Detaches multiple child elements. More...
 
void _clonedata (const ebmlElement *)
 
- Protected Member Functions inherited from ebml::ebmlElement
 ebmlElement (const ebmlElementType *)
 Protected constructor. More...
 
void _validate ()
 
void _setParent (const ebml::ptr< ebmlMasterElement > &parent, bool weak=true)
 
void _setParent (const ebml::ptr< const ebmlMasterElement > &parent, bool weak=true)
 
void _setParent (ebml::ptr< ebmlMasterElement > &&parent, bool weak=true)
 
void _setParent (ebml::ptr< const ebmlMasterElement > &&parent, bool weak=true)
 
void _setParent (ebmlMasterElement &parent, bool weak=true)
 
void _setParent (const ebmlMasterElement &parent, bool weak=true)
 
void _detach ()
 
size_t _encode_head (char *, size_t) const
 

Protected Attributes

ebml::ptr< ebmlDataElement< K > > _key
 
ebml::ptr< pair_value_inst_t< V > > _value
 
- Protected Attributes inherited from ebml::ebmlMasterElement
occur_d ebmlIDCount
 
- Protected Attributes inherited from ebml::ebmlElement
const ebmlElementType_cls
 Pointer to the companion element type (an ebmlElementClass subclass). More...
 
wptr< ebmlElement_self
 Custom weak pointer to self (used for shared-from-this semantics). More...
 
ebmlDocument_wp _document
 
vintWidth_t _sizeWidth = 0
 
off_t _offsetInParent = -1
 

Friends

class ebmlTypeCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElementType >
 
class ebmlElementCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElement >
 
class ebmlPairType< K, V >
 
template<typename Kp , typename Vp , typename H , typename E , typename A , typename B >
class ebmlMap
 

Additional Inherited Members

- Public Types inherited from ebml::ebmlElementCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElement >
using ebmltype = ebmlPairType< K, V >
 
- Public Types inherited from ebml::ebmlElementCRTP< ebmlMasterElementType, ebmlMasterElement >
using ebmltype = ebmlMasterElementType
 
- Static Protected Member Functions inherited from ebml::ebmlMasterElement
static iterator make_iter (_iterator *)
 
static const_iterator make_iter (_const_iterator *)
 

Constructor & Destructor Documentation

◆ ebmlPair() [1/6]

template<typename K , typename V >
ebml::ebmlPair< K, V >::ebmlPair ( const ebmlPairType< K, V > *  )
protected

◆ ebmlPair() [2/6]

template<typename K , typename V >
ebml::ebmlPair< K, V >::ebmlPair ( const ebmlPairType< K, V > *  ,
const K &  ,
const pair_value_t< V > &   
)
protected

◆ ebmlPair() [3/6]

template<typename K , typename V >
ebml::ebmlPair< K, V >::ebmlPair ( const ebmlPairType< K, V > *  ,
const K &  ,
pair_value_t< V > &&   
)
protected

◆ ebmlPair() [4/6]

template<typename K , typename V >
ebml::ebmlPair< K, V >::ebmlPair ( const ebmlPairType< K, V > *  ,
K &&  ,
const pair_value_t< V > &   
)
protected

◆ ebmlPair() [5/6]

template<typename K , typename V >
ebml::ebmlPair< K, V >::ebmlPair ( const ebmlPairType< K, V > *  ,
K &&  ,
pair_value_t< V > &&   
)
protected

◆ ebmlPair() [6/6]

template<typename K , typename V >
ebml::ebmlPair< K, V >::ebmlPair ( const ebmlPair< K, V > &  )
protected

Member Function Documentation

◆ _addChild() [1/2]

template<typename K , typename V >
void ebml::ebmlPair< K, V >::_addChild ( const ebmlElement_sp )
overrideprotectedvirtual

Attaches a child element (rvalue version).

Implements the mechanism for attaching a child element to the parent element.

Parameters
childShared pointer to the child element.

Implements ebml::ebmlMasterElement.

◆ _addChild() [2/2]

template<typename K , typename V >
void ebml::ebmlPair< K, V >::_addChild ( ebmlElement_sp &&  )
overrideprotectedvirtual

Attaches a child element (move version).

Implements the mechanism for moving a child element to the parent element.

Parameters
childRvalue reference to a shared pointer for the child element.

Implements ebml::ebmlMasterElement.

◆ _begin()

template<typename K , typename V >
ebmlMasterElement::_iterator* ebml::ebmlPair< K, V >::_begin ( )
overrideprotectedvirtual

◆ _cbegin()

template<typename K , typename V >
ebmlMasterElement::_const_iterator* ebml::ebmlPair< K, V >::_cbegin ( ) const
overrideprotectedvirtual

◆ _cend()

template<typename K , typename V >
ebmlMasterElement::_const_iterator* ebml::ebmlPair< K, V >::_cend ( ) const
overrideprotectedvirtual

◆ _clear()

template<typename K , typename V >
void ebml::ebmlPair< K, V >::_clear ( )
overrideprotectedvirtual

Clears all child elements.

Removes all currently attached child elements from the master element.

Reimplemented from ebml::ebmlMasterElement.

◆ _end()

template<typename K , typename V >
ebmlMasterElement::_iterator* ebml::ebmlPair< K, V >::_end ( )
overrideprotectedvirtual

◆ _setData() [1/4]

template<typename K , typename V >
void ebml::ebmlPair< K, V >::_setData ( const K &  ,
const pair_value_t< V > &   
)
protected

◆ _setData() [2/4]

template<typename K , typename V >
void ebml::ebmlPair< K, V >::_setData ( const K &  ,
pair_value_t< V > &&   
)
protected

◆ _setData() [3/4]

template<typename K , typename V >
void ebml::ebmlPair< K, V >::_setData ( K &&  ,
const pair_value_t< V > &   
)
protected

◆ _setData() [4/4]

template<typename K , typename V >
void ebml::ebmlPair< K, V >::_setData ( K &&  ,
pair_value_t< V > &&   
)
protected

◆ key() [1/2]

template<typename K , typename V >
K& ebml::ebmlPair< K, V >::key ( )

◆ key() [2/2]

template<typename K , typename V >
const K& ebml::ebmlPair< K, V >::key ( ) const

◆ minirepr()

template<typename K , typename V >
std::wstring ebml::ebmlPair< K, V >::minirepr ( ) const
overridevirtual

Implements ebml::ebmlElement.

◆ value() [1/2]

template<typename K , typename V >
pair_value_slot_t<V> ebml::ebmlPair< K, V >::value ( )

◆ value() [2/2]

template<typename K , typename V >
pair_const_value_t<V> ebml::ebmlPair< K, V >::value ( ) const

Friends And Related Function Documentation

◆ ebmlElementCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElement >

template<typename K , typename V >
friend class ebmlElementCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElement >
friend

◆ ebmlMap

template<typename K , typename V >
template<typename Kp , typename Vp , typename H , typename E , typename A , typename B >
friend class ebmlMap
friend

◆ ebmlPairType< K, V >

template<typename K , typename V >
friend class ebmlPairType< K, V >
friend

◆ ebmlTypeCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElementType >

template<typename K , typename V >
friend class ebmlTypeCRTP< ebmlPairType< K, V >, ebmlPair< K, V >, ebmlMasterElementType >
friend

Member Data Documentation

◆ _key

template<typename K , typename V >
ebml::ptr<ebmlDataElement<K> > ebml::ebmlPair< K, V >::_key
protected

◆ _value

template<typename K , typename V >
ebml::ptr<pair_value_inst_t<V> > ebml::ebmlPair< K, V >::_value
protected

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