static rb_encoding* set_base_encoding(int index, rb_encoding *base) { rb_encoding *enc = enc_table.list[index].enc; enc_table.list[index].base = base; if (ENC_DUMMY_P(base)) ENC_SET_DUMMY((rb_raw_encoding *)enc); return enc; }
/* * call-seq: * enc.inspect -> string * * Returns a string which represents the encoding for programmers. * * Encoding::UTF_8.inspect #=> "#<Encoding:UTF-8>" * Encoding::ISO_2022_JP.inspect #=> "#<Encoding:ISO-2022-JP (dummy)>" */ static VALUE enc_inspect(VALUE self) { rb_encoding *enc; if (!is_data_encoding(self)) { not_encoding(self); } if (!(enc = DATA_PTR(self)) || rb_enc_from_index(rb_enc_to_index(enc)) != enc) { rb_raise(rb_eTypeError, "broken Encoding"); } return rb_enc_sprintf(rb_usascii_encoding(), "#<%"PRIsVALUE":%s%s%s>", rb_obj_class(self), rb_enc_name(enc), (ENC_DUMMY_P(enc) ? " (dummy)" : ""), enc_autoload_p(enc) ? " (autoload)" : ""); }
int rb_enc_register(const char *name, rb_encoding *encoding) { int index = rb_enc_registered(name); if (index >= 0) { rb_encoding *oldenc = rb_enc_from_index(index); if (STRCASECMP(name, rb_enc_name(oldenc))) { index = enc_register(name, encoding); } else if (enc_autoload_p(oldenc) || !ENC_DUMMY_P(oldenc)) { enc_register_at(index, name, encoding); } else { rb_raise(rb_eArgError, "encoding %s is already registered", name); } } else { index = enc_register(name, encoding); set_encoding_const(name, rb_enc_from_index(index)); } return index; }
/* * call-seq: * enc.dummy? -> true or false * * Returns true for dummy encodings. * A dummy encoding is an encoding for which character handling is not properly * implemented. * It is used for stateful encodings. * * Encoding::ISO_2022_JP.dummy? #=> true * Encoding::UTF_8.dummy? #=> false * */ static VALUE enc_dummy_p(VALUE enc) { return ENC_DUMMY_P(enc_table.list[must_encoding(enc)].enc) ? Qtrue : Qfalse; }
/* * call-seq: * enc.dummy? -> true or false * * Returns true for dummy encodings. * A dummy encoding is an encoding for which character handling is not properly * implemented. * It is used for stateful encodings. * * Encoding::ISO_2022_JP.dummy? #=> true * Encoding::UTF_8.dummy? #=> false * */ static VALUE enc_dummy_p(VALUE enc) { return ENC_DUMMY_P(must_encoding(enc)) ? Qtrue : Qfalse; }
int rb_enc_dummy_p(rb_encoding *enc) { return ENC_DUMMY_P(enc) != 0; }