mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
encoding.c: move ruby_encoding_index stuff
* encoding.c: move `ruby_encoding_index` stuff from include/ruby/encoding.h to hide the extra field. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f2980e3e20
commit
0fec24f972
2 changed files with 22 additions and 15 deletions
21
encoding.c
21
encoding.c
|
@ -52,6 +52,13 @@ static struct {
|
|||
st_table *names;
|
||||
} enc_table;
|
||||
|
||||
#define ENC_DUMMY_FLAG (1<<24)
|
||||
#define ENC_INDEX_MASK (~(~0U<<24))
|
||||
|
||||
#define ENC_TO_ENCINDEX(enc) (int)((enc)->ruby_encoding_index & ENC_INDEX_MASK)
|
||||
#define ENC_DUMMY_P(enc) ((enc)->ruby_encoding_index & ENC_DUMMY_FLAG)
|
||||
#define ENC_SET_DUMMY(enc) ((enc)->ruby_encoding_index |= ENC_DUMMY_FLAG)
|
||||
|
||||
void rb_enc_init(void);
|
||||
|
||||
#define ENCODING_COUNT ENCINDEX_BUILTIN_MAX
|
||||
|
@ -109,6 +116,18 @@ rb_enc_from_encoding(rb_encoding *encoding)
|
|||
return rb_enc_from_encoding_index(idx);
|
||||
}
|
||||
|
||||
int
|
||||
rb_enc_to_index(rb_encoding *enc)
|
||||
{
|
||||
return enc ? ENC_TO_ENCINDEX(enc) : 0;
|
||||
}
|
||||
|
||||
int
|
||||
rb_enc_dummy_p(rb_encoding *enc)
|
||||
{
|
||||
return ENC_DUMMY_P(enc) != 0;
|
||||
}
|
||||
|
||||
static int enc_autoload(rb_encoding *);
|
||||
|
||||
static int
|
||||
|
@ -352,7 +371,7 @@ set_base_encoding(int index, rb_encoding *base)
|
|||
rb_encoding *enc = enc_table.list[index].enc;
|
||||
|
||||
enc_table.list[index].base = base;
|
||||
if (rb_enc_dummy_p(base)) ENC_SET_DUMMY((rb_raw_encoding *)enc);
|
||||
if (ENC_DUMMY_P(base)) ENC_SET_DUMMY((rb_raw_encoding *)enc);
|
||||
return enc;
|
||||
}
|
||||
|
||||
|
|
|
@ -74,7 +74,8 @@ int rb_char_to_option_kcode(int c, int *option, int *kcode);
|
|||
|
||||
int rb_enc_replicate(const char *, rb_encoding *);
|
||||
int rb_define_dummy_encoding(const char *);
|
||||
#define rb_enc_to_index(enc) ((enc) ? ENC_TO_ENCINDEX(enc) : 0)
|
||||
int rb_enc_dummy_p(rb_encoding *enc);
|
||||
int rb_enc_to_index(rb_encoding *enc);
|
||||
int rb_enc_get_index(VALUE obj);
|
||||
void rb_enc_set_index(VALUE obj, int encindex);
|
||||
int rb_enc_find_index(const char *name);
|
||||
|
@ -233,19 +234,6 @@ const char *ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc)
|
|||
ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc);
|
||||
|
||||
RUBY_EXTERN VALUE rb_cEncoding;
|
||||
#define ENC_DUMMY_FLAG (1<<24)
|
||||
#define ENC_INDEX_MASK (~(~0U<<24))
|
||||
|
||||
#define ENC_TO_ENCINDEX(enc) (int)((enc)->ruby_encoding_index & ENC_INDEX_MASK)
|
||||
|
||||
#define ENC_DUMMY_P(enc) ((enc)->ruby_encoding_index & ENC_DUMMY_FLAG)
|
||||
#define ENC_SET_DUMMY(enc) ((enc)->ruby_encoding_index |= ENC_DUMMY_FLAG)
|
||||
|
||||
static inline int
|
||||
rb_enc_dummy_p(rb_encoding *enc)
|
||||
{
|
||||
return ENC_DUMMY_P(enc) != 0;
|
||||
}
|
||||
|
||||
/* econv stuff */
|
||||
|
||||
|
|
Loading…
Reference in a new issue