[前][次][番号順一覧][スレッド一覧]

ruby-changes:67779

From: =E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3 <ko1@a...>
Date: Fri, 10 Sep 2021 20:01:56 +0900 (JST)
Subject: [ruby-changes:67779] 091faca99c (master): include/ruby/internal/intern/string.h: add doygen

https://git.ruby-lang.org/ruby.git/commit/?id=091faca99c

From 091faca99ca92cb1146b3c4d8ebba67f4822561c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?=
 <shyouhei@r...>
Date: Thu, 18 Feb 2021 15:35:55 +0900
Subject: include/ruby/internal/intern/string.h: add doygen

Must not be a bad idea to improve documents. [ci skip]
---
 include/ruby/internal/intern/string.h | 1693 +++++++++++++++++++++++++++++++--
 string.c                              |   25 +-
 2 files changed, 1613 insertions(+), 105 deletions(-)

diff --git a/include/ruby/internal/intern/string.h b/include/ruby/internal/intern/string.h
index 8df5502..1cb33a6 100644
--- a/include/ruby/internal/intern/string.h
+++ b/include/ruby/internal/intern/string.h
@@ -34,6 +34,7 @@ https://github.com/ruby/ruby/blob/trunk/include/ruby/internal/intern/string.h#L34
 # include <stdint.h>
 #endif
 
+#include "ruby/internal/attr/deprecated.h"
 #include "ruby/internal/attr/nonnull.h"
 #include "ruby/internal/attr/pure.h"
 #include "ruby/internal/constant_p.h"
@@ -45,107 +46,1351 @@ https://github.com/ruby/ruby/blob/trunk/include/ruby/internal/intern/string.h#L46
 RBIMPL_SYMBOL_EXPORT_BEGIN()
 
 /* string.c */
-VALUE rb_str_new(const char*, long);
-VALUE rb_str_new_cstr(const char*);
-VALUE rb_str_new_shared(VALUE);
-VALUE rb_str_new_frozen(VALUE);
-VALUE rb_str_new_with_class(VALUE, const char*, long);
-VALUE rb_tainted_str_new_cstr(const char*);
-VALUE rb_tainted_str_new(const char*, long);
-VALUE rb_external_str_new(const char*, long);
-VALUE rb_external_str_new_cstr(const char*);
-VALUE rb_locale_str_new(const char*, long);
-VALUE rb_locale_str_new_cstr(const char*);
-VALUE rb_filesystem_str_new(const char*, long);
-VALUE rb_filesystem_str_new_cstr(const char*);
-VALUE rb_str_buf_new(long);
-VALUE rb_str_buf_new_cstr(const char*);
-VALUE rb_str_buf_new2(const char*);
-VALUE rb_str_tmp_new(long);
-VALUE rb_usascii_str_new(const char*, long);
-VALUE rb_usascii_str_new_cstr(const char*);
-VALUE rb_utf8_str_new(const char*, long);
-VALUE rb_utf8_str_new_cstr(const char*);
+
+/**
+ * Allocates an instance of ::rb_cString.
+ *
+ * @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_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.
+ * @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_str_new_cstr(const char *ptr);
+
+/**
+ * Identical to rb_str_new_cstr(),  except it takes a Ruby's  string instead of
+ * C's.  Implementation wise it creates a string that shares the backend memory
+ * region with the receiver.   So the name.  But there is  no way for extension
+ * libraries to know if a string is of such variant.
+ *
+ * @param[in]  str  An object of ::RString.
+ * @return     An  allocated   instance  of  ::rb_cString,  which   shares  the
+ *             encoding, length, and contents with the passed string.
+ * @pre        `str` must not be any arbitrary object except ::RString.
+ * @note       Use #StringValue to enforce the precondition.
+ */
+VALUE rb_str_new_shared(VALUE str);
+
+/**
+ * Creates  a frozen  copy of  the string,  if necessary.   This function  does
+ * nothing when the passed string is already frozen.  Otherwise, it allocates a
+ * copy of it, which is frozen.  The passed string is untouched either ways.
+ *
+ * @param[in]  str  An object of ::RString.
+ * @return     Something frozen.
+ * @pre        `str` must not be any arbitrary object except ::RString.
+ * @note       Use #StringValue to enforce the precondition.
+ */
+VALUE rb_str_new_frozen(VALUE str);
+
+/**
+ * Identical  to rb_str_new(),  except it  takes  the class  of the  allocating
+ * object.
+ *
+ * @param[in]  obj             A string-ish object.
+ * @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 the class  of `obj`,  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`.
+ *
+ * @internal
+ *
+ * Why it doesn't take an instance of ::rb_cClass?
+ */
+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.
+ *
+ * @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.  In case  encoding conversion from
+ *             "default internal"  to "default external" is  fully defined over
+ *             the  given  contents, then  the  return  value  is a  string  of
+ *             "default external"  encoding, whose  contents are  the converted
+ *             ones.  Otherwise the string is a junk.
+ * @warning    It doesn't raise on a conversion failure and silently ends up in
+ *             a  corrupted  output.  You  can  know  the failure  by  querying
+ *             `valid_encoding?` of the result object.
+ */
+VALUE rb_external_str_new(const char *ptr, long len);
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Identical to rb_external_str_new(), except it  assumes the passed pointer is
+ * a pointer  to a C  string.  It can  also be seen  as a routine  identical to
+ * rb_str_new_cstr(),  except  it  generates  a string  of  "default  external"
+ * encoding.
+ *
+ * @param[in]  ptr             A C string.
+ * @exception  rb_eNoMemError  Failed to allocate memory.
+ * @return     An instance  of ::rb_cString.  In case  encoding conversion from
+ *             "default internal"  to "default external" is  fully defined over
+ *             the  given  contents, then  the  return  value  is a  string  of
+ *             "default external"  encoding, whose  contents are  the converted
+ *             ones.  Otherwise the string is a junk.
+ * @warning    It doesn't raise on a conversion failure and silently ends up in
+ *             a  corrupted  output.  You  can  know  the failure  by  querying
+ *             `valid_encoding?` of the result object.
+ * @pre        `ptr` must not be a null pointer.
+ */
+VALUE rb_external_str_new_cstr(const char *ptr);
+
+/**
+ * Identical  to  rb_str_new(),  except  it  generates  a  string  of  "locale"
+ * encoding.    It   can   also   be   seen   as   a   routine   identical   to
+ * rb_external_str_new(),  except it  generates a  string of  "locale" encoding
+ * instead of "default external" encoding.
+ *
+ * @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.  In case  encoding conversion from
+ *             "default internal" to  "locale" is fully defined  over the given
+ *             contents,  then  the  return  value  is  a  string  of  "locale"
+ *             encoding, whose contents are  the converted ones.  Otherwise the
+ *             string is  (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]