summaryrefslogtreecommitdiff
path: root/include/ruby/internal/intern/string.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ruby/internal/intern/string.h')
-rw-r--r--include/ruby/internal/intern/string.h95
1 files changed, 22 insertions, 73 deletions
diff --git a/include/ruby/internal/intern/string.h b/include/ruby/internal/intern/string.h
index 0e2e6d6af7..6827563e8d 100644
--- a/include/ruby/internal/intern/string.h
+++ b/include/ruby/internal/intern/string.h
@@ -62,13 +62,13 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
*/
VALUE rb_str_new(const char *ptr, long len);
-RBIMPL_ATTR_NONNULL(())
/**
* Identical to rb_str_new(), except it assumes the passed pointer is a pointer
* to a C string.
*
* @param[in] ptr A C string.
* @exception rb_eNoMemError Failed to allocate memory.
+ * @exception rb_eArgError `ptr` is a null pointer.
* @return An instance of ::rb_cString, of "binary" encoding, whose
* contents are verbatim copy of `ptr`.
* @pre `ptr` must not be a null pointer.
@@ -122,37 +122,6 @@ VALUE rb_str_new_frozen(VALUE str);
*/
VALUE rb_str_new_with_class(VALUE obj, const char *ptr, long len);
-RBIMPL_ATTR_NONNULL(())
-/**
- * @deprecated This function once was a thing in the old days, but makes no
- * sense any longer today. Exists here for backwards
- * compatibility only. You can safely forget about it.
- *
- * @param[in] ptr A C string.
- * @exception rb_eNoMemError Failed to allocate memory.
- * @return An instance of ::rb_cString, of "binary" encoding, whose
- * contents are verbatim copy of `ptr`.
- * @pre `ptr` must not be a null pointer.
- */
-VALUE rb_tainted_str_new_cstr(const char *ptr);
-
-/**
- * @deprecated This function once was a thing in the old days, but makes no
- * sense any longer today. Exists here for backwards
- * compatibility only. You can safely forget about it.
- *
- * @param[in] ptr A memory region of `len` bytes length.
- * @param[in] len Length of `ptr`, in bytes, not including the
- * terminating NUL character.
- * @exception rb_eNoMemError Failed to allocate `len+1` bytes.
- * @exception rb_eArgError `len` is negative.
- * @return An instance of ::rb_cString, of `len` bytes length, of
- * "binary" encoding, whose contents are verbatim copy of `ptr`.
- * @pre At least `len` bytes of continuous memory region shall be
- * accessible via `ptr`.
- */
-VALUE rb_tainted_str_new(const char *ptr, long len);
-
/**
* Identical to rb_str_new(), except it generates a string of "default
* external" encoding.
@@ -333,7 +302,6 @@ VALUE rb_str_tmp_new(long len);
*/
VALUE rb_usascii_str_new(const char *ptr, long len);
-RBIMPL_ATTR_NONNULL(())
/**
* Identical to rb_str_new_cstr(), except it generates a string of "US ASCII"
* encoding. It can also be seen as a routine Identical to
@@ -342,6 +310,7 @@ RBIMPL_ATTR_NONNULL(())
*
* @param[in] ptr A C string.
* @exception rb_eNoMemError Failed to allocate memory.
+ * @exception rb_eArgError `ptr` is a null pointer.
* @return An instance of ::rb_cString, of "US ASCII" encoding, whose
* contents are verbatim copy of `ptr`.
* @pre `ptr` must not be a null pointer.
@@ -361,7 +330,6 @@ VALUE rb_usascii_str_new_cstr(const char *ptr);
*/
VALUE rb_utf8_str_new(const char *ptr, long len);
-RBIMPL_ATTR_NONNULL(())
/**
* Identical to rb_str_new_cstr(), except it generates a string of "UTF-8"
* encoding. It can also be seen as a routine Identical to
@@ -370,6 +338,7 @@ RBIMPL_ATTR_NONNULL(())
*
* @param[in] ptr A C string.
* @exception rb_eNoMemError Failed to allocate memory.
+ * @exception rb_eArgError `ptr` is a null pointer.
* @return An instance of ::rb_cString, of "UTF-8" encoding, whose contents
* are verbatim copy of `ptr`.
* @pre `ptr` must not be a null pointer.
@@ -443,7 +412,7 @@ VALUE rb_utf8_str_new_static(const char *ptr, long len);
/**
* Identical to rb_interned_str(), except it takes a Ruby's string instead of
- * C's. It can also be seen as a routine identical to to rb_str_new_shared(),
+ * C's. It can also be seen as a routine identical to rb_str_new_shared(),
* except it returns an infamous "f"string.
*
* @param[in] str An object of ::RString.
@@ -485,7 +454,7 @@ VALUE rb_interned_str(const char *ptr, long len);
RBIMPL_ATTR_NONNULL(())
/**
* Identical to rb_interned_str(), except it assumes the passed pointer is a
- * pointer to a C's string. It can also be seen as a routine identical to to
+ * pointer to a C's string. It can also be seen as a routine identical to
* rb_str_to_interned_str(), except it takes a C's string instead of Ruby's.
* Or it can also be seen as a routine identical to rb_str_new_cstr(), except
* it returns an infamous "f"string.
@@ -553,7 +522,6 @@ VALUE rb_str_buf_append(VALUE dst, VALUE src);
/** @alias{rb_str_cat} */
VALUE rb_str_buf_cat(VALUE, const char*, long);
-RBIMPL_ATTR_NONNULL(())
/** @alias{rb_str_cat_cstr} */
VALUE rb_str_buf_cat2(VALUE, const char*);
@@ -634,6 +602,21 @@ VALUE rb_str_dup(VALUE str);
VALUE rb_str_resurrect(VALUE str);
/**
+ * Returns whether a string is chilled or not.
+ *
+ * This function is temporary and users must check for its presence using
+ * #ifdef HAVE_RB_STR_CHILLED_P. If HAVE_RB_STR_CHILLED_P is not defined, then
+ * strings can't be chilled.
+ *
+ * @param[in] str A string.
+ * @retval 1 The string is chilled.
+ * @retval 0 Otherwise.
+ */
+bool rb_str_chilled_p(VALUE str);
+
+#define HAVE_RB_STR_CHILLED_P 1
+
+/**
* Obtains a "temporary lock" of the string. This advisory locking mechanism
* prevents other cooperating threads from tampering the receiver. The same
* thing could be done via freeze mechanism, but this one can also be unlocked
@@ -874,7 +857,6 @@ VALUE rb_str_resize(VALUE str, long len);
*/
VALUE rb_str_cat(VALUE dst, const char *src, long srclen);
-RBIMPL_ATTR_NONNULL(())
/**
* Identical to rb_str_cat(), except it assumes the passed pointer is a pointer
* to a C string.
@@ -882,6 +864,7 @@ RBIMPL_ATTR_NONNULL(())
* @param[out] dst Destination object.
* @param[in] src Contents to append.
* @exception rb_eArgError Result string too big.
+ * @exception rb_eArgError `src` is a null pointer.
* @return The passed `dst`.
* @pre `dst` must not be any arbitrary objects except ::RString.
* @pre `src` must not be a null pointer.
@@ -889,7 +872,6 @@ RBIMPL_ATTR_NONNULL(())
*/
VALUE rb_str_cat_cstr(VALUE dst, const char *src);
-RBIMPL_ATTR_NONNULL(())
/** @alias{rb_str_cat_cstr} */
VALUE rb_str_cat2(VALUE, const char*);
@@ -1153,7 +1135,6 @@ VALUE rb_str_inspect(VALUE str);
*/
VALUE rb_str_dump(VALUE str);
-RBIMPL_ATTR_NONNULL(())
/**
* Divides the given string based on the given delimiter. This is the
* 1-argument 0-block version of `String#split`.
@@ -1161,6 +1142,7 @@ RBIMPL_ATTR_NONNULL(())
* @param[in] str Object in question to split.
* @param[in] delim Delimiter, in C string.
* @exception rb_eTypeError `str` has no implicit conversion to String.
+ * @exception rb_eArgError `delim` is a null pointer.
* @return An array of strings, which are substrings of the passed `str`.
* If `delim` is an empty C string (i.e. `""`), `str` is split into
* each characters. If `delim` is a C string whose sole content is
@@ -1400,22 +1382,6 @@ rbimpl_str_new_cstr(const char *str)
return rb_str_new_static(str, len);
}
-RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
-/**
- * @private
- *
- * This is an implementation detail. Don't bother.
- *
- * @param[in] str A C string literal.
- * @return Corresponding Ruby string.
- */
-static inline VALUE
-rbimpl_tainted_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_tainted_str_new(str, len);
-}
-
RBIMPL_ATTR_NONNULL(())
/**
* @private
@@ -1602,22 +1568,6 @@ rbimpl_exc_new_cstr(VALUE exc, const char *str)
rb_utf8_str_new) ((str), (len)))
/**
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- *
- * @param[in] str A C string.
- * @exception rb_eNoMemError Failed to allocate memory.
- * @return An instance of ::rb_cString, of "binary" encoding, whose
- * contents are verbatim copy of `str`.
- * @pre `str` must not be a null pointer.
- */
-#define rb_tainted_str_new_cstr(str) \
- ((RBIMPL_CONSTANT_P(str) ? \
- rbimpl_tainted_str_new_cstr : \
- rb_tainted_str_new_cstr) (str))
-
-/**
* Identical to #rb_str_new_cstr, except it generates a string of "US ASCII"
* encoding. It can also be seen as a routine Identical to
* #rb_usascii_str_new, except it assumes the passed pointer is a pointer to a
@@ -1741,7 +1691,6 @@ rbimpl_exc_new_cstr(VALUE exc, const char *str)
#define rb_str_new3 rb_str_new_shared /**< @old{rb_str_new_shared} */
#define rb_str_new4 rb_str_new_frozen /**< @old{rb_str_new_frozen} */
#define rb_str_new5 rb_str_new_with_class /**< @old{rb_str_new_with_class} */
-#define rb_tainted_str_new2 rb_tainted_str_new_cstr /**< @old{rb_tainted_str_new_cstr} */
#define rb_str_buf_new2 rb_str_buf_new_cstr /**< @old{rb_str_buf_new_cstr} */
#define rb_usascii_str_new2 rb_usascii_str_new_cstr /**< @old{rb_usascii_str_new_cstr} */
#define rb_str_buf_cat rb_str_cat /**< @alias{rb_str_cat} */