Skip to content

Commit

Permalink
Use rb_parser_string_t * in parser_str_new
Browse files Browse the repository at this point in the history
Reduced dependence of VALUE and Universal Parser on the C API
  • Loading branch information
S-H-GAMELINKS committed Apr 30, 2024
1 parent d7ba0fe commit 1d67cbc
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 23 deletions.
16 changes: 11 additions & 5 deletions parse.y
Original file line number Diff line number Diff line change
Expand Up @@ -7889,21 +7889,27 @@ enum string_type {
str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
};

static void
parser_str_enc_associate(rb_parser_string_t *str, void *enc)
{
str->enc = (rb_encoding *)(enc);
}

static VALUE
parser_str_new(struct parser_params *p, const char *ptr, long len, rb_encoding *enc, int func, rb_encoding *enc0)
{
VALUE str;
rb_parser_string_t *str;

str = rb_enc_str_new(ptr, len, enc);
str = rb_parser_encoding_string_new(p, ptr, len, enc);
if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
if (is_ascii_string(str)) {
if (rb_parser_is_ascii_string(p, str)) {
}
else if (rb_is_usascii_enc((void *)enc0) && enc != rb_utf8_encoding()) {
rb_enc_associate(str, rb_ascii8bit_encoding());
parser_str_enc_associate(str, (void *)rb_ascii8bit_encoding());
}
}

return str;
return rb_str_new_parser_string(str);
}

static int
Expand Down
14 changes: 0 additions & 14 deletions ruby_parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,6 @@
#include "vm_core.h"
#include "symbol.h"

static int
is_ascii_string2(VALUE str)
{
return is_ascii_string(str);
}

RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 6, 0)
static VALUE
syntax_error_append(VALUE exc, VALUE file, int line, int column,
Expand Down Expand Up @@ -142,12 +136,6 @@ utf8_encoding(void)
return (void *)rb_utf8_encoding();
}

static VALUE
enc_associate(VALUE obj, void *enc)
{
return rb_enc_associate(obj, (rb_encoding *)enc);
}

static void *
ascii8bit_encoding(void)
{
Expand Down Expand Up @@ -382,7 +370,6 @@ static const rb_parser_config_t rb_global_parser_config = {
.str_new = rb_str_new,
.str_new_cstr = rb_str_new_cstr,
.str_to_interned_str = rb_str_to_interned_str,
.is_ascii_string = is_ascii_string2,
.enc_str_new = enc_str_new,
.str_vcatf = rb_str_vcatf,
.string_value_cstr = rb_string_value_cstr,
Expand Down Expand Up @@ -413,7 +400,6 @@ static const rb_parser_config_t rb_global_parser_config = {
.enc_get = enc_get,
.enc_asciicompat = enc_asciicompat,
.utf8_encoding = utf8_encoding,
.enc_associate = enc_associate,
.ascii8bit_encoding = ascii8bit_encoding,
.enc_codelen = enc_codelen,
.enc_mbcput = enc_mbcput,
Expand Down
2 changes: 0 additions & 2 deletions rubyparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -1297,7 +1297,6 @@ typedef struct rb_parser_config_struct {
VALUE (*str_new)(const char *ptr, long len);
VALUE (*str_new_cstr)(const char *ptr);
VALUE (*str_to_interned_str)(VALUE);
int (*is_ascii_string)(VALUE str);
VALUE (*enc_str_new)(const char *ptr, long len, rb_encoding *enc);
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 0)
VALUE (*str_vcatf)(VALUE str, const char *fmt, va_list ap);
Expand Down Expand Up @@ -1334,7 +1333,6 @@ typedef struct rb_parser_config_struct {
rb_encoding* (*enc_get)(VALUE obj);
int (*enc_asciicompat)(rb_encoding *enc);
rb_encoding *(*utf8_encoding)(void);
VALUE (*enc_associate)(VALUE obj, rb_encoding *enc);
rb_encoding *(*ascii8bit_encoding)(void);
int (*enc_codelen)(int c, rb_encoding *enc);
int (*enc_mbcput)(unsigned int c, void *buf, rb_encoding *enc);
Expand Down
2 changes: 0 additions & 2 deletions universal_parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@
#undef rb_str_new_cstr
#define rb_str_new_cstr p->config->str_new_cstr
#define rb_str_to_interned_str p->config->str_to_interned_str
#define is_ascii_string p->config->is_ascii_string
#define rb_enc_str_new p->config->enc_str_new
#define rb_str_vcatf p->config->str_vcatf
#undef StringValueCStr
Expand Down Expand Up @@ -164,7 +163,6 @@
#define rb_enc_get p->config->enc_get
#define rb_enc_asciicompat p->config->enc_asciicompat
#define rb_utf8_encoding p->config->utf8_encoding
#define rb_enc_associate p->config->enc_associate
#define rb_ascii8bit_encoding p->config->ascii8bit_encoding
#define rb_enc_codelen p->config->enc_codelen
#define rb_enc_mbcput p->config->enc_mbcput
Expand Down

0 comments on commit 1d67cbc

Please sign in to comment.