mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-string-ext (str_b): add a new method String#b
The method makes the receiver binary-mode, but in mruby, which is virtually no meaning.
This commit is contained in:
@@ -92,6 +92,8 @@ struct RStringEmbed {
|
||||
# define RSTR_COPY_SINGLE_BYTE_FLAG(dst, src) (void)0
|
||||
#endif
|
||||
#define RSTR_SET_ASCII_FLAG(s) RSTR_SET_SINGLE_BYTE_FLAG(s)
|
||||
#define RSTR_BINARY_P(s) ((s)->flags & MRB_STR_BINARY)
|
||||
#define RSTR_SET_BINARY_FLAG(s) ((s)->flags |= MRB_STR_BINARY)
|
||||
|
||||
/**
|
||||
* Returns a pointer from a Ruby string
|
||||
@@ -109,7 +111,8 @@ struct RStringEmbed {
|
||||
#define MRB_STR_FSHARED 2
|
||||
#define MRB_STR_NOFREE 4
|
||||
#define MRB_STR_EMBED 8 /* type flags up to here */
|
||||
#define MRB_STR_SINGLE_BYTE 16
|
||||
#define MRB_STR_BINARY 16
|
||||
#define MRB_STR_SINGLE_BYTE 32
|
||||
#define MRB_STR_EMBED_LEN_SHIFT 6
|
||||
#define MRB_STR_EMBED_LEN_BIT 5
|
||||
#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
|
||||
|
||||
@@ -1325,6 +1325,13 @@ str_ascii_only_p(mrb_state *mrb, mrb_value str)
|
||||
return mrb_true_value();
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
str_b(mrb_state *mrb, mrb_value str)
|
||||
{
|
||||
RSTR_SET_BINARY_FLAG(mrb_str_ptr(str));
|
||||
return str;
|
||||
}
|
||||
|
||||
void
|
||||
mrb_mruby_string_ext_gem_init(mrb_state* mrb)
|
||||
{
|
||||
@@ -1364,6 +1371,7 @@ mrb_mruby_string_ext_gem_init(mrb_state* mrb)
|
||||
mrb_define_method_id(mrb, s, MRB_OPSYM(minus), str_uminus, MRB_ARGS_REQ(1));
|
||||
mrb_define_method_id(mrb, s, MRB_SYM_Q(valid_encoding), str_valid_enc_p, MRB_ARGS_NONE());
|
||||
mrb_define_method_id(mrb, s, MRB_SYM_Q(ascii_only), str_ascii_only_p, MRB_ARGS_NONE());
|
||||
mrb_define_method_id(mrb, s, MRB_SYM(b), str_b, MRB_ARGS_NONE());
|
||||
|
||||
mrb_define_method_id(mrb, s, MRB_SYM(__lines), str_lines, MRB_ARGS_NONE());
|
||||
mrb_define_method_id(mrb, s, MRB_SYM(__codepoints), str_codepoints, MRB_ARGS_NONE());
|
||||
|
||||
Reference in New Issue
Block a user