[seed: 3/7] Implement getting functions from libraries...sort of...no calling yet
- From: Robert Carr <racarr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [seed: 3/7] Implement getting functions from libraries...sort of...no calling yet
- Date: Sun, 2 Aug 2009 01:28:48 +0000 (UTC)
commit f28d04531685356203c6a2c2aee28f0aa01b959a
Author: Robert Carr <racarr gnome org>
Date: Sat Aug 1 17:47:52 2009 -0400
Implement getting functions from libraries...sort of...no calling yet
modules/ffi/seed-ffi.c | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/modules/ffi/seed-ffi.c b/modules/ffi/seed-ffi.c
index b7f97c7..8772afc 100644
--- a/modules/ffi/seed-ffi.c
+++ b/modules/ffi/seed-ffi.c
@@ -25,6 +25,30 @@ SeedObject namespace_ref;
SeedClass ffi_library_class;
+static SeedValue
+seed_ffi_library_get_property (SeedContext ctx,
+ SeedObject this_object,
+ SeedString property_name,
+ SeedException *exception)
+{
+ GModule *mod;
+ gchar *prop;
+ gsize len = seed_string_get_maximum_size (property_name);
+ gpointer symbol;
+
+ prop = g_alloca (len);
+ seed_string_to_utf8_buffer (property_name, prop, len);
+
+ mod = seed_object_get_private (this_object);
+
+ if (!g_module_symbol (mod, prop, &symbol))
+ {
+ return NULL;
+ }
+ return seed_value_from_boolean (ctx, TRUE, exception);
+}
+
+
static SeedObject
seed_ffi_construct_library (SeedContext ctx,
SeedObject constructor,
@@ -60,6 +84,14 @@ seed_ffi_construct_library (SeedContext ctx,
return ret;
}
+static void
+seed_ffi_library_finalize (SeedObject obj)
+{
+ GModule *mod = seed_object_get_private (obj);
+
+ g_module_close (mod);
+}
+
SeedObject
seed_module_init(SeedEngine *local_eng)
{
@@ -67,6 +99,8 @@ seed_module_init(SeedEngine *local_eng)
seed_class_definition ffi_library_def = seed_empty_class;
ffi_library_def.class_name = "FFILibrary";
+ ffi_library_def.finalize = seed_ffi_library_finalize;
+ ffi_library_def.get_property = seed_ffi_library_get_property;
ffi_library_class = seed_create_class (&ffi_library_def);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]