1#ifndef RBIMPL_INTERN_STRING_H
2#define RBIMPL_INTERN_STRING_H
94#define rb_str_dup_frozen rb_str_new_frozen
116#define rb_hash_uint32(h, i) st_hash_uint32((h), (i))
117#define rb_hash_uint(h, i) st_hash_uint((h), (i))
118#define rb_hash_end(h) st_hash_end(h)
150rbimpl_str_new_cstr(
const char *
str)
152 long len = rbimpl_strlen(
str);
157rbimpl_tainted_str_new_cstr(
const char *
str)
159 long len = rbimpl_strlen(
str);
164rbimpl_usascii_str_new_cstr(
const char *
str)
166 long len = rbimpl_strlen(
str);
171rbimpl_utf8_str_new_cstr(
const char *
str)
173 long len = rbimpl_strlen(
str);
178rbimpl_external_str_new_cstr(
const char *
str)
180 long len = rbimpl_strlen(
str);
185rbimpl_locale_str_new_cstr(
const char *
str)
187 long len = rbimpl_strlen(
str);
192rbimpl_str_buf_new_cstr(
const char *
str)
194 long len = rbimpl_strlen(
str);
202 long len = rbimpl_strlen(
str);
207rbimpl_exc_new_cstr(
VALUE exc,
const char *
str)
209 long len = rbimpl_strlen(
str);
213#define rb_str_new(str, len) \
214 ((RBIMPL_CONSTANT_P(str) && \
215 RBIMPL_CONSTANT_P(len) ? \
216 rb_str_new_static : \
217 rb_str_new) ((str), (len)))
219#define rb_str_new_cstr(str) \
220 ((RBIMPL_CONSTANT_P(str) ? \
221 rbimpl_str_new_cstr : \
222 rb_str_new_cstr) (str))
224#define rb_usascii_str_new(str, len) \
225 ((RBIMPL_CONSTANT_P(str) && \
226 RBIMPL_CONSTANT_P(len) ? \
227 rb_usascii_str_new_static : \
228 rb_usascii_str_new) ((str), (len)))
230#define rb_utf8_str_new(str, len) \
231 ((RBIMPL_CONSTANT_P(str) && \
232 RBIMPL_CONSTANT_P(len) ? \
233 rb_utf8_str_new_static : \
234 rb_utf8_str_new) ((str), (len)))
236#define rb_tainted_str_new_cstr(str) \
237 ((RBIMPL_CONSTANT_P(str) ? \
238 rbimpl_tainted_str_new_cstr : \
239 rb_tainted_str_new_cstr) (str))
241#define rb_usascii_str_new_cstr(str) \
242 ((RBIMPL_CONSTANT_P(str) ? \
243 rbimpl_usascii_str_new_cstr : \
244 rb_usascii_str_new_cstr) (str))
246#define rb_utf8_str_new_cstr(str) \
247 ((RBIMPL_CONSTANT_P(str) ? \
248 rbimpl_utf8_str_new_cstr : \
249 rb_utf8_str_new_cstr) (str))
251#define rb_external_str_new_cstr(str) \
252 ((RBIMPL_CONSTANT_P(str) ? \
253 rbimpl_external_str_new_cstr : \
254 rb_external_str_new_cstr) (str))
256#define rb_locale_str_new_cstr(str) \
257 ((RBIMPL_CONSTANT_P(str) ? \
258 rbimpl_locale_str_new_cstr : \
259 rb_locale_str_new_cstr) (str))
261#define rb_str_buf_new_cstr(str) \
262 ((RBIMPL_CONSTANT_P(str) ? \
263 rbimpl_str_buf_new_cstr : \
264 rb_str_buf_new_cstr) (str))
266#define rb_str_cat_cstr(buf, str) \
267 ((RBIMPL_CONSTANT_P(str) ? \
268 rbimpl_str_cat_cstr : \
269 rb_str_cat_cstr) ((buf), (str)))
271#define rb_exc_new_cstr(exc, str) \
272 ((RBIMPL_CONSTANT_P(str) ? \
273 rbimpl_exc_new_cstr : \
274 rb_exc_new_cstr) ((exc), (str)))
276#define rb_str_new2 rb_str_new_cstr
277#define rb_str_new3 rb_str_new_shared
278#define rb_str_new4 rb_str_new_frozen
279#define rb_str_new5 rb_str_new_with_class
280#define rb_tainted_str_new2 rb_tainted_str_new_cstr
281#define rb_str_buf_new2 rb_str_buf_new_cstr
282#define rb_usascii_str_new2 rb_usascii_str_new_cstr
283#define rb_str_buf_cat rb_str_cat
284#define rb_str_buf_cat2 rb_str_cat_cstr
285#define rb_str_cat2 rb_str_cat_cstr
286#define rb_strlen_lit(str) (sizeof(str "") - 1)
287#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
288#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
289#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
290#define rb_enc_str_new_lit(str, enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
291#define rb_str_new_literal(str) rb_str_new_lit(str)
292#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
293#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
294#define rb_enc_str_new_literal(str, enc) rb_enc_str_new_lit(str, enc)
Defines RBIMPL_CONSTANT_P.
Tewaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
char str[HTML_ESCAPE_MAX_LEN+1]
VALUE rb_exc_new(VALUE etype, const char *ptr, long len)
Thin wrapper to ruby/config.h.
VALUE rb_str_unlocktmp(VALUE)
VALUE rb_str_freeze(VALUE)
VALUE rb_str_resize(VALUE, long)
VALUE rb_str_scrub(VALUE, VALUE)
#define rb_hash_uint(h, i)
long rb_str_offset(VALUE, long)
void rb_must_asciicompat(VALUE)
#define rb_utf8_str_new_cstr(str)
#define rb_hash_uint32(h, i)
VALUE rb_str_new_shared(VALUE)
void rb_str_shared_replace(VALUE, VALUE)
char * rb_str_subpos(VALUE, long, long *)
VALUE rb_str_concat(VALUE, VALUE)
VALUE rb_str_to_interned_str(VALUE)
VALUE rb_external_str_new(const char *, long)
void rb_str_update(VALUE, long, long, VALUE)
VALUE rb_str_plus(VALUE, VALUE)
st_index_t rb_memhash(const void *ptr, long len)
#define rb_str_new(str, len)
VALUE rb_str_new_static(const char *ptr, long len)
*_str_new_static functions are intended for C string literals.
VALUE rb_str_cat(VALUE, const char *, long)
VALUE rb_filesystem_str_new(const char *, long)
VALUE rb_locale_str_new(const char *, long)
#define rb_usascii_str_new(str, len)
st_index_t rb_hash_start(st_index_t)
void rb_str_set_len(VALUE, long)
VALUE rb_str_replace(VALUE, VALUE)
VALUE rb_str_substr(VALUE, long, long)
void rb_str_modify(VALUE)
VALUE rb_str_buf_new(long)
VALUE rb_check_string_type(VALUE)
VALUE rb_str_resurrect(VALUE str)
VALUE rb_str_inspect(VALUE)
VALUE rb_filesystem_str_new_cstr(const char *)
#define rb_str_buf_new_cstr(str)
long rb_str_strlen(VALUE)
#define rb_usascii_str_new_cstr(str)
rb_gvar_setter_t rb_str_setter
#define rb_external_str_new_cstr(str)
VALUE rb_tainted_str_new(const char *, long)
VALUE rb_str_new_with_class(VALUE, const char *, long)
VALUE rb_str_equal(VALUE str1, VALUE str2)
VALUE rb_str_split(VALUE, const char *)
VALUE rb_str_times(VALUE, VALUE)
int rb_str_comparable(VALUE, VALUE)
VALUE rb_str_tmp_new(long)
VALUE rb_str_ellipsize(VALUE, long)
Shortens str and adds three dots, an ellipsis, if it is longer than len characters.
int rb_str_cmp(VALUE, VALUE)
VALUE rb_str_subseq(VALUE, long, long)
VALUE rb_str_append(VALUE, VALUE)
VALUE rb_str_buf_cat_ascii(VALUE, const char *)
VALUE rb_str_new_frozen(VALUE)
void rb_str_modify_expand(VALUE, long)
VALUE rb_interned_str_cstr(const char *)
VALUE rb_str_buf_append(VALUE, VALUE)
VALUE rb_str_intern(VALUE)
VALUE rb_str_drop_bytes(VALUE, long)
#define rb_locale_str_new_cstr(str)
int rb_str_hash_cmp(VALUE, VALUE)
#define rb_str_dup_frozen
VALUE rb_str_locktmp(VALUE)
VALUE rb_obj_as_string(VALUE)
#define rb_str_cat_cstr(buf, str)
long rb_str_sublen(VALUE, long)
VALUE rb_utf8_str_new_static(const char *ptr, long len)
#define rb_utf8_str_new(str, len)
size_t rb_str_capacity(VALUE)
st_index_t rb_str_hash(VALUE)
VALUE rb_interned_str(const char *, long)
#define rb_tainted_str_new_cstr(str)
VALUE rb_str_length(VALUE)
#define rb_str_new_cstr(str)
VALUE rb_usascii_str_new_static(const char *ptr, long len)
C-function backended Ruby-global variables.
void rb_gvar_setter_t(VALUE val, ID id, VALUE *data)
Defines RBIMPL_ATTR_NONNULL.
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull))
Defines RBIMPL_ATTR_PURE.
#define RBIMPL_ATTR_PURE()
Wraps (or simulates) __attribute__((pure))
size_t strlen(const char *)