mbed I/F binding for mruby
Dependents: mruby_mbed_web mirb_mbed
symbol.c
00001 #include "mruby.h" 00002 #include "mruby/khash.h" 00003 #include "mruby/array.h" 00004 00005 typedef struct symbol_name { 00006 size_t len; 00007 const char *name; 00008 } symbol_name; 00009 00010 /* 00011 * call-seq: 00012 * Symbol.all_symbols => array 00013 * 00014 * Returns an array of all the symbols currently in Ruby's symbol 00015 * table. 00016 * 00017 * Symbol.all_symbols.size #=> 903 00018 * Symbol.all_symbols[1,20] #=> [:floor, :ARGV, :Binding, :symlink, 00019 * :chown, :EOFError, :$;, :String, 00020 * :LOCK_SH, :"setuid?", :$<, 00021 * :default_proc, :compact, :extend, 00022 * :Tms, :getwd, :$=, :ThreadGroup, 00023 * :wait2, :$>] 00024 */ 00025 static mrb_value 00026 mrb_sym_all_symbols(mrb_state *mrb, mrb_value self) 00027 { 00028 mrb_sym i, lim; 00029 mrb_value ary = mrb_ary_new_capa(mrb, mrb->symidx); 00030 00031 for (i=1, lim=mrb->symidx+1; i<lim; i++) { 00032 mrb_ary_push(mrb, ary, mrb_symbol_value(i)); 00033 } 00034 00035 return ary; 00036 } 00037 00038 /* 00039 * call-seq: 00040 * sym.length -> integer 00041 * 00042 * Same as <code>sym.to_s.length</code>. 00043 */ 00044 static mrb_value 00045 mrb_sym_length(mrb_state *mrb, mrb_value self) 00046 { 00047 mrb_int len; 00048 mrb_sym2name_len(mrb, mrb_symbol(self), &len); 00049 return mrb_fixnum_value(len); 00050 } 00051 00052 void 00053 mrb_mruby_symbol_ext_gem_init(mrb_state* mrb) 00054 { 00055 struct RClass *s = mrb->symbol_class; 00056 mrb_define_class_method(mrb, s, "all_symbols", mrb_sym_all_symbols, MRB_ARGS_NONE()); 00057 mrb_define_method(mrb, s, "length", mrb_sym_length, MRB_ARGS_NONE()); 00058 mrb_define_method(mrb, s, "size", mrb_sym_length, MRB_ARGS_NONE()); 00059 } 00060 00061 void 00062 mrb_mruby_symbol_ext_gem_final(mrb_state* mrb) 00063 { 00064 } 00065
Generated on Tue Jul 12 2022 18:00:35 by 1.7.2