File: qlistcontainer.cpp

package info (click to toggle)
kdevelop 4%3A25.04.0-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 73,508 kB
  • sloc: cpp: 291,803; python: 4,322; javascript: 3,518; sh: 1,316; ansic: 703; xml: 414; php: 95; lisp: 66; makefile: 31; sed: 12
file content (67 lines) | stat: -rw-r--r-- 1,346 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <QList>
#include <QQueue>
#include <QStack>
#include <QLinkedList>
#include <QSet>
#include <QString>
#include <QDebug>


struct A {
    explicit A(const QString& _a = QString(), const QString& _b = QString(),
      int _c = -1, int _d = -1)
    : a(_a), b(_b), c(_c), d(_d)
    {}
    bool operator==(const A& other) const
    {
        return a == other.a && b == other.b && c == other.c && d == other.d;
    }
    QString a;
    QString b;
    int c;
    int d;
};

size_t qHash(const A& a)
{
    return qHash(a.a) + qHash(a.b);
}

template<template <typename> class Container>
void doStuff()
{
    Container<int> intList;
    intList << 10 << 20;
    intList << 30;

    Container<QString> stringList;
    stringList << "a" << "bc";
    stringList << "d";

    Container<A> structList;
    structList << A("a", "b", 100, -200);
    structList << A();

    Container<int*> pointerList;
    pointerList << new int(1) << new int(2);
    pointerList << new int(3);
    qDeleteAll(pointerList);

    Container<QPair<int, int> > pairList;
    pairList << QPair<int, int>(1, 2) << qMakePair(2, 3);
    pairList << qMakePair(4, 5);

    // don't leave context
    int i = 0;
    Q_UNUSED(i);
}

int main()
{
    doStuff<QList>();
    doStuff<QQueue>();
    doStuff<QStack>();
    doStuff<QLinkedList>();
    doStuff<QSet>();
    return 0;
}