summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-string-ext/src/string.c
diff options
context:
space:
mode:
authorskandhas <[email protected]>2013-03-07 21:47:00 +0800
committerskandhas <[email protected]>2013-03-07 21:47:00 +0800
commit7cd583ef27b0c3376f5dfb1d7785896c2bb0e611 (patch)
treee87185ff8fc1872636f31b1f1805a38bc4f56724 /mrbgems/mruby-string-ext/src/string.c
parent2e95f638cd01a92a83f3808d745f69f46b64db10 (diff)
downloadmruby-7cd583ef27b0c3376f5dfb1d7785896c2bb0e611.tar.gz
mruby-7cd583ef27b0c3376f5dfb1d7785896c2bb0e611.zip
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)
+{
+}