+static VALUE c_evas_get (VALUE self)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ return rb_hash_aref (parents, INT2NUM ((long) (e)));
+}
+
+static VALUE c_name_get (VALUE self)
+{
+ const char *name;
+
+ GET_OBJ (self, Evas_Object *, e);
+
+ if (!(name = evas_object_name_get (*e)))
+ return Qnil;
+ else
+ return rb_str_new2 (name);
+}
+
+static VALUE c_name_set (VALUE self, VALUE val)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ Check_Type (val, T_STRING);
+
+ evas_object_name_set (*e, StringValuePtr (val));
+
+ return Qnil;
+}
+
+static VALUE c_layer_get (VALUE self)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ return INT2FIX (evas_object_layer_get (*e));
+}
+
+static VALUE c_layer_set (VALUE self, VALUE val)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ Check_Type (val, T_FIXNUM);
+
+ evas_object_layer_set (*e, NUM2INT (val));
+
+ return Qnil;
+}
+
+static VALUE c_get_color (VALUE self)
+{
+ int r = 0, g = 0, b = 0, a = 0;
+
+ GET_OBJ (self, Evas_Object *, e);
+
+ evas_object_color_get (*e, &r, &g, &b, &a);
+
+ return rb_ary_new3 (4, INT2FIX (r), INT2FIX (g), INT2FIX (b),
+ INT2FIX (a));
+}
+
+static VALUE c_set_color (VALUE self, VALUE r, VALUE g, VALUE b,
+ VALUE a)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ Check_Type (r, T_FIXNUM);
+ Check_Type (g, T_FIXNUM);
+ Check_Type (b, T_FIXNUM);
+ Check_Type (a, T_FIXNUM);
+
+ evas_object_color_set (*e, FIX2INT (r), FIX2INT (g), FIX2INT (b),
+ FIX2INT (a));
+
+ return Qnil;
+}
+
+static VALUE c_pass_events_get (VALUE self)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ return evas_object_pass_events_get (*e) ? Qtrue : Qfalse;
+}
+
+static VALUE c_pass_events_set (VALUE self, VALUE val)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ CHECK_BOOL (val);
+
+ evas_object_pass_events_set (*e, val == Qtrue ? 1 : 0);
+
+ return Qnil;
+}
+
+static VALUE c_raise (VALUE self)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ evas_object_raise (*e);
+
+ return Qnil;
+}
+
+static VALUE c_lower (VALUE self)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ evas_object_lower (*e);
+
+ return Qnil;
+}
+
+static VALUE c_stack_above (VALUE self, VALUE target)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ if (!rb_obj_is_kind_of (target, cEvasObject)) {
+ rb_raise (rb_eTypeError,
+ "wrong argument type %s (expected EvasObject)",
+ rb_obj_classname (target));
+ return Qnil;
+ }
+
+ GET_OBJ (target, Evas_Object *, target2);
+
+ evas_object_stack_above (*e, *target2);
+
+ return Qnil;
+}
+
+static VALUE c_stack_below (VALUE self, VALUE target)
+{
+ GET_OBJ (self, Evas_Object *, e);
+
+ if (!rb_obj_is_kind_of (target, cEvasObject)) {
+ rb_raise (rb_eTypeError,
+ "wrong argument type %s (expected EvasObject)",
+ rb_obj_classname (target));
+ return Qnil;
+ }
+
+ GET_OBJ (target, Evas_Object *, target2);
+
+ evas_object_stack_below (*e, *target2);
+
+ return Qnil;
+}
+
+static VALUE c_above_get (VALUE self)
+{
+ Evas_Object *o;
+ void *obj;
+
+ GET_OBJ (self, Evas_Object *, e);
+
+ if (!(evas_object_above_get (*e)))
+ return Qnil;
+
+ if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) {
+ rb_raise (rb_eException, "EvasObject Ruby object key missing");
+ return Qnil;
+ }
+
+ return (VALUE) obj;
+}
+
+static VALUE c_below_get (VALUE self)
+{
+ Evas_Object *o;
+ void *obj;
+
+ GET_OBJ (self, Evas_Object *, e);
+
+ if (!(evas_object_below_get (*e)))
+ return Qnil;
+
+ if (!(obj = evas_object_data_get (o, RUBY_EVAS_OBJECT_KEY))) {
+ rb_raise (rb_eException, "EvasObject Ruby object key missing");
+ return Qnil;
+ }
+
+ return (VALUE) obj;
+}
+