@@ -79,6 +79,22 @@ class Simple
79
79
std::string lastMessage;
80
80
};
81
81
82
+ // Simple Class Factory
83
+ // ====================
84
+ class SimpleFactory
85
+ {
86
+ public:
87
+ void * NewSimple ( std::string firstMessage )
88
+ {
89
+ return new Simple ( firstMessage );
90
+ }
91
+
92
+ void DeleteSimple ( void * simple )
93
+ {
94
+ delete ( ( Simple* )simple );
95
+ }
96
+ };
97
+
82
98
// Register Classes + Methods
83
99
// ==========================
84
100
ECS_REGISTER_CLASS ( Simple )
@@ -88,6 +104,10 @@ ECS_REGISTER_METHOD_VOID( Simple, ShowLots, unsigned long, char* )
88
104
ECS_REGISTER_METHOD_RETURN( Simple, GetLastMessage, std::string )
89
105
ECS_REGISTER_METHOD_VOID( Simple, ShowPtr, void * )
90
106
107
+ ECS_REGISTER_CLASS( SimpleFactory )
108
+ ECS_REGISTER_METHOD_RETURN( SimpleFactory, NewSimple, void *, std::string )
109
+ ECS_REGISTER_METHOD_VOID( SimpleFactory, DeleteSimple, void * )
110
+
91
111
// =================================================================================================
92
112
93
113
// Main
@@ -103,17 +123,19 @@ int main()
103
123
Ecs_Init_Simple_GetLastMessage ();
104
124
Ecs_Init_Simple_ShowPtr ();
105
125
126
+ Ecs_Init_SimpleFactory ();
127
+ Ecs_Init_SimpleFactory_NewSimple ();
128
+ Ecs_Init_SimpleFactory_DeleteSimple ();
129
+
106
130
// Initialize EcsPython
107
131
// ====================
108
132
Ecs_Initialize ();
109
133
110
- // Create New Class Instance
111
- // =========================
112
- Simple* newSimple = new Simple ( " (first message)" );
113
134
114
- // Expose Class Instance To Python
115
- // ===============================
116
- Ecs_Expose_Object ( newSimple, " newSimple" );
135
+ // Create And Expose Class Instance To Python
136
+ // ==========================================
137
+ Simple newSimple ( " (first message)" );
138
+ Ecs_Expose_Object ( &newSimple, " newSimple" );
117
139
118
140
// Use Exposed Class Instance From Python
119
141
// ======================================
@@ -136,9 +158,21 @@ int main()
136
158
137
159
// Use Class Instance From C++
138
160
// ===========================
139
- std::cout << newSimple->GetLastMessage ().c_str ();
161
+ std::cout << " Ok, " << newSimple.GetLastMessage ().c_str () << std::endl;
162
+
163
+
164
+ // Create And Expose Factory To Python
165
+ // ===================================
166
+ SimpleFactory simpleFactory;
167
+ Ecs_Expose_Object ( &simpleFactory, " simpleFactory" );
168
+
169
+ Ecs_Python_Cmd ( " anotherSimple = Simple( simpleFactory.NewSimple( '\\ 'Allo ' ) )" );
170
+ Ecs_Python_Cmd ( " print( anotherSimple.GetLastMessage() + '\\ 'Allo!')" );
171
+ Ecs_Python_Cmd ( " simpleFactory.DeleteSimple( anotherSimple() )" );
172
+
140
173
getchar ();
141
174
175
+
142
176
// Finalize EcsPython
143
177
// ==================
144
178
Ecs_Finalize ();
0 commit comments