1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the test suite of Qt for Python. 7 ** 8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 21 ** included in the packaging of this file. Please review the following 22 ** information to ensure the GNU General Public License requirements will 23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 24 ** 25 ** $QT_END_LICENSE$ 26 ** 27 ****************************************************************************/ 28 29 #ifndef LIST_H 30 #define LIST_H 31 32 #include <list> 33 #include "libsamplemacros.h" 34 #include "point.h" 35 36 class ObjectType; 37 38 template<class T> 39 class List : public std::list<T> 40 { 41 }; 42 43 class IntList : public List<int> 44 { 45 public: 46 enum CtorEnum { 47 NoParamsCtor, 48 IntCtor, 49 CopyCtor, 50 ListOfIntCtor 51 }; 52 IntList()53 inline IntList() : m_ctorUsed(NoParamsCtor) {} IntList(int val)54 inline explicit IntList(int val) : m_ctorUsed(IntCtor) { push_back(val); } IntList(const IntList & lst)55 inline IntList(const IntList& lst) : List<int>(lst), m_ctorUsed(CopyCtor) {} IntList(const List<int> & lst)56 inline IntList(const List<int>& lst) : List<int>(lst), m_ctorUsed(ListOfIntCtor) {} 57 append(int v)58 inline void append(int v) { insert(end(), v); } constructorUsed()59 CtorEnum constructorUsed() { return m_ctorUsed; } 60 private: 61 CtorEnum m_ctorUsed; 62 }; 63 64 class PointValueList : public List<Point> 65 { 66 public: 67 enum CtorEnum { 68 NoParamsCtor, 69 PointCtor, 70 CopyCtor, 71 ListOfPointValuesCtor 72 }; 73 PointValueList()74 inline PointValueList() : m_ctorUsed(NoParamsCtor) {} PointValueList(Point val)75 inline explicit PointValueList(Point val) : m_ctorUsed(PointCtor) { push_back(val); } PointValueList(const PointValueList & lst)76 inline PointValueList(const PointValueList& lst) : List<Point>(lst), m_ctorUsed(CopyCtor) {} PointValueList(const List<Point> & lst)77 inline PointValueList(const List<Point>& lst) : List<Point>(lst), m_ctorUsed(ListOfPointValuesCtor) {} 78 append(Point v)79 inline void append(Point v) { insert(end(), v); } constructorUsed()80 CtorEnum constructorUsed() { return m_ctorUsed; } 81 private: 82 CtorEnum m_ctorUsed; 83 }; 84 85 class ObjectTypePtrList : public List<ObjectType*> 86 { 87 public: 88 enum CtorEnum { 89 NoParamsCtor, 90 ObjectTypeCtor, 91 CopyCtor, 92 ListOfObjectTypePtrCtor 93 }; 94 ObjectTypePtrList()95 inline ObjectTypePtrList() : m_ctorUsed(NoParamsCtor) {} ObjectTypePtrList(ObjectType * val)96 inline explicit ObjectTypePtrList(ObjectType* val) : m_ctorUsed(ObjectTypeCtor) { push_back(val); } ObjectTypePtrList(const ObjectTypePtrList & lst)97 inline ObjectTypePtrList(const ObjectTypePtrList& lst) : List<ObjectType*>(lst), m_ctorUsed(CopyCtor) {} ObjectTypePtrList(const List<ObjectType * > & lst)98 inline ObjectTypePtrList(const List<ObjectType*>& lst) : List<ObjectType*>(lst), m_ctorUsed(ListOfObjectTypePtrCtor) {} 99 append(ObjectType * v)100 inline void append(ObjectType* v) { insert(end(), v); } constructorUsed()101 CtorEnum constructorUsed() { return m_ctorUsed; } 102 private: 103 CtorEnum m_ctorUsed; 104 }; 105 106 #endif // LIST_H 107