|
Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
|
#include "ruby/internal/config.h"#include <ctype.h>#include "internal.h"#include "internal/array.h"#include "internal/inits.h"#include "internal/object.h"#include "internal/string.h"#include "internal/transcode.h"#include "ruby/encoding.h"#include "transcode_data.h"#include "id.h"Go to the source code of this file.
Data Structures | |
| struct | rb_transcoding |
| union | rb_transcoding::rb_transcoding_state_t |
| struct | rb_econv_elem_t |
| struct | rb_econv_t |
| struct | transcoder_entry_t |
| struct | search_path_queue_tag |
| struct | search_path_bfs_t |
| struct | trans_open_t |
| struct | asciicompat_encoding_t |
| struct | rb_econv_init_by_convpath_t |
Macros | |
| #define | ENABLE_ECONV_NEWLINE_OPTION 1 |
| #define | TRANSCODING_READBUF(tc) |
| #define | TRANSCODING_WRITEBUF(tc) |
| #define | TRANSCODING_WRITEBUF_SIZE(tc) |
| #define | TRANSCODING_STATE_EMBED_MAX ((int)sizeof(union rb_transcoding_state_t)) |
| #define | TRANSCODING_STATE(tc) |
| #define | DECORATOR_P(sname, dname) (*(sname) == '\0') |
| #define | encoding_equal(enc1, enc2) (STRCASECMP((enc1), (enc2)) == 0) |
| #define | SUSPEND(ret, num) |
| #define | SUSPEND_OBUF(num) |
| #define | SUSPEND_AFTER_OUTPUT(num) |
| #define | next_table (tc->next_table) |
| #define | next_info (tc->next_info) |
| #define | next_byte (tc->next_byte) |
| #define | writebuf_len (tc->writebuf_len) |
| #define | writebuf_off (tc->writebuf_off) |
| #define | BYTE_ADDR(index) (tr->byte_array + (index)) |
| #define | WORD_ADDR(index) (tr->word_array + INFO2WORDINDEX(index)) |
| #define | BL_BASE BYTE_ADDR(BYTE_LOOKUP_BASE(WORD_ADDR(next_table))) |
| #define | BL_INFO WORD_ADDR(BYTE_LOOKUP_INFO(WORD_ADDR(next_table))) |
| #define | BL_MIN_BYTE (BL_BASE[0]) |
| #define | BL_MAX_BYTE (BL_BASE[1]) |
| #define | BL_OFFSET(byte) (BL_BASE[2+(byte)-BL_MIN_BYTE]) |
| #define | BL_ACTION(byte) (BL_INFO[BL_OFFSET((byte))]) |
| #define | MAX_ECFLAGS_DECORATORS 32 |
| #define | hash_fallback rb_hash_aref |
Typedefs | |
| typedef struct rb_transcoding | rb_transcoding |
| typedef struct search_path_queue_tag | search_path_queue_t |
Variables | |
| VALUE | rb_cEncodingConverter |
| #define BL_BASE BYTE_ADDR(BYTE_LOOKUP_BASE(WORD_ADDR(next_table))) |
| #define BL_INFO WORD_ADDR(BYTE_LOOKUP_INFO(WORD_ADDR(next_table))) |
| #define BL_MAX_BYTE (BL_BASE[1]) |
| #define BL_MIN_BYTE (BL_BASE[0]) |
| #define BL_OFFSET | ( | byte | ) | (BL_BASE[2+(byte)-BL_MIN_BYTE]) |
| #define BYTE_ADDR | ( | index | ) | (tr->byte_array + (index)) |
| #define DECORATOR_P | ( | sname, | |
| dname | |||
| ) | (*(sname) == '\0') |
Definition at line 163 of file transcode.c.
| #define ENABLE_ECONV_NEWLINE_OPTION 1 |
Definition at line 27 of file transcode.c.
| #define encoding_equal | ( | enc1, | |
| enc2 | |||
| ) | (STRCASECMP((enc1), (enc2)) == 0) |
Definition at line 250 of file transcode.c.
| #define hash_fallback rb_hash_aref |
Definition at line 2237 of file transcode.c.
| #define MAX_ECFLAGS_DECORATORS 32 |
Definition at line 1020 of file transcode.c.
| #define next_byte (tc->next_byte) |
| #define next_info (tc->next_info) |
| #define next_table (tc->next_table) |
| #define SUSPEND | ( | ret, | |
| num | |||
| ) |
| #define SUSPEND_AFTER_OUTPUT | ( | num | ) |
| #define SUSPEND_OBUF | ( | num | ) |
| #define TRANSCODING_READBUF | ( | tc | ) |
Definition at line 93 of file transcode.c.
| #define TRANSCODING_STATE | ( | tc | ) |
Definition at line 106 of file transcode.c.
| #define TRANSCODING_STATE_EMBED_MAX ((int)sizeof(union rb_transcoding_state_t)) |
Definition at line 105 of file transcode.c.
| #define TRANSCODING_WRITEBUF | ( | tc | ) |
Definition at line 97 of file transcode.c.
| #define TRANSCODING_WRITEBUF_SIZE | ( | tc | ) |
Definition at line 101 of file transcode.c.
| #define WORD_ADDR | ( | index | ) | (tr->word_array + INFO2WORDINDEX(index)) |
| #define writebuf_len (tc->writebuf_len) |
| #define writebuf_off (tc->writebuf_off) |
| typedef struct rb_transcoding rb_transcoding |
| typedef struct search_path_queue_tag search_path_queue_t |
| void Init_transcode | ( | void | ) |
Definition at line 4426 of file transcode.c.
References ID2SYM, InitVM, rb_intern(), and st_init_strcasetable.
| void InitVM_transcode | ( | void | ) |
Definition at line 4462 of file transcode.c.
References ECONV_AFTER_OUTPUT, ECONV_CR_NEWLINE_DECORATOR, ECONV_CRLF_NEWLINE_DECORATOR, ECONV_INVALID_MASK, ECONV_INVALID_REPLACE, ECONV_PARTIAL_INPUT, ECONV_UNDEF_HEX_CHARREF, ECONV_UNDEF_MASK, ECONV_UNDEF_REPLACE, ECONV_UNIVERSAL_NEWLINE_DECORATOR, ECONV_XML_ATTR_CONTENT_DECORATOR, ECONV_XML_ATTR_QUOTE_DECORATOR, ECONV_XML_TEXT_DECORATOR, Init_newline(), INT2FIX, rb_cEncoding, rb_cEncodingConverter, rb_cObject, rb_cString, rb_define_alloc_func(), rb_define_class_under(), rb_define_const(), rb_define_method, rb_define_singleton_method, and rb_eEncodingError.
Definition at line 242 of file transcode.c.
References rb_eArgError, and rb_raise().
Definition at line 1805 of file transcode.c.
References rb_econv_t::destination_encoding, dp, econv_destination_buffer_full, rb_econv_t::last_tc, len, long(), LONG_MAX, rb_transcoder::max_output, NIL_P, rb_eArgError, rb_econv_check_error(), rb_econv_convert(), rb_enc_associate(), rb_raise(), rb_str_buf_new(), rb_str_capacity(), rb_str_resize(), rb_str_set_len(), RSTRING_LEN, RSTRING_PTR, and rb_transcoding::transcoder.
Referenced by rb_econv_substr_append().
Definition at line 1778 of file transcode.c.
References asciicompat_encoding_t::ascii_compat_name, asciicompat_encoding_t::ascii_incompat_name, NULL, st_table::num_entries, st_foreach, and st_lookup.
| void rb_econv_binmode | ( | rb_econv_t * | ec | ) |
Definition at line 1934 of file transcode.c.
References ECONV_CR_NEWLINE_DECORATOR, ECONV_CRLF_NEWLINE_DECORATOR, ECONV_NEWLINE_DECORATOR_MASK, ECONV_UNIVERSAL_NEWLINE_DECORATOR, rb_econv_t::elems, rb_econv_t::flags, rb_econv_t::num_trans, rb_econv_elem_t::out_buf_start, rb_econv_elem_t::tc, rb_transcoding::transcoder, transcoder_entry_t::transcoder, and xfree.
Referenced by rb_io_binmode().
| void rb_econv_check_error | ( | rb_econv_t * | ec | ) |
Definition at line 4246 of file transcode.c.
References rb_econv_init_by_convpath_t::ec, NIL_P, and rb_exc_raise().
Referenced by rb_econv_append().
| void rb_econv_close | ( | rb_econv_t * | ec | ) |
Definition at line 1694 of file transcode.c.
References rb_econv_t::elems, rb_econv_t::in_buf_start, rb_econv_t::num_trans, rb_econv_elem_t::out_buf_start, rb_econv_t::replacement_allocated, rb_econv_t::replacement_str, rb_econv_elem_t::tc, and xfree.
Referenced by rb_econv_open(), and rb_econv_open_opts().
| rb_econv_result_t rb_econv_convert | ( | rb_econv_t * | ec, |
| const unsigned char ** | input_ptr, | ||
| const unsigned char * | input_stop, | ||
| unsigned char ** | output_ptr, | ||
| unsigned char * | output_stop, | ||
| int | flags | ||
| ) |
Definition at line 1438 of file transcode.c.
References econv_incomplete_input, econv_invalid_byte_sequence, ECONV_INVALID_MASK, ECONV_INVALID_REPLACE, ECONV_UNDEF_HEX_CHARREF, ECONV_UNDEF_MASK, ECONV_UNDEF_REPLACE, econv_undefined_conversion, rb_econv_t::flags, and rb_econv_t::started.
Referenced by rb_econv_append().
| int rb_econv_decorate_at_first | ( | rb_econv_t * | ec, |
| const char * | decorator_name | ||
| ) |
Definition at line 1900 of file transcode.c.
References asciicompat_decoder, DECORATOR_P, rb_econv_t::elems, rb_econv_t::num_trans, rb_econv_elem_t::tc, and rb_transcoding::transcoder.
| int rb_econv_decorate_at_last | ( | rb_econv_t * | ec, |
| const char * | decorator_name | ||
| ) |
Definition at line 1917 of file transcode.c.
References asciicompat_encoder, DECORATOR_P, rb_econv_t::elems, rb_econv_t::num_trans, rb_econv_elem_t::tc, and rb_transcoding::transcoder.
Referenced by rb_econv_open().
| const char * rb_econv_encoding_to_insert_output | ( | rb_econv_t * | ec | ) |
Definition at line 1495 of file transcode.c.
References asciicompat_encoder, rb_econv_t::last_tc, NULL, and rb_transcoding::transcoder.
Referenced by rb_econv_insert_output(), and rb_econv_set_replacement().
Definition at line 3189 of file transcode.c.
Referenced by rb_w32_write_console().
| int rb_econv_insert_output | ( | rb_econv_t * | ec, |
| const unsigned char * | str, | ||
| size_t | len, | ||
| const char * | str_encoding | ||
| ) |
Definition at line 1579 of file transcode.c.
References asciicompat_encoder, rb_transcoder::asciicompat_type, rb_econv_t::elems, encoding_equal, fail, rb_econv_t::in_buf_end, rb_econv_t::in_buf_start, rb_econv_t::in_data_end, rb_econv_t::in_data_start, len, memcpy, MEMMOVE, NULL, rb_econv_t::num_trans, rb_econv_elem_t::out_buf_end, rb_econv_elem_t::out_buf_start, rb_econv_elem_t::out_data_end, rb_econv_elem_t::out_data_start, rb_econv_encoding_to_insert_output(), rb_transcoding::readagain_len, rb_transcoding::recognized_len, rb_econv_t::started, str, rb_econv_elem_t::tc, rb_transcoding::transcoder, TRANSCODING_READBUF, xfree, xmalloc, and xrealloc.
| VALUE rb_econv_make_exception | ( | rb_econv_t * | ec | ) |
Definition at line 4240 of file transcode.c.
References rb_econv_init_by_convpath_t::ec.
| size_t rb_econv_memsize | ( | rb_econv_t * | ec | ) |
Definition at line 1712 of file transcode.c.
References rb_econv_t::elems, rb_econv_t::in_buf_end, rb_econv_t::in_buf_start, rb_econv_t::num_allocated, rb_econv_t::num_trans, rb_econv_elem_t::out_buf_end, rb_econv_elem_t::out_buf_start, rb_econv_t::replacement_allocated, rb_econv_t::replacement_len, and rb_econv_elem_t::tc.
Referenced by rb_io_memsize().
| rb_econv_t * rb_econv_open | ( | const char * | sname, |
| const char * | dname, | ||
| int | ecflags | ||
| ) |
Definition at line 1061 of file transcode.c.
References ECONV_ERROR_HANDLER_MASK, rb_econv_t::flags, MAX_ECFLAGS_DECORATORS, NULL, rb_econv_close(), and rb_econv_decorate_at_last().
Referenced by rb_econv_open_opts().
Definition at line 2028 of file transcode.c.
References rb_exc_new3, rb_str_cat2, and rb_str_new_cstr.
| rb_econv_t * rb_econv_open_opts | ( | const char * | source_encoding, |
| const char * | destination_encoding, | ||
| int | ecflags, | ||
| VALUE | opthash | ||
| ) |
Definition at line 2577 of file transcode.c.
References NIL_P, NULL, OBJ_FROZEN, Qnil, rb_bug(), rb_econv_close(), rb_econv_open(), rb_econv_set_replacement(), rb_enc_get(), rb_enc_name, rb_hash_aref(), RSTRING_LEN, RSTRING_PTR, and T_HASH.
Definition at line 2526 of file transcode.c.
References ENC_CODERANGE_BROKEN, idAREF, NIL_P, Qnil, rb_check_hash_type(), rb_eArgError, rb_enc_get(), rb_enc_name, rb_enc_str_coderange(), rb_hash_aref(), rb_hash_aset(), rb_hash_freeze(), rb_hash_new(), rb_obj_is_method(), rb_obj_is_proc(), rb_raise(), rb_respond_to(), rb_str_dump(), rb_str_new_frozen(), StringValue, and StringValueCStr.
Referenced by rb_econv_prepare_opts(), and rb_io_extract_modeenc().
Definition at line 2571 of file transcode.c.
References rb_econv_prepare_options().
| void rb_econv_putback | ( | rb_econv_t * | ec, |
| unsigned char * | p, | ||
| int | n | ||
| ) |
Definition at line 1745 of file transcode.c.
References rb_econv_t::elems, memcpy, rb_econv_t::num_trans, rb_transcoding::readagain_len, rb_transcoding::recognized_len, rb_econv_elem_t::tc, and TRANSCODING_READBUF.
| int rb_econv_putbackable | ( | rb_econv_t * | ec | ) |
Definition at line 1734 of file transcode.c.
References rb_econv_t::elems, rb_econv_t::num_trans, rb_transcoding::readagain_len, and rb_econv_elem_t::tc.
| int rb_econv_set_replacement | ( | rb_econv_t * | ec, |
| const unsigned char * | str, | ||
| size_t | len, | ||
| const char * | encname | ||
| ) |
Definition at line 2190 of file transcode.c.
References encoding_equal, len, MEMCPY, NULL, rb_econv_encoding_to_insert_output(), rb_econv_t::replacement_allocated, rb_econv_t::replacement_enc, rb_econv_t::replacement_len, rb_econv_t::replacement_str, str, xfree, and xmalloc.
Referenced by rb_econv_open_opts().
| VALUE rb_econv_str_append | ( | rb_econv_t * | ec, |
| VALUE | src, | ||
| VALUE | dst, | ||
| int | flags | ||
| ) |
Definition at line 1857 of file transcode.c.
References rb_econv_substr_append(), and RSTRING_LEN.
| VALUE rb_econv_str_convert | ( | rb_econv_t * | ec, |
| VALUE | src, | ||
| int | flags | ||
| ) |
Definition at line 1869 of file transcode.c.
References Qnil, rb_econv_substr_append(), and RSTRING_LEN.
| VALUE rb_econv_substr_append | ( | rb_econv_t * | ec, |
| VALUE | src, | ||
| long | off, | ||
| long | len, | ||
| VALUE | dst, | ||
| int | flags | ||
| ) |
Definition at line 1848 of file transcode.c.
References len, rb_econv_append(), RB_GC_GUARD, rb_str_new_frozen(), and RSTRING_PTR.
Referenced by rb_econv_str_append(), rb_econv_str_convert(), and rb_econv_substr_convert().
| VALUE rb_econv_substr_convert | ( | rb_econv_t * | ec, |
| VALUE | src, | ||
| long | byteoff, | ||
| long | bytesize, | ||
| int | flags | ||
| ) |
Definition at line 1863 of file transcode.c.
References Qnil, and rb_econv_substr_append().
| void rb_register_transcoder | ( | const rb_transcoder * | tr | ) |
Definition at line 214 of file transcode.c.
References rb_eArgError, rb_raise(), and transcoder_entry_t::transcoder.
Definition at line 2892 of file transcode.c.
References argc, argv, and str.
Referenced by rb_str_ellipsize().
| VALUE rb_cEncodingConverter |
Definition at line 34 of file transcode.c.
Referenced by InitVM_transcode().