[seed] [gettext] Bind the remainder of the gettext functions
- From: Tim Horton <hortont src gnome org>
- To: svn-commits-list gnome org
- Subject: [seed] [gettext] Bind the remainder of the gettext functions
- Date: Thu, 2 Jul 2009 07:01:01 +0000 (UTC)
commit e01e9cdfd6fe51b4631b653de0ad278eb367e78e
Author: Matt ARSENAULT <arsenm2 rpi edu>
Date: Thu Jul 2 02:42:33 2009 -0400
[gettext] Bind the remainder of the gettext functions
modules/gettext/gettext.c | 312 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 297 insertions(+), 15 deletions(-)
---
diff --git a/modules/gettext/gettext.c b/modules/gettext/gettext.c
index 784dcbb..0378e53 100644
--- a/modules/gettext/gettext.c
+++ b/modules/gettext/gettext.c
@@ -1,8 +1,5 @@
-#include <seed.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
+#include <seed.h>
#include <glib/gi18n.h>
SeedObject namespace_ref;
@@ -17,6 +14,7 @@ seed_gettext_gettext (SeedContext ctx,
SeedException * exception)
{
gchar * msgid;
+ SeedValue ret;
if (argument_count != 1)
{
@@ -28,7 +26,10 @@ seed_gettext_gettext (SeedContext ctx,
msgid = seed_value_to_string (ctx, arguments[0], exception);
- return seed_value_from_string (ctx, gettext(msgid), exception);
+ ret = seed_value_from_string (ctx, gettext(msgid), exception);
+ g_free( ret );
+
+ return ret;
}
static SeedValue
@@ -40,6 +41,7 @@ seed_gettext_textdomain (SeedContext ctx,
SeedException * exception)
{
gchar * domain_name;
+ SeedValue ret;
if (argument_count != 1)
{
@@ -51,19 +53,260 @@ seed_gettext_textdomain (SeedContext ctx,
domain_name = seed_value_to_string (ctx, arguments[0], exception);
- return seed_value_from_string (ctx, textdomain(domain_name), exception);
+ ret = seed_value_from_string (ctx, textdomain(domain_name), exception);
+ g_free(domain_name);
+
+ return ret;
}
-static void
-seed_gettext_define_stuff ()
+static SeedValue
+seed_gettext_bindtextdomain (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
{
- seed_create_function(eng->context, "gettext",
- (SeedFunctionCallback) seed_gettext_gettext,
- namespace_ref);
+ gchar *domainname, *dirname;
+ SeedValue ret;
- seed_create_function(eng->context, "textdomain",
- (SeedFunctionCallback) seed_gettext_textdomain,
- namespace_ref);
+ if (argument_count != 2)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.bindtextdomain expected 2 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ dirname = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx, bindtextdomain(domainname, dirname), exception);
+ g_free( domainname );
+ g_free( dirname );
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_bind_textdomain_codeset (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar *domainname, *codeset;
+ SeedValue ret;
+
+ if (argument_count != 2)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.bind_textdomain_codeset expected 2 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ codeset = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx,
+ bind_textdomain_codeset(domainname, codeset),
+ exception);
+ g_free( domainname );
+ g_free( codeset );
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dgettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar *domainname, *msgid;
+ SeedValue ret;
+
+ if (argument_count != 2)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.dgettext expected 2 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx, dgettext(domainname, msgid), exception);
+ g_free( domainname );
+ g_free( msgid );
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dcgettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar *domainname, *msgid;
+ gint category;
+ SeedValue ret;
+
+ if (argument_count != 2)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.dcgettext expected 3 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+ category = seed_value_to_int (ctx, args[2], exception);
+
+ ret = seed_value_from_string (ctx, dcgettext(domainname, msgid, category), exception);
+ g_free( domainname );
+ g_free( msgid );
+}
+
+static SeedValue
+seed_gettext_ngettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar *msgid, *msgid_plural;
+ guint n;
+ SeedValue ret;
+
+ if (argument_count != 3)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.ngettext expected 3 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ msgid = seed_value_to_string (ctx, args[0], exception);
+ msgid_plural = seed_value_to_string (ctx, args[1], exception);
+ n = seed_value_to_guint (ctx, args[2], exception);
+
+ ret = seed_value_from_string (ctx, ngettext(msgid, msgid_plural, n), exception);
+ g_free( msgid );
+ g_free( msgid_plural );
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dngettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar *domainname, *msgid, *msgid_plural;
+ guint n;
+ SeedValue ret;
+
+ if (argument_count != 4)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.dngettext expected 4 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+ msgid_plural = seed_value_to_string (ctx, args[2], exception);
+ n = seed_value_to_guint (ctx, args[3], exception);
+
+ ret = seed_value_from_string (ctx, dngettext(domainname, msgid, msgid_plural, n), exception);
+ g_free( domainname );
+ g_free( msgid );
+ g_free( msgid_plural );
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_dcngettext (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar *domainname, *msgid, *msgid_plural;
+ guint n;
+ gint category;
+ SeedValue ret;
+
+ if (argument_count != 5)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.dcngettext expected 5 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ domainname = seed_value_to_string (ctx, args[0], exception);
+ msgid = seed_value_to_string (ctx, args[1], exception);
+ msgid_plural = seed_value_to_string (ctx, args[2], exception);
+ n = seed_value_to_guint (ctx, args[3], exception);
+ category = seed_value_to_gint (ctx, args[4], exception);
+
+ ret = seed_value_from_string (ctx,
+ dcngettext(domainname, msgid, msgid_plural, n, category),
+ exception);
+ g_free( domainname );
+ g_free( msgid );
+ g_free( msgid_plural );
+
+ return ret;
+}
+
+static SeedValue
+seed_gettext_setlocale (SeedContext ctx,
+ SeedObject function,
+ SeedObject this_object,
+ gsize argument_count,
+ const SeedValue args[],
+ SeedException * exception)
+{
+ gchar *locale;
+ gint category;
+ SeedValue ret;
+
+ if (argument_count != 2)
+ {
+ seed_make_exception (ctx, exception, "ArgumentError",
+ "gettext.setlocale expected 2 arguments, got %zd",
+ argument_count);
+ return seed_make_null (ctx);
+ }
+
+ category = seed_value_to_gint (ctx, args[0], exception);
+ locale = seed_value_to_string (ctx, args[1], exception);
+
+ ret = seed_value_from_string (ctx,
+ setlocale(category, locale),
+ exception);
+ g_free( locale );
+
+ return ret;
}
SeedObject
@@ -73,7 +316,46 @@ seed_module_init(SeedEngine *local_eng)
namespace_ref = seed_make_object (eng->context, NULL, NULL);
seed_value_protect (eng->context, namespace_ref);
- seed_gettext_define_stuff();
+ seed_create_function(eng->context, "gettext",
+ (SeedFunctionCallback) seed_gettext_gettext,
+ namespace_ref);
+
+ seed_create_function(eng->context, "textdomain",
+ (SeedFunctionCallback) seed_gettext_textdomain,
+ namespace_ref);
+
+ seed_create_function(eng->context, "bindtextdomain",
+ (SeedFunctionCallback) seed_gettext_bindtextdomain,
+ namespace_ref);
+
+ seed_create_function(eng->context, "bind_textdomain_codeset",
+ (SeedFunctionCallback) seed_gettext_bind_textdomain_codeset,
+ namespace_ref);
+
+ seed_create_function(eng->context, "dgettext",
+ (SeedFunctionCallback) seed_gettext_dgettext,
+ namespace_ref);
+
+ seed_create_function(eng->context, "dcgettext",
+ (SeedFunctionCallback) seed_gettext_dcgettext,
+ namespace_ref);
+
+ seed_create_function(eng->context, "ngettext",
+ (SeedFunctionCallback) seed_gettext_ngettext,
+ namespace_ref);
+
+ seed_create_function(eng->context, "dngettext",
+ (SeedFunctionCallback) seed_gettext_dngettext,
+ namespace_ref);
+
+ seed_create_function(eng->context, "dcngettext",
+ (SeedFunctionCallback) seed_gettext_dcngettext,
+ namespace_ref);
+
+ seed_create_function(eng->context, "setlocale",
+ (SeedFunctionCallback) seed_gettext_setlocale,
+ namespace_ref);
return namespace_ref;
}
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]