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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/***************************************************************************
* testplugin.cpp
* This file is part of the KDE project
* copyright (C)2005 by Sebastian Sauer (mail@dipe.org)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
* You should have received a copy of the GNU Library General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
***************************************************************************/
#include "testplugin.h"
#include "testobject.h"
/************************************************************************
* TestPluginObject
*/
TestPluginObject::TestPluginObject(const QString& name)
: Kross::Api::Class<TestPluginObject>(name)
{
// Functions to test the basic datatypes
this->addFunction1< void, Kross::Api::Variant >
("voiduintfunc", this, &TestPluginObject::voiduintfunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("uintfunc", this, &TestPluginObject::uintfunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("intfunc", this, &TestPluginObject::intfunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("boolfunc", this, &TestPluginObject::boolfunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("doublefunc", this, &TestPluginObject::doublefunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("cstringfunc", this, &TestPluginObject::cstringfunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("stringfunc", this, &TestPluginObject::stringfunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("stringlistfunc", this, &TestPluginObject::stringlistfunc);
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("variantfunc", this, &TestPluginObject::variantfunc);
// With 2 arguments
this->addFunction2< Kross::Api::Variant, Kross::Api::Variant, Kross::Api::Variant >
("stringstringfunc", this, &TestPluginObject::stringstringfunc);
// With 3 arguments
this->addFunction3< Kross::Api::Variant, Kross::Api::Variant, Kross::Api::Variant, Kross::Api::Variant >
("uintdoublestringfunc", this, &TestPluginObject::uintdoublestringfunc);
// With 4 arguments
this->addFunction4< Kross::Api::Variant, Kross::Api::Variant, Kross::Api::Variant, Kross::Api::Variant, Kross::Api::Variant >
("stringlistbooluintdouble", this, &TestPluginObject::stringlistbooluintdouble);
// With default arguments
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("uintfunc_defarg", this, &TestPluginObject::uintfunc, new Kross::Api::Variant(12345) );
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("stringfunc_defarg", this, &TestPluginObject::stringfunc, new Kross::Api::Variant("MyDefaultString") );
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("stringlistfunc_defarg", this, &TestPluginObject::stringlistfunc, new Kross::Api::Variant(QVariant(QStringList() << "Default1" << "Default2")));
this->addFunction1< Kross::Api::Variant, Kross::Api::Variant >
("variantfunc_defarg", this, &TestPluginObject::variantfunc, new Kross::Api::Variant("MyDefaultVariantString") );
// Test passing of objects
this->addFunction1<TestPluginObject, TestPluginObject>("objectfunc", this, &TestPluginObject::objectfunc, 0);
}
TestPluginObject::~TestPluginObject()
{
}
const QString TestPluginObject::getClassName() const
{
return "TestPluginObject";
}
uint TestPluginObject::uintfunc(uint i) { return i; }
void TestPluginObject::voiduintfunc(uint) {}
int TestPluginObject::intfunc(int i) { return i; }
bool TestPluginObject::boolfunc(bool b) { return b; }
double TestPluginObject::doublefunc(double d) { return d; }
QCString TestPluginObject::cstringfunc(const QCString& s) { return s; }
QString TestPluginObject::stringfunc(const QString& s) { return s; }
QStringList TestPluginObject::stringlistfunc(const QStringList& sl) { return sl; }
QVariant TestPluginObject::variantfunc(const QVariant& v) { return v; }
TestPluginObject* TestPluginObject::objectfunc(TestPluginObject* obj) { return obj; }
QString TestPluginObject::stringstringfunc(const QString& s, const QString&) { return s; }
uint TestPluginObject::uintdoublestringfunc(uint i, double, const QString&) { return i; }
QStringList TestPluginObject::stringlistbooluintdouble(const QStringList& sl, bool, uint, double) { return sl; }
/************************************************************************
* TestPluginModule
*/
TestPluginModule::TestPluginModule(const QString& name)
: Kross::Api::Module(name)
, m_testobject( new TestObject() )
{
addChild( new TestPluginObject("testpluginobject1") );
// Let's wrap a whole instance and it's methodfunctions.
Kross::Api::Event<TestObject> *testobjectclass =
new Kross::Api::Event<TestObject>("testpluginobject2");
addChild(testobjectclass);
// Wrap a whole QObject
addChild( new Kross::Api::QtObject( new TestObject() , "testqobject1" ) );
}
TestPluginModule::~TestPluginModule()
{
delete m_testobject;
}
const QString TestPluginModule::getClassName() const
{
return "TestPluginModule";
}
|