dtkCorePluginFactory_t.h 1.33 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
// Version: $Id$
//
//

// Commentary:
//
//

// Change Log:
//
//

// Code:
14
15
16

#pragma once

17
template <typename T> dtkCorePluginFactory<T>::dtkCorePluginFactory(void)
18
{
19

20
21
}

22
template <typename T> dtkCorePluginFactory<T>::~dtkCorePluginFactory(void)
23
24
25
26
{

}

27
28
29
// /////////////////////////////////////////////////////////////////
// Type creator registration
// /////////////////////////////////////////////////////////////////
30

31
template <typename T> void dtkCorePluginFactory<T>::record(const QString& key, creator func)
32
{
33
    if (this->creators.contains(key)) {
34
35
        qDebug() << "Factory already contains key" << key << ". Nothing is done";
        return;
36
37
    }

38
39
    this->creators.insert(key, func);
}
40

41
42
43
// /////////////////////////////////////////////////////////////////
// Type creator invokation
// /////////////////////////////////////////////////////////////////
44
45
46

template <typename T> T *dtkCorePluginFactory<T>::create(const QString& key)
{
Julien Wintz's avatar
Julien Wintz committed
47
    if(!this->creators.contains(key))
48
        return NULL;
Julien Wintz's avatar
Julien Wintz committed
49

50
51
52
    return this->creators.value(key)();
}

53
54
55
// /////////////////////////////////////////////////////////////////
// Type creator inspection
// /////////////////////////////////////////////////////////////////
56

57
template <typename T> QStringList dtkCorePluginFactory<T>::keys(void)
58
59
60
{
    return this->creators.keys();
}
Julien Wintz's avatar
Julien Wintz committed
61

62
63
//
// dtkCorePluginFactory_t.h ends here