ImagingTools Core SDK
TElementList.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4// ACF include
5#include <istd/TSharedNullable.h>
6
7
8namespace imtsdl
9{
10
11
15template <class T>
16class TElementList: public QList<istd::TSharedNullable<T>>
17{
18public:
20 TElementList(std::initializer_list<T> args);
21 QList<T> ToList() const;
22 void FromList(const QList<T>& source);
23};
24
25
26template<class T>
28{
29
30}
31
32
33template<class T>
34inline TElementList<T>::TElementList(std::initializer_list<T> args)
35{
36 QList<T> list(args);
37 this->FromList(list);
38}
39
40
41template <class T>
42inline QList<T> TElementList<T>::ToList() const
43{
44 QList<T> retVal;
45 for (const istd::TSharedNullable<T>& element: *this){
46 if (element){
47 retVal << *element;
48 }
49 }
50
51 return retVal;
52}
53
54
55template <class T>
56inline void TElementList<T>::FromList(const QList<T>& source)
57{
58 this->clear();
59
60 for (const istd::TSharedNullable<T>& element: source){
61 if (element){
62 this->append(*element);
63 }
64 }
65}
66
67
68} // namespace imtsdl
69
70
71