module CIO
For documentation - C library that stands either for C Input/Output or Cooplib Input/Output. Contains functions for IO that are much faster than the ruby standard functions
Public Instance Methods
copy_file(*args)
click to toggle source
Exposes copy_file_base to ruby
VALUE rb_copy_file_base(int argc, VALUE *argv, VALUE self) { if (argc > 3 || argc < 2) { // There should only be 2..3 arguments rb_raise(rb_eArgError, "wrong number of arguments"); } VALUE r_string_filename = StringValue(argv[0]); char *file_name = RSTRING_PTR(r_string_filename); VALUE r_string_destination = StringValue(argv[1]); char *destination = RSTRING_PTR(r_string_destination); VALUE r_read_size; if (argc == 3) { r_read_size = argv[2]; copy_file(.file_name = file_name, .destination = destination, .read_size = FIX2INT(r_read_size)); } else { copy_file(.file_name = file_name, .destination = destination); } return INT2FIX(does_file_exist(destination)); }
list_dirs(p1, p2)
click to toggle source
Exposes the #list_dirs method to ruby
VALUE rb_list_dirs(VALUE self, VALUE directory, VALUE level) { VALUE r_string_directory = StringValue(directory); char *dir = RSTRING_PTR(r_string_directory); int lev = FIX2INT(level); list_dirs(dir, lev); return Qnil; }
read_file(*args)
click to toggle source
Exposes read_file_base to ruby
VALUE rb_read_file_base(int argc, VALUE *argv, VALUE self) { if (argc > 2 || argc < 1) { // There should only be 1..2 arguments rb_raise(rb_eArgError, "wrong number of arguments"); } VALUE r_string_filename = StringValue(argv[0]); char *file_path = RSTRING_PTR(r_string_filename); const char *buffer; VALUE r_read_size; if (argc == 2) { r_read_size = argv[1]; int read_size = FIX2INT(r_read_size); buffer = read_file(.file_name = file_path, .read_size = read_size); } else { buffer = read_file(.file_name = file_path); } VALUE r_string = rb_str_new2(buffer); free((void *)buffer); return r_string; }
write_new_file(p1, p2)
click to toggle source
Exposes the #write_new_file function to ruby
VALUE rb_write_new_file(VALUE self, VALUE filename, VALUE data) { VALUE r_string_filename = StringValue(filename); VALUE r_string_data = StringValue(data); char *file_path = RSTRING_PTR(r_string_filename); char *file_data = RSTRING_PTR(r_string_data); return INT2FIX(write_new_file(file_path, file_data)); }