+ VALUE evas;
+
+ GET_OBJ (self, Ecore_Evas, ee);
+
+ if (NIL_P (evas = rb_hash_aref (evases, INT2NUM ((long) (ee))))) {
+ evas = TO_EVAS (self, ecore_evas_get (*ee));
+ rb_hash_aset (evases, INT2NUM ((long) ee), evas);
+ }
+
+ return evas;
+}
+
+static VALUE c_get_size_min (VALUE self)
+{
+ int w = 0, h = 0;
+
+ GET_OBJ (self, Ecore_Evas, ee);
+
+ ecore_evas_size_min_get (*ee, &w, &h);
+
+ return rb_ary_new3 (2, INT2FIX (w), INT2FIX (h));
+}
+
+static VALUE c_set_size_min (VALUE self, VALUE w, VALUE h)
+{
+ GET_OBJ (self, Ecore_Evas, ee);
+
+ Check_Type (w, T_FIXNUM);
+ Check_Type (h, T_FIXNUM);
+
+ ecore_evas_size_min_set (*ee, FIX2INT (w), FIX2INT (h));
+
+ return Qnil;
+}
+
+static VALUE c_get_size_max (VALUE self)
+{
+ int w = 0, h = 0;
+
+ GET_OBJ (self, Ecore_Evas, ee);
+
+ ecore_evas_size_max_get (*ee, &w, &h);
+
+ return rb_ary_new3 (2, INT2FIX (w), INT2FIX (h));
+}
+
+static VALUE c_set_size_max (VALUE self, VALUE w, VALUE h)
+{
+ GET_OBJ (self, Ecore_Evas, ee);
+
+ Check_Type (w, T_FIXNUM);
+ Check_Type (h, T_FIXNUM);
+
+ ecore_evas_size_max_set (*ee, FIX2INT (w), FIX2INT (h));
+
+ return Qnil;
+}
+
+static VALUE c_move (VALUE self, VALUE x, VALUE y)
+{
+ GET_OBJ (self, Ecore_Evas, ee);
+
+ Check_Type (x, T_FIXNUM);
+ Check_Type (y, T_FIXNUM);
+
+ ecore_evas_move (*ee, FIX2INT (x), FIX2INT (y));