rb_encoding* rb_enc_from_index(int index) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Encoding* enc = Encoding::from_index(env->state(), index); if(enc->nil_p()) return 0; return enc->get_encoding(); }
rb_encoding* rb_enc_find(const char* name) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Encoding* enc = Encoding::find(env->state(), name); if(enc->nil_p()) return 0; return enc->get_encoding(); }
String* Time::locale_string(STATE, const char* data) { String* str = String::create(state, data); Encoding* locale = Encoding::find(state, "locale"); if(!locale->nil_p()) { str->encoding(state, locale); } return str; }
rb_encoding *rb_default_internal_encoding(void) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Encoding* enc = Encoding::find(env->state(), "internal"); if(enc->nil_p()) { return 0; } else { return enc->get_encoding(); } }
rb_encoding* rb_filesystem_encoding(void) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Encoding* enc = Encoding::find(env->state(), "filesystem"); if(enc->nil_p()) { return rb_ascii8bit_encoding(); } else { return enc->get_encoding(); } }
rb_encoding* rb_locale_encoding(void) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Encoding* enc = Encoding::find(env->state(), "locale"); if(enc->nil_p()) { return rb_usascii_encoding(); } else { return enc->get_encoding(); } }
int rb_enc_get_index(VALUE obj) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Object* val = env->get_object(obj); Encoding* enc = Encoding::get_object_encoding(env->state(), val); if(enc->nil_p()) return 0; return Encoding::find_index(env->state(), enc->get_encoding()->name); }
rb_encoding* rb_enc_get(VALUE obj) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Object* val = env->get_object(obj); if(!val->reference_p() && !val->symbol_p()) return 0; Encoding* enc = Encoding::get_object_encoding(env->state(), val); if(enc->nil_p()) return 0; return enc->get_encoding(); }
int rb_enc_get_index(VALUE obj) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Object* val = env->get_object(obj); if(!val->reference_p() && !val->symbol_p()) return -1; Encoding* enc = Encoding::get_object_encoding(env->state(), val); if(enc->nil_p()) return 0; return Encoding::find_index(env->state(), enc->name()->c_str(env->state())); }
int rb_enc_get_index(VALUE obj) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Object* val = env->get_object(obj); Encoding* enc; if(String* str = try_as<String>(val)) { enc = str->encoding(env->state()); } else if(Regexp* reg = try_as<Regexp>(val)) { enc = reg->encoding(env->state()); } else if(Symbol* sym = try_as<Symbol>(val)) { enc = sym->encoding(env->state()); } else { rb_raise(rb_eArgError, "object does not have an associated Encoding"); } if(enc->nil_p()) return -1; return Encoding::find_index(env->state(), enc->get_encoding()->name); }
int rb_to_encoding_index(VALUE obj) { NativeMethodEnvironment* env = NativeMethodEnvironment::get(); Encoding* enc = nil<Encoding>(); switch(TYPE(obj)) { case T_ENCODING: enc = c_as<Encoding>(env->get_object(obj)); break; case T_STRING: enc = Encoding::find(env->state(), RSTRING_PTR(obj)); break; default: obj = rb_funcall(obj, rb_intern("to_str"), 0); enc = Encoding::find(env->state(), RSTRING_PTR(obj)); } if(enc->nil_p()) return -1; return Encoding::find_index(env->state(), enc->get_encoding()->name); }
Encoding* Encoding::replicate(STATE, const char* name, const char* original) { Encoding* enc = find(state, original); if(enc->nil_p()) return nil<Encoding>(); return replicate(state, name, enc); }
Encoding* Encoding::replicate(STATE, const char* name, const char* original) { Encoding* enc = find(state, original); if(enc->nil_p()) return nil<Encoding>(); return define(state, name, enc->get_encoding(), enc->dummy()); }