/*
- * $Id: ext.c 13 2005-03-27 18:35:51Z tilman $
+ * $Id: ext.c 30 2005-04-12 18:38:31Z tilman $
*
* Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
*
#include <ruby.h>
#define CHECK_KEY(key) \
- Check_Type ((key), T_STRING); \
- if (rb_funcall ((key), rb_intern ("include?"), \
- 1, INT2FIX (0)) == Qtrue) \
+ StringValue((key)); \
+\
+ if (rb_funcall (key, rb_intern ("include?"), \
+ 1, INT2FIX (0)) == Qtrue) \
rb_raise (rb_eArgError, "key must not contain binary zeroes");
+#define CHECK_CLOSED(ef) \
+ if (!*(ef)) \
+ rb_raise (rb_eIOError, "closed stream");
+
static VALUE c_close (VALUE self);
static void
VALUE file = Qnil, mode = Qnil;
Eet_File **ef = NULL;
Eet_File_Mode m = EET_FILE_MODE_READ;
- const char *tmp;
+ const char *tmp, *cfile;
Data_Get_Struct (self, Eet_File *, ef);
rb_scan_args (argc, argv, "11", &file, &mode);
- Check_Type (file, T_STRING);
+ cfile = StringValuePtr (file);
if (!NIL_P (mode)) {
- Check_Type (mode, T_STRING);
+ StringValue (mode);
tmp = StringValuePtr (mode);
if (!strcmp (tmp, "r+"))
eet_init ();
- *ef = eet_open (StringValuePtr (file), m);
+ *ef = eet_open (cfile, m);
if (!*ef) {
switch (m) {
case EET_FILE_MODE_READ_WRITE:
break;
}
- rb_raise (rb_eRuntimeError, tmp, file);
+ rb_raise (rb_eRuntimeError, tmp, cfile);
}
return self;
Eet_File **ef = NULL;
Data_Get_Struct (self, Eet_File *, ef);
+ CHECK_CLOSED (ef);
- if (!*ef)
- rb_raise (rb_eIOError, "closed stream");
- else {
- eet_close (*ef);
- *ef = NULL;
+ eet_close (*ef);
+ *ef = NULL;
- eet_shutdown ();
- }
+ eet_shutdown ();
return self;
}
int i, count = 0;
Data_Get_Struct (self, Eet_File *, ef);
-
- if (!*ef)
- rb_raise (rb_eIOError, "closed stream");
+ CHECK_CLOSED (ef);
switch (eet_mode_get (*ef)) {
case EET_FILE_MODE_READ:
rb_scan_args (argc, argv, "01", &glob);
- if (!NIL_P (glob)) {
- Check_Type (glob, T_STRING);
+ if (!NIL_P (glob))
tmp = StringValuePtr (glob);
- }
ret = rb_ary_new ();
char *tmp;
Data_Get_Struct (self, Eet_File *, ef);
-
- if (!*ef)
- rb_raise (rb_eIOError, "closed stream");
+ CHECK_CLOSED (ef);
CHECK_KEY (key);
int size = 0;
Data_Get_Struct (self, Eet_File *, ef);
-
- if (!*ef)
- rb_raise (rb_eIOError, "closed stream");
+ CHECK_CLOSED (ef);
CHECK_KEY (key);
int n;
Data_Get_Struct (self, Eet_File *, ef);
-
- if (!*ef)
- rb_raise (rb_eIOError, "closed stream");
+ CHECK_CLOSED (ef);
rb_scan_args (argc, argv, "21", &key, &buf, &comp);
comp = Qtrue;
CHECK_KEY (key);
- Check_Type (buf, T_STRING);
+ StringValue (buf);
n = eet_write (*ef, StringValuePtr (key),
StringValuePtr (buf), RSTRING (buf)->len,
int w = 0, h = 0, has_alpha = 0, level = 0, quality = 0, lossy = 0;
Data_Get_Struct (self, Eet_File *, ef);
-
- if (!*ef)
- rb_raise (rb_eIOError, "closed stream");
+ CHECK_CLOSED (ef);
CHECK_KEY (key);
int n, lossy = 0, level = 9, quality = 100;
Data_Get_Struct (self, Eet_File *, ef);
-
- if (!*ef)
- rb_raise (rb_eIOError, "closed stream");
+ CHECK_CLOSED (ef);
rb_scan_args (argc, argv, "42", &key, &buf, &w, &h, &has_alpha,
&comp);
has_alpha = Qfalse;
CHECK_KEY (key);
- Check_Type (buf, T_STRING);
+ StringValue (buf);
Check_Type (w, T_FIXNUM);
Check_Type (h, T_FIXNUM);