[gjs/wip/package: 3/8] jsapi-util: add an utility method for defining a integer array
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs/wip/package: 3/8] jsapi-util: add an utility method for defining a integer array
- Date: Sun, 10 Mar 2013 18:18:17 +0000 (UTC)
commit 04c19370cc2ebc5fe1e82d0e43010215633e0e21
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Fri Feb 22 03:15:49 2013 +0100
jsapi-util: add an utility method for defining a integer array
Similar to gjs_define_string_array(), but for integers.
gjs/jsapi-util.c | 41 +++++++++++++++++++++++++++++++++++++++++
gjs/jsapi-util.h | 6 ++++++
2 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/gjs/jsapi-util.c b/gjs/jsapi-util.c
index 6eab2ed..4d22697 100644
--- a/gjs/jsapi-util.c
+++ b/gjs/jsapi-util.c
@@ -272,6 +272,47 @@ gjs_define_string_array(JSContext *context,
return array;
}
+JSObject*
+gjs_define_int_array(JSContext *context,
+ JSObject *in_object,
+ const char *array_name,
+ gssize array_length,
+ int *array_values,
+ unsigned attrs)
+{
+ GArray *elems;
+ JSObject *array;
+ int i;
+
+ JS_BeginRequest(context);
+
+ if (!JS_EnterLocalRootScope(context))
+ return JS_FALSE;
+
+ elems = g_array_sized_new(FALSE, FALSE, sizeof(jsval), array_length);
+
+ for (i = 0; i < array_length; ++i) {
+ jsval element;
+ element = INT_TO_JSVAL(array_values[i]);
+ g_array_append_val(elems, element);
+ }
+
+ array = JS_NewArrayObject(context, elems->len, (jsval*) elems->data);
+ g_array_free(elems, TRUE);
+
+ if (array != NULL) {
+ if (!JS_DefineProperty(context, in_object,
+ array_name, OBJECT_TO_JSVAL(array),
+ NULL, NULL, attrs))
+ array = NULL;
+ }
+
+ JS_LeaveLocalRootScope(context);
+
+ JS_EndRequest(context);
+ return array;
+}
+
/**
* gjs_string_readable:
*
diff --git a/gjs/jsapi-util.h b/gjs/jsapi-util.h
index 19406a8..a9ebe62 100644
--- a/gjs/jsapi-util.h
+++ b/gjs/jsapi-util.h
@@ -231,6 +231,12 @@ JSObject* gjs_define_string_array (JSContext *context,
gssize array_length,
const char **array_values,
unsigned attrs);
+JSObject* gjs_define_int_array (JSContext *context,
+ JSObject *in_object,
+ const char *array_name,
+ gssize array_length,
+ int *array_values,
+ unsigned attrs);
void gjs_throw (JSContext *context,
const char *format,
...) G_GNUC_PRINTF (2, 3);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]