diff options
Diffstat (limited to 'spec/ruby/optional/capi/ext/file_spec.c')
-rw-r--r-- | spec/ruby/optional/capi/ext/file_spec.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/ruby/optional/capi/ext/file_spec.c b/spec/ruby/optional/capi/ext/file_spec.c new file mode 100644 index 0000000000..98f8db1595 --- /dev/null +++ b/spec/ruby/optional/capi/ext/file_spec.c @@ -0,0 +1,44 @@ +#include "ruby.h" +#include "rubyspec.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_RB_FILE_OPEN +VALUE file_spec_rb_file_open(VALUE self, VALUE name, VALUE mode) { + return rb_file_open(RSTRING_PTR(name), RSTRING_PTR(mode)); +} +#endif + +#ifdef HAVE_RB_FILE_OPEN_STR +VALUE file_spec_rb_file_open_str(VALUE self, VALUE name, VALUE mode) { + return rb_file_open_str(name, RSTRING_PTR(mode)); +} +#endif + +#ifdef HAVE_FILEPATHVALUE +VALUE file_spec_FilePathValue(VALUE self, VALUE obj) { + return FilePathValue(obj); +} +#endif + +void Init_file_spec(void) { + VALUE cls = rb_define_class("CApiFileSpecs", rb_cObject); + +#ifdef HAVE_RB_FILE_OPEN + rb_define_method(cls, "rb_file_open", file_spec_rb_file_open, 2); +#endif + +#ifdef HAVE_RB_FILE_OPEN_STR + rb_define_method(cls, "rb_file_open_str", file_spec_rb_file_open_str, 2); +#endif + +#ifdef HAVE_FILEPATHVALUE + rb_define_method(cls, "FilePathValue", file_spec_FilePathValue, 1); +#endif +} + +#ifdef __cplusplus +} +#endif |