Sha256: 850c1f304916bba2cf17e153d97a2493b8981632858508376bbc971e9d626067

Contents?: true

Size: 1.42 KB

Versions: 6

Compression:

Stored size: 1.42 KB

Contents

/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
/**********************************************************************

  rbgobj_valuearray.c -

  $Author: mutoh $
  $Date: 2006/05/17 14:00:24 $

  Copyright (C) 2006  Sjoerd Simons
**********************************************************************/

#include "rbgprivate.h"

static VALUE
value_array_to_ruby(const GValue *from)
{
    VALUE ary;
    guint i;

    GValueArray *array = (GValueArray *)g_value_get_boxed(from);
    if (array == NULL)
        return Qnil;
  
    ary = rb_ary_new();
    for (i = 0; i < array->n_values; i++)
        rb_ary_push(ary, GVAL2RVAL(g_value_array_get_nth(array, i)));

    return ary;
}

static void
value_array_from_ruby(const VALUE from, GValue *to)
{
    int i;
    GValueArray *array;

    if (NIL_P(from)) {
        g_value_set_boxed(to, NULL);

        return;
    }

    Check_Type(from, T_ARRAY);

    array = g_value_array_new(RARRAY_LEN(from));

    for (i = 0; i < RARRAY_LEN(from); i++) {
        GValue v = { 0, };
        g_value_init(&v, RVAL2GTYPE(RARRAY_PTR(from)[i]));
        rbgobj_rvalue_to_gvalue(RARRAY_PTR(from)[i], &v);

        g_value_array_append(array, &v);
    }

    g_value_set_boxed(to, array);
}

void
Init_gobject_value_array()
{
    /* ValueArray is treated as Array */
    rbgobj_register_g2r_func(G_TYPE_VALUE_ARRAY, value_array_to_ruby);
    rbgobj_register_r2g_func(G_TYPE_VALUE_ARRAY, value_array_from_ruby);
}

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
glib2-1.0.3-x86-mingw32 ext/glib2/rbgobj_valuearray.c
glib2-1.0.3 ext/glib2/rbgobj_valuearray.c
glib2-1.0.2-x86-mingw32 ext/glib2/rbgobj_valuearray.c
glib2-1.0.2 ext/glib2/rbgobj_valuearray.c
glib2-1.0.1 ext/glib2/rbgobj_valuearray.c
glib2-1.0.1-x86-mingw32 ext/glib2/rbgobj_valuearray.c