@@ -11,6 +11,8 @@ class TestBaseType
11
11
virtual ~TestBaseType () {}
12
12
virtual int func () { return 0 ; }
13
13
14
+ int base_only_func () { return -9 ; }
15
+
14
16
const TestBaseType &constMe () const { return *this ; }
15
17
16
18
int val;
@@ -41,11 +43,22 @@ class TestDerivedType : public TestBaseType
41
43
TestDerivedType &operator =(const TestDerivedType &);
42
44
};
43
45
46
+ class TestMoreDerivedType : public TestDerivedType
47
+ {
48
+ public:
49
+ virtual ~TestMoreDerivedType () {}
50
+ };
51
+
44
52
boost::shared_ptr<TestBaseType> derived_type_factory ()
45
53
{
46
54
return boost::shared_ptr<TestBaseType>(new TestDerivedType ());
47
55
}
48
56
57
+ boost::shared_ptr<TestBaseType> more_derived_type_factory ()
58
+ {
59
+ return boost::shared_ptr<TestBaseType>(new TestMoreDerivedType ());
60
+ }
61
+
49
62
std::string hello_world ()
50
63
{
51
64
return " Hello World" ;
@@ -76,6 +89,7 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test_mo
76
89
77
90
m->add (chaiscript::user_type<TestBaseType>(), " TestBaseType" );
78
91
m->add (chaiscript::user_type<TestDerivedType>(), " TestDerivedType" );
92
+ m->add (chaiscript::user_type<TestMoreDerivedType>(), " TestMoreDerivedType" );
79
93
80
94
m->add (chaiscript::constructor<TestBaseType ()>(), " TestBaseType" );
81
95
// m->add(chaiscript::constructor<TestBaseType (int)>(), "TestBaseType");
@@ -85,15 +99,23 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test_mo
85
99
m->add (chaiscript::constructor<TestDerivedType ()>(), " TestDerivedType" );
86
100
m->add (chaiscript::constructor<TestDerivedType (const TestDerivedType &)>(), " TestDerivedType" );
87
101
102
+ m->add (chaiscript::constructor<TestMoreDerivedType ()>(), " TestMoreDerivedType" );
103
+ m->add (chaiscript::constructor<TestMoreDerivedType (const TestMoreDerivedType &)>(), " TestMoreDerivedType" );
104
+
105
+ // / \todo automatic chaining of base classes?
88
106
m->add (chaiscript::base_class<TestBaseType, TestDerivedType>());
107
+ m->add (chaiscript::base_class<TestBaseType, TestMoreDerivedType>());
108
+ m->add (chaiscript::base_class<TestDerivedType, TestMoreDerivedType>());
89
109
90
110
m->add (chaiscript::fun (&TestDerivedType::derived_only_func), " derived_only_func" );
91
111
92
112
m->add (chaiscript::fun (&derived_type_factory), " derived_type_factory" );
113
+ m->add (chaiscript::fun (&more_derived_type_factory), " more_derived_type_factory" );
93
114
94
115
m->add (chaiscript::fun (&TestBaseType::func), " func" );
95
116
m->add (chaiscript::fun (&TestBaseType::val), " val" );
96
117
m->add (chaiscript::fun (&TestBaseType::const_val), " const_val" );
118
+ m->add (chaiscript::fun (&TestBaseType::base_only_func), " base_only_func" );
97
119
98
120
m->add (chaiscript::fun (&get_new_int), " get_new_int" );
99
121
0 commit comments