int rb_enc_to_index(VALUE enc) { if (CLASS_OF(enc) == rb_cEncoding) { return index_of_encoding(RENC(enc)); } return -1; }
static VALUE mr_enc_names(VALUE self, SEL sel) { rb_encoding_t *encoding = RENC(self); VALUE ary = rb_ary_new2(encoding->aliases_count + 1); rb_ary_push(ary, rb_usascii_str_new2(encoding->public_name)); for (unsigned int i = 0; i < encoding->aliases_count; ++i) { rb_ary_push(ary, rb_usascii_str_new2(encoding->aliases[i])); } return ary; }
static VALUE mr_enc_s_aliases(VALUE klass, SEL sel) { VALUE hash = rb_hash_new(); for (unsigned int i = 0; i < ENCODINGS_COUNT; ++i) { rb_encoding_t *encoding = RENC(rb_encodings[i]); for (unsigned int j = 0; j < encoding->aliases_count; ++j) { rb_hash_aset(hash, rb_usascii_str_new2(encoding->aliases[j]), rb_usascii_str_new2(encoding->public_name)); } } return hash; }
static VALUE mr_enc_s_name_list(VALUE klass, SEL sel) { VALUE ary = rb_ary_new(); for (unsigned int i = 0; i < ENCODINGS_COUNT; ++i) { rb_encoding_t *encoding = RENC(rb_encodings[i]); // TODO: use US-ASCII strings rb_ary_push(ary, rb_usascii_str_new2(encoding->public_name)); for (unsigned int j = 0; j < encoding->aliases_count; ++j) { rb_ary_push(ary, rb_usascii_str_new2(encoding->aliases[j])); } } return ary; }
rb_encoding_t * rb_to_encoding(VALUE obj) { rb_encoding_t *enc; if (CLASS_OF(obj) == rb_cEncoding) { enc = RENC(obj); } else { StringValue(obj); enc = rb_enc_find(RSTRING_PTR(obj)); if (enc == NULL) { rb_raise(rb_eArgError, "unknown encoding name - %s", RSTRING_PTR(obj)); } } return enc; }
void rb_enc_set_default_external(VALUE encoding) { assert(CLASS_OF(encoding) == rb_cEncoding); default_external = RENC(encoding); }
const char * rb_enc_name(rb_encoding_t *enc) { return RENC(enc)->public_name; }
static VALUE mr_enc_ascii_compatible_p(VALUE self, SEL sel) { return RENC(self)->ascii_compatible ? Qtrue : Qfalse; }
static VALUE mr_enc_inspect(VALUE self, SEL sel) { return rb_sprintf("#<%s:%s>", rb_obj_classname(self), RENC(self)->public_name); }
static VALUE mr_enc_name(VALUE self, SEL sel) { return rb_usascii_str_new2(RENC(self)->public_name); }