/*
- * $Id: ext.c 49 2005-05-30 19:52:36Z tilman $
+ * $Id: ext.c 51 2005-05-31 21:15:03Z tilman $
*
* Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
*
static VALUE c_close (VALUE self);
static VALUE cStream, cChunk,
- eEetError, eNameError, ePropError;
-static ID id_include, id_serialize, id_push, id_empty,
+ eEetError, eNameError, ePropError,
+ sym_lossy, sym_level, sym_quality;
+static ID id_include, id_serialize, id_push,
id_to_eet_chunks, id_to_eet_name, id_to_eet_properties,
id_tag, id_data;
rb_raise (rb_eIOError, "cannot read entry - %s", ckey);
comp = rb_hash_new ();
- rb_hash_aset (comp, ID2SYM (rb_intern ("lossy")), INT2FIX (lossy));
- rb_hash_aset (comp, ID2SYM (rb_intern ("level")), INT2FIX (level));
- rb_hash_aset (comp, ID2SYM (rb_intern ("quality")), INT2FIX (quality));
+ rb_hash_aset (comp, sym_lossy, INT2FIX (lossy));
+ rb_hash_aset (comp, sym_level, INT2FIX (level));
+ rb_hash_aset (comp, sym_quality, INT2FIX (quality));
ret = rb_ary_new3 (5, rb_str_new (data, w * h * 4),
INT2FIX (w), INT2FIX (h),
if (!NIL_P (comp)) {
Check_Type (comp, T_HASH);
- tmp = rb_hash_aref (comp, ID2SYM (rb_intern ("lossy")));
+ tmp = rb_hash_aref (comp, sym_lossy);
if (!NIL_P (tmp))
lossy = FIX2INT (tmp);
- tmp = rb_hash_aref (comp, ID2SYM (rb_intern ("level")));
+ tmp = rb_hash_aref (comp, sym_level);
if (!NIL_P (tmp))
level = FIX2INT (tmp);
- tmp = rb_hash_aref (comp, ID2SYM (rb_intern ("quality")));
+ tmp = rb_hash_aref (comp, sym_quality);
if (!NIL_P (tmp))
quality = FIX2INT (tmp);
}
props = rb_funcall (self, id_to_eet_properties, 0);
if (rb_obj_is_kind_of (props, rb_cHash) == Qfalse ||
- rb_funcall (props, id_empty, 0) == Qtrue)
+ !RHASH (props)->tbl->num_entries)
rb_raise (ePropError, "invalid EET properties");
name = rb_funcall (self, id_to_eet_name, 0);
StringValue (name);
- if (rb_funcall (name, id_include, 1, INT2FIX (0)) == Qtrue ||
- rb_funcall (name, id_empty, 0) == Qtrue)
+ if (!RSTRING (name)->len ||
+ rb_funcall (name, id_include, 1, INT2FIX (0)))
rb_raise (eNameError, "invalid EET name");
stream = rb_class_new_instance (0, NULL, cStream);
id_include = rb_intern ("include?");
id_serialize = rb_intern ("serialize");
id_push = rb_intern ("push");
- id_empty = rb_intern ("empty?");
id_to_eet_chunks = rb_intern ("to_eet_chunks");
id_to_eet_name = rb_intern ("to_eet_name");
id_to_eet_properties = rb_intern ("to_eet_properties");
id_tag = rb_intern ("@tag");
id_data = rb_intern ("@data");
+ sym_lossy = ID2SYM (rb_intern ("lossy"));
+ sym_level = ID2SYM (rb_intern ("level"));
+ sym_quality = ID2SYM (rb_intern ("quality"));
}