messages in TypeModuleSample
This commit is contained in:
parent
c125be53dd
commit
4e41f28932
|
@ -11,19 +11,23 @@ class MyModule : TypeModule
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//private Type type;
|
||||||
|
|
||||||
|
void * plugin_init = null;
|
||||||
|
|
||||||
public override bool load () {
|
public override bool load () {
|
||||||
|
//if (plugin_init != null) return true;
|
||||||
string path = Module.build_path (Environment.get_variable ("PWD"), name);
|
string path = Module.build_path (Environment.get_variable ("PWD"), name);
|
||||||
module = Module.open (path, GLib.ModuleFlags.BIND_LAZY);
|
module = Module.open (path, GLib.ModuleFlags.BIND_LAZY);
|
||||||
if (null == module) {
|
if (null == module) {
|
||||||
error ("Module not found");
|
error ("Module not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
void * plugin_init = null;
|
|
||||||
if (! module.symbol ("plugin_init", out plugin_init)) {
|
if (! module.symbol ("plugin_init", out plugin_init)) {
|
||||||
error ("No such symbol");
|
error ("No such symbol");
|
||||||
}
|
}
|
||||||
|
|
||||||
((PluginInitFunc) plugin_init) (this);
|
/*type = */((PluginInitFunc) plugin_init) (this);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -33,11 +37,17 @@ class MyModule : TypeModule
|
||||||
message ("Library unloaded");
|
message ("Library unloaded");
|
||||||
module = null;
|
module = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//public Object create_instance (/*IHost ihost*/) {
|
||||||
|
// var p = Object.new (type) as Object;
|
||||||
|
// //p.host = ihost;
|
||||||
|
// return p;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Never unref instance of GTypeModule
|
// Never unref instance of GTypeModule
|
||||||
// http://www.lanedo.com/~mitch/module-system-talk-guadec-2006/Module-System-Talk-Guadec-2006.pdf
|
// http://www.lanedo.com/~mitch/module-system-talk-guadec-2006/Module-System-Talk-Guadec-2006.pdf
|
||||||
static TypeModule module = null;
|
static MyModule module = null;
|
||||||
|
|
||||||
int main ()
|
int main ()
|
||||||
{
|
{
|
||||||
|
@ -46,9 +56,13 @@ int main ()
|
||||||
|
|
||||||
var o = GLib.Object.new (Type.from_name ("MyClass"));
|
var o = GLib.Object.new (Type.from_name ("MyClass"));
|
||||||
|
|
||||||
|
var vasya = GLib.Object.new (Type.from_name ("MyNameIsVasya"));
|
||||||
|
|
||||||
// free last instance, plugin unload
|
// free last instance, plugin unload
|
||||||
o = null;
|
o = null;
|
||||||
|
|
||||||
|
vasya = null;
|
||||||
|
|
||||||
module.unload ();
|
module.unload ();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1,6 +1,21 @@
|
||||||
|
public class MyNameIsVasya : Object {
|
||||||
|
construct {
|
||||||
|
stdout.puts ("(construct) My name is Vasya\n");
|
||||||
|
}
|
||||||
|
public MyNameIsVasya () {
|
||||||
|
stdout.puts ("My name is Vasya\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class MyClass : Object {
|
public class MyClass : Object {
|
||||||
|
|
||||||
|
//Type type;
|
||||||
|
|
||||||
construct {
|
construct {
|
||||||
message("MyClass init");
|
message("MyClass init");
|
||||||
|
//var tmp = new MyNameIsVasya();
|
||||||
|
|
||||||
|
//type = typeof(MyNameIsVasya);
|
||||||
}
|
}
|
||||||
|
|
||||||
~MyClass() {
|
~MyClass() {
|
||||||
|
@ -10,5 +25,6 @@ public class MyClass : Object {
|
||||||
|
|
||||||
[ModuleInit]
|
[ModuleInit]
|
||||||
Type plugin_init(GLib.TypeModule type_module) {
|
Type plugin_init(GLib.TypeModule type_module) {
|
||||||
|
stdout.puts ("---plugin_init() called---\n");
|
||||||
return typeof(MyClass);
|
return typeof(MyClass);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue