libmpd++
DASH MPD parsing and manipulation library
 
Loading...
Searching...
No Matches
UIntVWithID.hh
Go to the documentation of this file.
1#ifndef _BBC_PARSE_DASH_MPD_U_INT_V_WITH_I_D_HH_
2#define _BBC_PARSE_DASH_MPD_U_INT_V_WITH_I_D_HH_
3/*****************************************************************************
4 * DASH MPD parsing library in C++: UIntVWithID class
5 *****************************************************************************
6 * Copyright: (C) 2025 British Broadcasting Corporation
7 * Author(s): David Waring <david.waring2@bbc.co.uk>
8 * License: LGPLv3
9 *
10 * For full license terms please see the LICENSE file distributed with this
11 * library or refer to: https://www.gnu.org/licenses/lgpl-3.0.txt.
12 */
13#include <iostream>
14#include <string>
15
16#include "macros.hh"
17
20// Forward declarations for types only used by pointer or reference
21namespace xmlpp {
22 class Element;
23 class Node;
24}
27
29
35class LIBMPDPP_PUBLIC_API UIntVWithID : public std::list<unsigned int> {
36public:
37 UIntVWithID() = delete;
38 UIntVWithID(unsigned int id,
39 const std::list<URI> &profiles = std::list<URI>{},
40 const std::optional<RFC6838ContentType> &content_type = std::nullopt);
41 UIntVWithID(const std::list<unsigned int> &init, unsigned int id,
42 const std::list<URI> &profiles = std::list<URI>{},
43 const std::optional<RFC6838ContentType> &content_type = std::nullopt);
44 UIntVWithID(std::list<unsigned int> &&init, unsigned int id,
45 const std::list<URI> &profiles = std::list<URI>{},
46 const std::optional<RFC6838ContentType> &content_type = std::nullopt);
47 UIntVWithID(std::initializer_list<unsigned int> init, unsigned int id,
48 const std::list<URI> &profiles = std::list<URI>{},
49 const std::optional<RFC6838ContentType> &content_type = std::nullopt);
50 UIntVWithID(const UIntVWithID &to_copy);
52
53 virtual ~UIntVWithID() {};
54
57
58 bool operator==(const UIntVWithID &other) const;
59
60 operator std::string() const;
61
62 // @id
63 unsigned int id() const { return m_id; };
64 UIntVWithID &id(unsigned int val) { m_id = val; return *this; };
65
66 // @profiles
67 const std::list<URI> &profiles() const { return m_profiles; };
68 std::list<URI>::const_iterator profilesBegin() const { return m_profiles.cbegin(); };
69 std::list<URI>::iterator profilesBegin() { return m_profiles.begin(); };
70 std::list<URI>::const_iterator profilesEnd() const { return m_profiles.cend(); };
71 std::list<URI>::iterator profilesEnd() { return m_profiles.end(); };
72 const URI &profile(std::list<URI>::size_type idx) const;
73 UIntVWithID &profiles(const std::list<URI> &val) { m_profiles = val; return *this; };
74 UIntVWithID &profiles(std::list<URI> &&val) { m_profiles = std::move(val); return *this; };
75 UIntVWithID &profilesAdd(const URI &val) { m_profiles.push_back(val); return *this; };
76 UIntVWithID &profilesAdd(URI &&val) { m_profiles.push_back(std::move(val)); return *this; };
78 UIntVWithID &profilesRemove(const std::list<URI>::const_iterator &it);
79 UIntVWithID &profilesRemove(const std::list<URI>::iterator &it);
80
81 // @contentType
82 bool hasContentType() const { return m_contentType.has_value(); };
83 const std::optional<RFC6838ContentType> &contentType() const { return m_contentType; };
84 UIntVWithID &contentType(const std::nullopt_t&) { m_contentType.reset(); return *this; };
85 UIntVWithID &contentType(const RFC6838ContentType &val) { m_contentType = val; return *this; };
86 UIntVWithID &contentType(RFC6838ContentType &&val) { m_contentType = std::move(val); return *this; };
87 UIntVWithID &contentType(const std::optional<RFC6838ContentType> &val) { m_contentType = val; return *this; };
88 UIntVWithID &contentType(std::optional<RFC6838ContentType> &&val) { m_contentType = std::move(val); return *this; };
89
91protected:
92 friend class MPD;
93 UIntVWithID(xmlpp::Node&);
94 void setXMLElement(xmlpp::Element&) const;
96
97private:
98 unsigned int m_id;
99 std::list<URI> m_profiles;
100 std::optional<RFC6838ContentType> m_contentType;
101};
102
104
105/* vim:ts=8:sts=4:sw=4:expandtab:
106 */
107#endif /*_BBC_PARSE_DASH_MPD_U_INT_V_WITH_I_D_HH_*/
Definition MPD.hh:49
Definition RFC6838ContentType.hh:35
Definition UIntVWithID.hh:35
UIntVWithID & contentType(const std::optional< RFC6838ContentType > &val)
Definition UIntVWithID.hh:87
UIntVWithID & contentType(const RFC6838ContentType &val)
Definition UIntVWithID.hh:85
const std::list< URI > & profiles() const
Definition UIntVWithID.hh:67
UIntVWithID & contentType(RFC6838ContentType &&val)
Definition UIntVWithID.hh:86
bool operator==(const UIntVWithID &other) const
std::list< URI >::const_iterator profilesEnd() const
Definition UIntVWithID.hh:70
UIntVWithID & id(unsigned int val)
Definition UIntVWithID.hh:64
UIntVWithID(UIntVWithID &&to_move)
UIntVWithID & operator=(UIntVWithID &&to_move)
virtual ~UIntVWithID()
Definition UIntVWithID.hh:53
UIntVWithID & profilesAdd(URI &&val)
Definition UIntVWithID.hh:76
unsigned int id() const
Definition UIntVWithID.hh:63
UIntVWithID & profilesAdd(const URI &val)
Definition UIntVWithID.hh:75
UIntVWithID & profilesRemove(const std::list< URI >::iterator &it)
UIntVWithID & profiles(const std::list< URI > &val)
Definition UIntVWithID.hh:73
UIntVWithID & contentType(const std::nullopt_t &)
Definition UIntVWithID.hh:84
std::list< URI >::iterator profilesBegin()
Definition UIntVWithID.hh:69
UIntVWithID(std::list< unsigned int > &&init, unsigned int id, const std::list< URI > &profiles=std::list< URI >{}, const std::optional< RFC6838ContentType > &content_type=std::nullopt)
UIntVWithID(const std::list< unsigned int > &init, unsigned int id, const std::list< URI > &profiles=std::list< URI >{}, const std::optional< RFC6838ContentType > &content_type=std::nullopt)
UIntVWithID(unsigned int id, const std::list< URI > &profiles=std::list< URI >{}, const std::optional< RFC6838ContentType > &content_type=std::nullopt)
UIntVWithID(const UIntVWithID &to_copy)
UIntVWithID & profilesRemove(const std::list< URI >::const_iterator &it)
const URI & profile(std::list< URI >::size_type idx) const
std::list< URI >::iterator profilesEnd()
Definition UIntVWithID.hh:71
UIntVWithID & profilesRemove(const URI &val)
UIntVWithID & contentType(std::optional< RFC6838ContentType > &&val)
Definition UIntVWithID.hh:88
UIntVWithID & operator=(const UIntVWithID &to_copy)
std::list< URI >::const_iterator profilesBegin() const
Definition UIntVWithID.hh:68
bool hasContentType() const
Definition UIntVWithID.hh:82
const std::optional< RFC6838ContentType > & contentType() const
Definition UIntVWithID.hh:83
UIntVWithID(std::initializer_list< unsigned int > init, unsigned int id, const std::list< URI > &profiles=std::list< URI >{}, const std::optional< RFC6838ContentType > &content_type=std::nullopt)
UIntVWithID & profiles(std::list< URI > &&val)
Definition UIntVWithID.hh:74
Definition URI.hh:40
#define LIBMPDPP_NAMESPACE_END
Definition macros.hh:54
#define LIBMPDPP_PUBLIC_API
Used to mark something as part of the public API.
Definition macros.hh:21
#define LIBMPDPP_NAMESPACE_BEGIN
Definition macros.hh:50