summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-string-ext/src/string.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-03-07 06:21:52 -0800
committerYukihiro "Matz" Matsumoto <[email protected]>2013-03-07 06:21:52 -0800
commit7ce2d2636463fbcf9228f4ab2b284ef3625dc42d (patch)
tree9949313d9fe68e1eff7b2de1270716d804f04fda /mrbgems/mruby-string-ext/src/string.c
parent9736d44d5ccde8f20cd03b76032e72ecaae4a02e (diff)
parent7cd583ef27b0c3376f5dfb1d7785896c2bb0e611 (diff)
downloadmruby-7ce2d2636463fbcf9228f4ab2b284ef3625dc42d.tar.gz
mruby-7ce2d2636463fbcf9228f4ab2b284ef3625dc42d.zip
Merge pull request #963 from skandhas/pr-add-mrbgems-mruby-string-ext
add mrbgems/mruby-string-ext, and method: String#getbyte
Diffstat (limited to 'mrbgems/mruby-string-ext/src/string.c')
-rw-r--r--mrbgems/mruby-string-ext/src/string.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c
new file mode 100644
index 000000000..175426638
--- /dev/null
+++ b/mrbgems/mruby-string-ext/src/string.c
@@ -0,0 +1,30 @@
+#include "mruby.h"
+#include "mruby/string.h"
+
+static mrb_value
+mrb_str_getbyte(mrb_state *mrb, mrb_value str)
+{
+ mrb_int pos;
+ mrb_get_args(mrb, "i", &pos);
+
+ if (pos < 0)
+ pos += RSTRING_LEN(str);
+ if (pos < 0 || RSTRING_LEN(str) <= pos)
+ return mrb_nil_value();
+
+ return mrb_fixnum_value((unsigned char)RSTRING_PTR(str)[pos]);
+}
+
+
+void
+mrb_mruby_string_ext_gem_init(mrb_state* mrb)
+{
+ struct RClass * s = mrb->string_class;
+
+ mrb_define_method(mrb, s, "getbyte", mrb_str_getbyte, ARGS_REQ(1));
+}
+
+void
+mrb_mruby_string_ext_gem_final(mrb_state* mrb)
+{
+}