|
| SerializableObjectList () noexcept |
|
| SerializableObjectList (const SerializableObjectList< T, P, OnEditedArgs... > &other) noexcept |
|
| SerializableObjectList (SerializableObjectList< T, P, OnEditedArgs... > &&other) noexcept |
|
| SerializableObjectList (std::initializer_list< std::shared_ptr< T >> elements) noexcept |
|
| SerializableObjectList (const SExpression &node, const Version &fileFormat) |
|
virtual | ~SerializableObjectList () noexcept |
|
bool | isEmpty () const noexcept |
|
int | count () const noexcept |
|
std::vector< Uuid > | getUuids () const noexcept |
|
QSet< Uuid > | getUuidSet () const noexcept |
|
int | indexOf (const T *obj) const noexcept |
|
int | indexOf (const Uuid &key) const noexcept |
|
int | indexOf (const QString &name) const noexcept |
|
bool | contains (int index) const noexcept |
|
bool | contains (const T *obj) const noexcept |
|
bool | contains (const Uuid &key) const noexcept |
|
bool | contains (const QString &name) const noexcept |
|
std::shared_ptr< T > | value (int index) noexcept |
|
std::shared_ptr< const T > | value (int index) const noexcept |
|
std::shared_ptr< T > | find (const T *obj) noexcept |
|
std::shared_ptr< T > | find (const Uuid &key) noexcept |
|
std::shared_ptr< const T > | find (const Uuid &key) const noexcept |
|
std::shared_ptr< T > | find (const QString &name) noexcept |
|
std::shared_ptr< const T > | find (const QString &name) const noexcept |
|
std::shared_ptr< const T > | at (int index) const noexcept |
|
std::shared_ptr< T > & | first () noexcept |
|
std::shared_ptr< const T > | first () const noexcept |
|
std::shared_ptr< T > & | last () noexcept |
|
std::shared_ptr< const T > | last () const noexcept |
|
std::shared_ptr< T > | get (const T *obj) |
|
std::shared_ptr< T > | get (const Uuid &key) |
|
std::shared_ptr< const T > | get (const Uuid &key) const |
|
std::shared_ptr< T > | get (const QString &name) |
|
std::shared_ptr< const T > | get (const QString &name) const |
|
const_iterator | begin () const noexcept |
|
const_iterator | end () const noexcept |
|
const_iterator | cbegin () noexcept |
|
const_iterator | cend () noexcept |
|
iterator | begin () noexcept |
|
iterator | end () noexcept |
|
int | loadFromSExpression (const SExpression &node, const Version &fileFormat) |
|
void | swap (int i, int j) noexcept |
|
int | insert (int index, const std::shared_ptr< T > &obj) noexcept |
|
int | append (const std::shared_ptr< T > &obj) noexcept |
|
std::shared_ptr< T > | take (int index) noexcept |
|
std::shared_ptr< T > | take (const T *obj) noexcept |
|
std::shared_ptr< T > | take (const Uuid &uuid) noexcept |
|
std::shared_ptr< T > | take (const QString &name) noexcept |
|
void | remove (int index) noexcept |
|
void | remove (const T *obj) noexcept |
|
void | remove (const Uuid &uuid) noexcept |
|
void | remove (const QString &name) noexcept |
|
void | clear () noexcept |
|
void | serialize (SExpression &root) const override |
| Serialize the object into an existing S-Expression node. More...
|
|
SerializableObjectList< T, P, OnEditedArgs... > | sortedByUuid () const noexcept |
|
SerializableObjectList< T, P, OnEditedArgs... > | sortedByName () const noexcept |
|
std::shared_ptr< T > | operator[] (int i) noexcept |
|
std::shared_ptr< const T > | operator[] (int i) const noexcept |
|
bool | operator== (const SerializableObjectList< T, P, OnEditedArgs... > &rhs) const noexcept |
|
bool | operator!= (const SerializableObjectList< T, P, OnEditedArgs... > &rhs) const noexcept |
|
SerializableObjectList< T, P, OnEditedArgs... > & | operator= (const SerializableObjectList< T, P, OnEditedArgs... > &rhs) noexcept |
|
SerializableObjectList< T, P, OnEditedArgs... > & | operator= (SerializableObjectList< T, P, OnEditedArgs... > &&rhs) noexcept |
|
| SerializableObject () noexcept |
|
virtual | ~SerializableObject () noexcept |
|
SExpression | serializeToDomElement (const QString &name) const |
| Serialize the object to a new S-Expression node. More...
|
|
template<typename T, typename P, typename... OnEditedArgs>
class librepcb::SerializableObjectList< T, P, OnEditedArgs >
The SerializableObjectList class implements a list of librepcb::SerializableObject.
This template class lets you hold a list of serializable objects and provides some useful features:
- Template Parameters
-
T | The type of the list items. The type must provide following functionality:
- Optional: A nothrow copy constructor (to make the list copyable)
- Optional: A constructor with one parameter of type
const SExpression&
- Optional: A method
serialize() according to librepcb::SerializableObject
- Optional: Comparison operator overloadings
- Optional: A method
Uuid getUuid() const noexcept
- Optional: A method
QString getName() const noexcept
|
P | A class which provides the S-Expression node tag name of the list items. Example: struct MyNameProvider {static constexpr const char* tagname = "item";}; |
- Note
- Instead of directly storing elements of type
T
, elements are always wrapped into a std::shared_ptr<T>
before adding them to the list. This is done to ensure that elements never have to be copied or moved for adding or removing them to/from the list. Otherwise it would not be possible to use this list in undo commands as references/pointers to elements would become invalid. Using pointers ensures that the objects are located at the same address over the whole lifetime. To still minimize the risk of memory leaks, std::shared_ptr
is used instead of raw pointers.
- Warning
- Using Qt's
foreach
keyword on a librepcb::SerializableObjectList is not recommended because it always creates a deep copy of the list! You should use range based for loops (since C++11) instead.