diff options
Diffstat (limited to 'include/ruby/backward')
| -rw-r--r-- | include/ruby/backward/2/assume.h | 27 | ||||
| -rw-r--r-- | include/ruby/backward/2/attributes.h | 46 | ||||
| -rw-r--r-- | include/ruby/backward/2/bool.h | 5 | ||||
| -rw-r--r-- | include/ruby/backward/2/extern.h | 46 | ||||
| -rw-r--r-- | include/ruby/backward/2/gcc_version_since.h | 5 | ||||
| -rw-r--r-- | include/ruby/backward/2/inttypes.h | 3 | ||||
| -rw-r--r-- | include/ruby/backward/2/limits.h | 5 | ||||
| -rw-r--r-- | include/ruby/backward/2/long_long.h | 12 | ||||
| -rw-r--r-- | include/ruby/backward/2/r_cast.h | 11 | ||||
| -rw-r--r-- | include/ruby/backward/2/rmodule.h | 11 | ||||
| -rw-r--r-- | include/ruby/backward/2/stdalign.h | 6 | ||||
| -rw-r--r-- | include/ruby/backward/2/stdarg.h | 26 | ||||
| -rw-r--r-- | include/ruby/backward/classext.h | 25 | ||||
| -rw-r--r-- | include/ruby/backward/cxxanyargs.hpp | 102 | ||||
| -rw-r--r-- | include/ruby/backward/rubyio.h | 18 | ||||
| -rw-r--r-- | include/ruby/backward/rubysig.h | 26 | ||||
| -rw-r--r-- | include/ruby/backward/st.h | 18 | ||||
| -rw-r--r-- | include/ruby/backward/util.h | 18 |
18 files changed, 150 insertions, 260 deletions
diff --git a/include/ruby/backward/2/assume.h b/include/ruby/backward/2/assume.h index 3fbb81439a..d148710127 100644 --- a/include/ruby/backward/2/assume.h +++ b/include/ruby/backward/2/assume.h @@ -17,24 +17,37 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief Defines #ASSUME / #RB_LIKELY / #UNREACHABLE */ #include "ruby/internal/config.h" #include "ruby/internal/assume.h" #include "ruby/internal/has/builtin.h" -#undef ASSUME /* Kill config.h definition */ -#undef UNREACHABLE /* Kill config.h definition */ -#define ASSUME RBIMPL_ASSUME -#define UNREACHABLE RBIMPL_UNREACHABLE() -#define UNREACHABLE_RETURN RBIMPL_UNREACHABLE_RETURN +#define ASSUME RBIMPL_ASSUME /**< @old{RBIMPL_ASSUME} */ +#define UNREACHABLE RBIMPL_UNREACHABLE() /**< @old{RBIMPL_UNREACHABLE} */ +#define UNREACHABLE_RETURN RBIMPL_UNREACHABLE_RETURN /**< @old{RBIMPL_UNREACHABLE_RETURN} */ /* likely */ #if RBIMPL_HAS_BUILTIN(__builtin_expect) +/** + * Asserts that the given Boolean expression likely holds. + * + * @param x An expression that likely holds. + * + * @note Consider this macro carefully. It has been here since when CPUs were + * like babies, but contemporary processors are beasts. They are + * smarter than mare mortals like us today. Their branch predictions + * highly expectedly outperform your use of this macro. + */ # define RB_LIKELY(x) (__builtin_expect(!!(x), 1)) -# define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0)) +/** + * Asserts that the given Boolean expression likely doesn't hold. + * + * @param x An expression that likely doesn't hold. + */ +# define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0)) #else # define RB_LIKELY(x) (x) # define RB_UNLIKELY(x) (x) diff --git a/include/ruby/backward/2/attributes.h b/include/ruby/backward/2/attributes.h index 8d00da0a9e..916d9e9d5b 100644 --- a/include/ruby/backward/2/attributes.h +++ b/include/ruby/backward/2/attributes.h @@ -1,7 +1,6 @@ #ifndef RUBY_BACKWARD2_ATTRIBUTES_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_BACKWARD2_ATTRIBUTES_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -17,7 +16,7 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief Various attribute-related macros. * * ### Q&A ### @@ -40,6 +39,7 @@ #include "ruby/internal/attr/noinline.h" #include "ruby/internal/attr/nonnull.h" #include "ruby/internal/attr/noreturn.h" +#include "ruby/internal/attr/packed_struct.h" #include "ruby/internal/attr/pure.h" #include "ruby/internal/attr/restrict.h" #include "ruby/internal/attr/returns_nonnull.h" @@ -60,7 +60,20 @@ #define DEPRECATED_BY(n,x) RBIMPL_ATTR_DEPRECATED(("by: " # n)) x #undef DEPRECATED_TYPE -#define DEPRECATED_TYPE(mseg, decl) decl RBIMPL_ATTR_DEPRECATED(mseg) +#if defined(__GNUC__) +# define DEPRECATED_TYPE(mesg, decl) \ + _Pragma("message \"DEPRECATED_TYPE is deprecated\""); \ + decl RBIMPL_ATTR_DEPRECATED(mseg) +#elif defined(_MSC_VER) +# pragma deprecated(DEPRECATED_TYPE) +# define DEPRECATED_TYPE(mesg, decl) \ + __pragma(message(__FILE__"("STRINGIZE(__LINE__)"): warning: " \ + "DEPRECATED_TYPE is deprecated")) \ + decl RBIMPL_ATTR_DEPRECATED(mseg) +#else +# define DEPRECATED_TYPE(mesg, decl) \ + <-<-"DEPRECATED_TYPE is deprecated"->-> +#endif #undef RUBY_CXX_DEPRECATED #define RUBY_CXX_DEPRECATED(mseg) RBIMPL_ATTR_DEPRECATED((mseg)) @@ -68,25 +81,19 @@ #undef NOINLINE #define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x -#ifndef MJIT_HEADER -# undef ALWAYS_INLINE -# define ALWAYS_INLINE(x) RBIMPL_ATTR_FORCEINLINE() x -#endif +#undef ALWAYS_INLINE +#define ALWAYS_INLINE(x) RBIMPL_ATTR_FORCEINLINE() x #undef ERRORFUNC #define ERRORFUNC(mesg, x) RBIMPL_ATTR_ERROR(mesg) x #if RBIMPL_HAS_ATTRIBUTE(error) # define HAVE_ATTRIBUTE_ERRORFUNC 1 -#else -# define HAVE_ATTRIBUTE_ERRORFUNC 0 #endif #undef WARNINGFUNC #define WARNINGFUNC(mesg, x) RBIMPL_ATTR_WARNING(mesg) x #if RBIMPL_HAS_ATTRIBUTE(warning) # define HAVE_ATTRIBUTE_WARNINGFUNC 1 -#else -# define HAVE_ATTRIBUTE_WARNINGFUNC 0 #endif /* @@ -139,17 +146,14 @@ #define NORETURN(x) RBIMPL_ATTR_NORETURN() x #define NORETURN_STYLE_NEW -#ifndef PACKED_STRUCT -# define PACKED_STRUCT(x) x -#endif +#undef PACKED_STRUCT +#define PACKED_STRUCT(x) \ + RBIMPL_ATTR_PACKED_STRUCT_BEGIN() x RBIMPL_ATTR_PACKED_STRUCT_END() -#ifndef PACKED_STRUCT_UNALIGNED -# if UNALIGNED_WORD_ACCESS -# define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x) -# else -# define PACKED_STRUCT_UNALIGNED(x) x -# endif -#endif +#undef PACKED_STRUCT_UNALIGNED +#define PACKED_STRUCT_UNALIGNED(x) \ + RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN() x \ + RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END() #undef RB_UNUSED_VAR #define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED() diff --git a/include/ruby/backward/2/bool.h b/include/ruby/backward/2/bool.h index 53164eb3b8..f2fa390c80 100644 --- a/include/ruby/backward/2/bool.h +++ b/include/ruby/backward/2/bool.h @@ -1,7 +1,6 @@ #ifndef RUBY_BACKWARD2_BOOL_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_BACKWARD2_BOOL_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -17,8 +16,8 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old #TRUE / #FALSE + * extension libraries. They could be written in C++98. + * @brief Defines old TRUE / FALSE */ #include "ruby/internal/stdbool.h" diff --git a/include/ruby/backward/2/extern.h b/include/ruby/backward/2/extern.h deleted file mode 100644 index e858426b19..0000000000 --- a/include/ruby/backward/2/extern.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef RUBY_BACKWARD2_EXTERN_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD2_EXTERN_H -/** - * @file - * @author Ruby developers <ruby-core@ruby-lang.org> - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are - * implementation details. Don't take them as canon. They could - * rapidly appear then vanish. The name (path) of this header file - * is also an implementation detail. Do not expect it to persist - * at the place it is now. Developers are free to move it anywhere - * anytime at will. - * @note To ruby-core: remember that this header can be possibly - * recursively included from extension libraries written in C++. - * Do not expect for instance `__VA_ARGS__` is always available. - * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old #EXTERN - */ -#include "ruby/internal/config.h" /* for STRINGIZE */ - -/** - * @brief Synonym of #RUBY_EXTERN. - * @deprecated #EXTERN is deprecated, use #RUBY_EXTERN instead. - */ -#if defined __GNUC__ -# define EXTERN \ - _Pragma("message \"EXTERN is deprecated, use RUBY_EXTERN instead\""); \ - RUBY_EXTERN - -#elif defined _MSC_VER -# pragma deprecated(EXTERN) -# define EXTERN \ - __pragma(message(__FILE__"("STRINGIZE(__LINE__)"): warning: " \ - "EXTERN is deprecated, use RUBY_EXTERN instead")) \ - RUBY_EXTERN - -#else -# define EXTERN <-<-"EXTERN is deprecated, use RUBY_EXTERN instead"->-> - -#endif - -#endif /* RUBY_BACKWARD2_EXTERN_H */ diff --git a/include/ruby/backward/2/gcc_version_since.h b/include/ruby/backward/2/gcc_version_since.h index 2a5b76c102..00cc40ca56 100644 --- a/include/ruby/backward/2/gcc_version_since.h +++ b/include/ruby/backward/2/gcc_version_since.h @@ -1,7 +1,6 @@ #ifndef RUBY_BACKWARD2_GCC_VERSION_SINCE_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_BACKWARD2_GCC_VERSION_SINCE_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -17,8 +16,8 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old #GCC_VERSION_SINCE + * extension libraries. They could be written in C++98. + * @brief Defines old GCC_VERSION_SINCE */ #include "ruby/internal/compiler_since.h" diff --git a/include/ruby/backward/2/inttypes.h b/include/ruby/backward/2/inttypes.h index c1e376a107..45460878bc 100644 --- a/include/ruby/backward/2/inttypes.h +++ b/include/ruby/backward/2/inttypes.h @@ -1,7 +1,6 @@ #ifndef RUBY_BACKWARD2_INTTYPES_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_BACKWARD2_INTTYPES_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -17,7 +16,7 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief C99 shim for `<inttypes.h>` */ #include "ruby/internal/config.h" /* PRI_LL_PREFIX etc. are here */ diff --git a/include/ruby/backward/2/limits.h b/include/ruby/backward/2/limits.h index e38009b01a..6f7021e5f4 100644 --- a/include/ruby/backward/2/limits.h +++ b/include/ruby/backward/2/limits.h @@ -1,7 +1,6 @@ #ifndef RUBY_BACKWARD2_LIMITS_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_BACKWARD2_LIMITS_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -17,11 +16,11 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief Historical shim for `<limits.h>`. * * The macros in this header file are obsolescent. Does anyone really need our - * own definition of #CHAR_BIT today? + * own definition of `CHAR_BIT` today? */ #include "ruby/internal/config.h" diff --git a/include/ruby/backward/2/long_long.h b/include/ruby/backward/2/long_long.h index 83eabb459c..8e6b2743fc 100644 --- a/include/ruby/backward/2/long_long.h +++ b/include/ruby/backward/2/long_long.h @@ -17,7 +17,7 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief Defines old #LONG_LONG * * No known compiler that can compile today's ruby lacks long long. @@ -29,7 +29,15 @@ #include "ruby/internal/has/warning.h" #include "ruby/internal/warning_push.h" -#if RBIMPL_HAS_WARNING("-Wc++11-long-long") +#if defined(__DOXYGEN__) +# /** @cond INTERNAL_MACRO */ +# define HAVE_LONG_LONG 1 +# define HAVE_TRUE_LONG_LONG 1 +# /** @endcond */ +# /** @deprecated Just use `long long` directly. */ +# define LONG_LONG long long. + +#elif RBIMPL_HAS_WARNING("-Wc++11-long-long") # define HAVE_TRUE_LONG_LONG 1 # define LONG_LONG \ RBIMPL_WARNING_PUSH() \ diff --git a/include/ruby/backward/2/r_cast.h b/include/ruby/backward/2/r_cast.h index d3f728eb5c..3d0f40fd1e 100644 --- a/include/ruby/backward/2/r_cast.h +++ b/include/ruby/backward/2/r_cast.h @@ -1,7 +1,6 @@ #ifndef RUBY_BACKWARD2_R_CAST_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_BACKWARD2_R_CAST_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -17,11 +16,17 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. - * @brief Defines old #R_CAST + * extension libraries. They could be written in C++98. + * @brief Defines old R_CAST * * Nobody is actively using this macro. */ #define R_CAST(st) (struct st*) #define RMOVED(obj) (R_CAST(RMoved)(obj)) + +#if defined(__GNUC__) +# warning R_CAST and RMOVED are deprecated +#elif defined(_MSC_VER) +# pragma message("warning: R_CAST and RMOVED are deprecated") +#endif #endif /* RUBY_BACKWARD2_R_CAST_H */ diff --git a/include/ruby/backward/2/rmodule.h b/include/ruby/backward/2/rmodule.h index 81ce91395f..76c0936462 100644 --- a/include/ruby/backward/2/rmodule.h +++ b/include/ruby/backward/2/rmodule.h @@ -1,7 +1,6 @@ #ifndef RUBY_BACKWARD2_RMODULE_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_BACKWARD2_RMODULE_H /** - * @file * @author Ruby developers <ruby-core@ruby-lang.org> * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or @@ -17,15 +16,21 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief Orphan macros. * * These macros seems broken since at least 2011. Nobody (except ruby itself * who is implementing the internals) could have used those macros for a while. * Kept public as-is here to keep some theoretical backwards compatibility. */ -#define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m) +#define RMODULE_IV_TBL(m) RCLASS_FIELDS(m) #define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m) #define RMODULE_M_TBL(m) RCLASS_M_TBL(m) #define RMODULE_SUPER(m) RCLASS_SUPER(m) + +#if defined(__GNUC__) +# warning RMODULE_* macros are deprecated +#elif defined(_MSC_VER) +# pragma message("warning: RMODULE_* macros are deprecated") +#endif #endif /* RUBY_BACKWARD2_RMODULE_H */ diff --git a/include/ruby/backward/2/stdalign.h b/include/ruby/backward/2/stdalign.h index 2d3c333bde..8b491bf564 100644 --- a/include/ruby/backward/2/stdalign.h +++ b/include/ruby/backward/2/stdalign.h @@ -17,14 +17,14 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief Defines #RUBY_ALIGNAS / #RUBY_ALIGNOF */ #include "ruby/internal/stdalign.h" #undef RUBY_ALIGNAS #undef RUBY_ALIGNOF -#define RUBY_ALIGNAS RBIMPL_ALIGNAS -#define RUBY_ALIGNOF RBIMPL_ALIGNOF +#define RUBY_ALIGNAS RBIMPL_ALIGNAS /**< @copydoc RBIMPL_ALIGNAS */ +#define RUBY_ALIGNOF RBIMPL_ALIGNOF /**< @copydoc RBIMPL_ALIGNOF */ #endif /* RUBY_BACKWARD2_STDALIGN_H */ diff --git a/include/ruby/backward/2/stdarg.h b/include/ruby/backward/2/stdarg.h index c2a9ca1e2f..08659fee47 100644 --- a/include/ruby/backward/2/stdarg.h +++ b/include/ruby/backward/2/stdarg.h @@ -17,14 +17,18 @@ * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of - * extension libraries. They could be written in C++98. + * extension libraries. They could be written in C++98. * @brief Defines old #_ * - * Nobody should ever use these macros any longer. No konwn compilers lack + * Nobody should ever use these macros any longer. No known compilers lack * prototypes today. It's 21st century. Just forget them. */ #undef _ +/** + * @deprecated Nobody practically needs this macro any longer. + * @brief This was a transition path from K&R to ANSI. + */ #ifdef HAVE_PROTOTYPES # define _(args) args #else @@ -32,12 +36,30 @@ #endif #undef __ +/** + * @deprecated Nobody practically needs this macro any longer. + * @brief This was a transition path from K&R to ANSI. + */ #ifdef HAVE_STDARG_PROTOTYPES # define __(args) args #else # define __(args) () #endif +/** + * Functions declared using this macro take arbitrary arguments, including + * void. + * + * ```CXX + * void func(ANYARGS); + * ``` + * + * This was a necessary evil when there was no such thing like function + * overloading. But it is the 21st century today. People generally need not + * use this. Just use a granular typed function. + * + * @see ruby::backward::cxxanyargs + */ #ifdef __cplusplus #define ANYARGS ... #else diff --git a/include/ruby/backward/classext.h b/include/ruby/backward/classext.h deleted file mode 100644 index 61d05611bc..0000000000 --- a/include/ruby/backward/classext.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef RUBY_BACKWARD_CLASSEXT_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD_CLASSEXT_H -/** - * @file - * @author Ruby developers <ruby-core@ruby-lang.org> - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#if defined __GNUC__ -#warning use of RClass internals is deprecated -#elif defined _MSC_VER -#pragma message("warning: use of RClass internals is deprecated") -#endif - -typedef struct rb_deprecated_classext_struct { - VALUE super; -} rb_deprecated_classext_t; - -#undef RCLASS_SUPER(c) -#define RCLASS_EXT(c) ((rb_deprecated_classext_t *)RCLASS(c)->ptr) -#define RCLASS_SUPER(c) (RCLASS(c)->super) - -#endif /* RUBY_BACKWARD_CLASSEXT_H */ diff --git a/include/ruby/backward/cxxanyargs.hpp b/include/ruby/backward/cxxanyargs.hpp index bc5745d850..0ca2745c20 100644 --- a/include/ruby/backward/cxxanyargs.hpp +++ b/include/ruby/backward/cxxanyargs.hpp @@ -1,12 +1,12 @@ #ifndef RUBY_BACKWARD_CXXANYARGS_HPP //-*-C++-*-vi:ft=cpp #define RUBY_BACKWARD_CXXANYARGS_HPP /// @file -/// @author \@shyouhei +/// @author @shyouhei /// @copyright This file is a part of the programming language Ruby. /// Permission is hereby granted, to either redistribute and/or /// modify this file, provided that the conditions mentioned in the /// file COPYING are met. Consult the file for details. -/// @note DO NOT MODERNIZE THIS FILE! As the file name implies it is +/// @note DO NOT MODERNISE THIS FILE! As the file name implies it is /// meant to be a backwards compatibility shim. Please stick to /// C++ 98 and never use newer features, like `constexpr`. /// @brief Provides old prototypes for C++ programs. @@ -39,7 +39,7 @@ namespace ruby { /// Backwards compatibility layer. namespace backward { -/// Provides ANYARGS deprecation warnings. In C, ANYARGS means there is no +/// Provides ANYARGS deprecation warnings. In C, ANYARGS means there is no /// function prototype. Literally anything, even including nothing, can be a /// valid ANYARGS. So passing a correctly prototyped function pointer to an /// ANYARGS-ed function parameter is valid, at the same time passing an @@ -68,7 +68,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @param[in] e Setter function. /// @note Both functions can be nullptr. /// @see rb_define_hooked_variable() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline void rb_define_virtual_variable(const char *q, type *w, void_type *e) { @@ -131,7 +131,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @param[in] r Setter function. /// @note Both functions can be nullptr. /// @see rb_define_virtual_variable() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline void rb_define_hooked_variable(const char *q, VALUE *w, type *e, void_type *r) { @@ -191,31 +191,6 @@ rb_define_hooked_variable(const char *q, VALUE *w, std::nullptr_t e, void_type * /// @{ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Old way to implement iterators. -/// @param[in] q A function that can yield. -/// @param[in] w Passed to `q`. -/// @param[in] e What is to be yielded. -/// @param[in] r Passed to `e`. -/// @return The return value of `q`. -/// @note `e` can be nullptr. -/// @deprecated This function is obsolated since long before 2.x era. Do not -/// use it any longer. rb_block_call() is provided instead. -inline VALUE -rb_iterate(onearg_type *q, VALUE w, type *e, VALUE r) -{ - rb_block_call_func_t t = reinterpret_cast<rb_block_call_func_t>(e); - return ::rb_iterate(q, w, t, r); -} - -#ifdef HAVE_NULLPTR -inline VALUE -rb_iterate(onearg_type *q, VALUE w, std::nullptr_t e, VALUE r) -{ - return ::rb_iterate(q, w, e, r); -} -#endif - -RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @brief Call a method with a block. /// @param[in] q The self. /// @param[in] w The method. @@ -225,7 +200,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @param[in] y Passed to `t` /// @return Return value of `q#w(*r,&t)` /// @note 't' can be nullptr. -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline VALUE rb_block_call(VALUE q, ID w, int e, const VALUE *r, type *t, VALUE y) { @@ -253,7 +228,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @see rb_ensure() /// @see rb_rescue2() /// @see rb_protect() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline VALUE rb_rescue(type *q, VALUE w, type *e, VALUE r) { @@ -277,7 +252,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @see rb_ensure() /// @see rb_rescue() /// @see rb_protect() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline VALUE rb_rescue2(type *q, VALUE w, type *e, VALUE r, ...) { @@ -303,7 +278,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @see rb_rescue() /// @see rb_rescue2() /// @see rb_protect() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline VALUE rb_ensure(type *q, VALUE w, type *e, VALUE r) { @@ -324,7 +299,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @see rb_protect() /// @see rb_rb_catch_obj() /// @see rb_rescue() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline VALUE rb_catch(const char *q, type *w, VALUE e) { @@ -351,7 +326,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @see rb_protect() /// @see rb_rb_catch_obj() /// @see rb_rescue() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline VALUE rb_catch_obj(VALUE q, type *w, VALUE e) { @@ -364,14 +339,14 @@ rb_catch_obj(VALUE q, type *w, VALUE e) /// @{ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") -/// @brief Creates a @ref rb_cFiber instance. +/// @brief Creates a rb_cFiber instance. /// @param[in] q The fiber body. /// @param[in] w Passed to `q`. /// @return What was allocated. /// @note It makes no sense to pass nullptr to`q`. /// @see rb_proc_new() -/// @see rb_thread_creatr() -/// @deprecated Use glanular typed overload instead. +/// @see rb_thread_create() +/// @deprecated Use granular typed overload instead. inline VALUE rb_fiber_new(type *q, VALUE w) { @@ -386,8 +361,8 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @return What was allocated. /// @note It makes no sense to pass nullptr to`q`. /// @see rb_fiber_new() -/// @see rb_thread_creatr() -/// @deprecated Use glanular typed overload instead. +/// @see rb_thread_create() +/// @deprecated Use granular typed overload instead. inline VALUE rb_proc_new(type *q, VALUE w) { @@ -403,7 +378,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @note It makes no sense to pass nullptr to`q`. /// @see rb_proc_new() /// @see rb_fiber_new() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline VALUE rb_thread_create(type *q, void *w) { @@ -425,7 +400,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @note It makes no sense to pass nullptr to`w`. /// @see st_foreach_check() /// @see rb_hash_foreach() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline int st_foreach(st_table *q, int_type *w, st_data_t e) { @@ -443,7 +418,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @retval 1 Element removed during traversing. /// @note It makes no sense to pass nullptr to`w`. /// @see st_foreach() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline int st_foreach_check(st_table *q, int_type *w, st_data_t e, st_data_t) { @@ -459,7 +434,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @param[in] e Passed to `w`. /// @note It makes no sense to pass nullptr to`w`. /// @see st_foreach_check() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline void st_foreach_safe(st_table *q, int_type *w, st_data_t e) { @@ -475,7 +450,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @param[in] e Passed to `w`. /// @note It makes no sense to pass nullptr to`w`. /// @see st_foreach() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline void rb_hash_foreach(VALUE q, int_type *w, VALUE e) { @@ -491,7 +466,7 @@ RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") /// @param[in] e Passed to `w`. /// @note It makes no sense to pass nullptr to`w`. /// @see st_foreach() -/// @deprecated Use glanular typed overload instead. +/// @deprecated Use granular typed overload instead. inline void rb_ivar_foreach(VALUE q, int_type *w, VALUE e) { @@ -535,11 +510,9 @@ struct driver { * this writing the version is 2.8. Let's warn this later, some time * during 3.x. Hopefully codes in old (ANYARGS-ed) format should be * less than now. */ -#if (RUBY_API_VERSION_MAJOR * 100 + RUBY_API_VERSION_MINOR) >= 301 RUBY_CXX_DEPRECATED("use of ANYARGS is deprecated") -#endif /// @copydoc define(VALUE klass, T mid, U func) - /// @deprecated Pass corrctly typed function instead. + /// @deprecated Pass correctly typed function instead. static inline void define(VALUE klass, T mid, type func) { @@ -592,27 +565,42 @@ struct driver { /* We could perhaps merge this struct into the one above using variadic * template parameters if we could assume C++11, but sadly we cannot. */ +/// @copydoc ruby::backward::cxxanyargs::define_method::driver template<typename T, void (*F)(T mid, type func, int arity)> struct driver0 { + + /// @brief Defines a method + /// @tparam N Arity of the function. + /// @tparam U The function in question template<int N, typename U> struct engine { RUBY_CXX_DEPRECATED("use of ANYARGS is deprecated") + /// @copydoc define(T mid, U func) + /// @deprecated Pass correctly typed function instead. static inline void define(T mid, type func) { F(mid, func, N); } + + /// @brief Defines Kernel#mid as func, whose arity is N. + /// @param[in] mid Name of the method to define. + /// @param[in] func Function that implements klass#mid. static inline void define(T mid, U func) { F(mid, reinterpret_cast<type *>(func), N); } + + /// @copydoc define(T mid, U func) + /// @deprecated Pass correctly typed function instead. static inline void define(T mid, notimpl_type func) { F(mid, reinterpret_cast<type *>(func), N); } }; + /// @cond INTERNAL_MACRO template<int N, bool = false> struct specific : public engine<N, type *> {}; template<bool b> struct specific<15, b> : public engine<15, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)> {}; @@ -650,32 +638,32 @@ struct rb_define_global_function : public driver0<const char *, ::rb_define_glo /// @brief Defines klass\#mid. /// @param klass Where the method lives. /// @copydetails #rb_define_global_function(mid, func, arity) -#define rb_define_method(klass, mid, func, arity) ruby::backward::cxxanyargs::define_method::rb_define_method::specific<arity>::define(klass, mid, func) +#define rb_define_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_method::specific<arity>::define(klass, mid, func) /// @copydoc #rb_define_method(klass, mid, func, arity) -#define rb_define_method_id(klass, mid, func, arity) ruby::backward::cxxanyargs::define_method::rb_define_method_id::specific<arity>::define(klass, mid, func) +#define rb_define_method_id(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_method_id::specific<arity>::define(klass, mid, func) /// @brief Defines klass\#mid and makes it private. /// @copydetails #rb_define_method(klass, mid, func, arity) -#define rb_define_private_method(klass, mid, func, arity) ruby::backward::cxxanyargs::define_method::rb_define_private_method::specific<arity>::define(klass, mid, func) +#define rb_define_private_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_private_method::specific<arity>::define(klass, mid, func) /// @brief Defines klass\#mid and makes it protected. /// @copydetails #rb_define_method -#define rb_define_protected_method(klass, mid, func, arity) ruby::backward::cxxanyargs::define_method::rb_define_protected_method::specific<arity>::define(klass, mid, func) +#define rb_define_protected_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_protected_method::specific<arity>::define(klass, mid, func) /// @brief Defines klass.mid.(klass, mid, func, arity) /// @copydetails #rb_define_method -#define rb_define_singleton_method(klass, mid, func, arity) ruby::backward::cxxanyargs::define_method::rb_define_singleton_method::specific<arity>::define(klass, mid, func) +#define rb_define_singleton_method(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_singleton_method::specific<arity>::define(klass, mid, func) /// @brief Defines klass\#mid and makes it a module function. /// @copydetails #rb_define_method(klass, mid, func, arity) -#define rb_define_module_function(klass, mid, func, arity) ruby::backward::cxxanyargs::define_method::rb_define_module_function::specific<arity>::define(klass, mid, func) +#define rb_define_module_function(klass, mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_module_function::specific<arity>::define(klass, mid, func) /// @brief Defines ::rb_mKernel \#mid. /// @param mid Name of the defining method. /// @param func Implementation of \#mid. /// @param arity Arity of \#mid. -#define rb_define_global_function(mid, func, arity) ruby::backward::cxxanyargs::define_method::rb_define_global_function::specific<arity>::define(mid, func) +#define rb_define_global_function(mid, func, arity) ::ruby::backward::cxxanyargs::define_method::rb_define_global_function::specific<arity>::define(mid, func) }}}}} diff --git a/include/ruby/backward/rubyio.h b/include/ruby/backward/rubyio.h deleted file mode 100644 index 433f425988..0000000000 --- a/include/ruby/backward/rubyio.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef RUBY_BACKWARD_RUBYIO_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD_RUBYIO_H -/** - * @file - * @author Ruby developers <ruby-core@ruby-lang.org> - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#if defined __GNUC__ -#warning use "ruby/io.h" instead of "rubyio.h" -#elif defined _MSC_VER -#pragma message("warning: use \"ruby/io.h\" instead of \"rubyio.h\"") -#endif -#include "ruby/io.h" - -#endif /* RUBY_BACKWARD_RUBYIO_H */ diff --git a/include/ruby/backward/rubysig.h b/include/ruby/backward/rubysig.h deleted file mode 100644 index b1645cdeb0..0000000000 --- a/include/ruby/backward/rubysig.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef RUBYSIG_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBYSIG_H -/** - * @file - * @author $Author$ - * @date Wed Aug 16 01:15:38 JST 1995 - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#if defined __GNUC__ -#warning rubysig.h is obsolete -#elif defined _MSC_VER -#pragma message("warning: rubysig.h is obsolete") -#endif - -#include "ruby/ruby.h" - -#define RUBY_CRITICAL(statements) do {statements;} while (0) -#define DEFER_INTS (0) -#define ENABLE_INTS (1) -#define ALLOW_INTS do {CHECK_INTS;} while (0) -#define CHECK_INTS rb_thread_check_ints() - -#endif /* RUBYSIG_H */ diff --git a/include/ruby/backward/st.h b/include/ruby/backward/st.h deleted file mode 100644 index ad627e5e99..0000000000 --- a/include/ruby/backward/st.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef RUBY_BACKWARD_ST_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD_ST_H -/** - * @file - * @author Ruby developers <ruby-core@ruby-lang.org> - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#if defined __GNUC__ -#warning use "ruby/st.h" instead of bare "st.h" -#elif defined _MSC_VER -#pragma message("warning: use \"ruby/st.h\" instead of bare \"st.h\"") -#endif -#include "ruby/st.h" - -#endif /* RUBY_BACKWARD_ST_H */ diff --git a/include/ruby/backward/util.h b/include/ruby/backward/util.h deleted file mode 100644 index 1974fedbb5..0000000000 --- a/include/ruby/backward/util.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef RUBY_BACKWARD_UTIL_H /*-*-C++-*-vi:se ft=cpp:*/ -#define RUBY_BACKWARD_UTIL_H -/** - * @file - * @author Ruby developers <ruby-core@ruby-lang.org> - * @copyright This file is a part of the programming language Ruby. - * Permission is hereby granted, to either redistribute and/or - * modify this file, provided that the conditions mentioned in the - * file COPYING are met. Consult the file for details. - */ -#if defined __GNUC__ -#warning use "ruby/util.h" instead of bare "util.h" -#elif defined _MSC_VER -#pragma message("warning: use \"ruby/util.h\" instead of bare \"util.h\"") -#endif -#include "ruby/util.h" - -#endif /* RUBY_BACKWARD_UTIL_H */ |
