27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'ext/sound_buffer.c', line 27
static
VALUE ray_sound_buffer_init(VALUE self, VALUE arg) {
say_sound_buffer *buf = ray_rb2sound_buffer(self);
if (rb_respond_to(arg, RAY_METH("read"))) {
arg = rb_funcall(arg, RAY_METH("read"), 0);
if (!say_sound_buffer_load_from_memory(buf, RSTRING_LEN(arg),
StringValuePtr(arg))) {
rb_raise(rb_eRangeError, "%s", say_error_get_last());
}
}
else {
if (!say_sound_buffer_load_from_file(buf, StringValuePtr(arg))) {
rb_raise(rb_eRangeError, "%s", say_error_get_last());
}
}
return self;
}
|