+ GET_OBJ (self, RbEvas, e);
+
+ Check_Type (val, T_FIXNUM);
+
+ evas_font_cache_set (e->real, FIX2INT (val));
+
+ return Qnil;
+}
+
+static VALUE c_font_cache_flush (VALUE self)
+{
+ GET_OBJ (self, RbEvas, e);
+
+ evas_font_cache_flush (e->real);
+
+ return Qnil;
+}
+
+static VALUE c_image_cache_get (VALUE self)
+{
+ GET_OBJ (self, RbEvas, e);
+
+ return INT2FIX (evas_image_cache_get (e->real));
+}
+
+static VALUE c_image_cache_set (VALUE self, VALUE val)
+{
+ GET_OBJ (self, RbEvas, e);
+
+ Check_Type (val, T_FIXNUM);
+
+ evas_image_cache_set (e->real, FIX2INT (val));
+
+ return Qnil;
+}
+
+static VALUE c_image_cache_reload (VALUE self)
+{
+ GET_OBJ (self, RbEvas, e);
+
+ evas_image_cache_reload (e->real);
+
+ return Qnil;
+}
+
+static VALUE c_image_cache_flush (VALUE self)
+{
+ GET_OBJ (self, RbEvas, e);
+
+ evas_image_cache_flush (e->real);
+
+ return Qnil;
+}
+
+static VALUE c_top_get (VALUE self)
+{
+ Evas_Object *o;
+ void *obj;
+
+ GET_OBJ (self, RbEvas, e);
+
+ if (!(o = evas_object_top_get (e->real)))
+ 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_bottom_get (VALUE self)
+{
+ Evas_Object *o;
+ void *obj;
+
+ GET_OBJ (self, RbEvas, e);
+
+ if (!(o = evas_object_bottom_get (e->real)))
+ 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_find_object (VALUE self, VALUE name)
+{
+ Evas_Object *o;
+ void *obj;
+
+ GET_OBJ (self, RbEvas, e);
+
+ Check_Type (name, T_STRING);
+
+ if (!(o = evas_object_name_find (e->real, StringValuePtr (name))))
+ 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;
+}
+
+void Init_Evas (void)
+{
+ cEvas = rb_define_class_under (mEvas, "Evas", rb_cObject);