mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
parent
5ac4bf2cd8
commit
9e6e39c351
Notes:
git
2020-04-08 13:28:42 +09:00
Merged-By: shyouhei <shyouhei@ruby-lang.org>
383 changed files with 60184 additions and 5439 deletions
39
include/ruby/backward/2/assume.h
Normal file
39
include/ruby/backward/2/assume.h
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 #ASSUME / #RB_LIKELY / #UNREACHABLE
|
||||
*/
|
||||
#include "ruby/3/config.h"
|
||||
#include "ruby/3/assume.h"
|
||||
#include "ruby/3/has/builtin.h"
|
||||
|
||||
#undef ASSUME /* Kill config.h definition */
|
||||
#undef UNREACHABLE /* Kill config.h definition */
|
||||
#define ASSUME RUBY3_ASSUME
|
||||
#define UNREACHABLE RUBY3_UNREACHABLE()
|
||||
#define UNREACHABLE_RETURN RUBY3_UNREACHABLE_RETURN
|
||||
|
||||
/* likely */
|
||||
#if RUBY3_HAS_BUILTIN(__builtin_expect)
|
||||
# define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
|
||||
# define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
|
||||
|
||||
#else
|
||||
# define RB_LIKELY(x) (x)
|
||||
# define RB_UNLIKELY(x) (x)
|
||||
#endif
|
||||
157
include/ruby/backward/2/attributes.h
Normal file
157
include/ruby/backward/2/attributes.h
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 Various attribute-related macros.
|
||||
*
|
||||
* ### Q&A ###
|
||||
*
|
||||
* - Q: Why are the macros defined in this header file so inconsistent in
|
||||
* style?
|
||||
*
|
||||
* - A: Don't know. Don't blame me. Backward compatibility is the key here.
|
||||
* I'm just preserving what they have been.
|
||||
*/
|
||||
#ifndef RUBY_BACKWARD2_ATTRIBUTES_H
|
||||
#define RUBY_BACKWARD2_ATTRIBUTES_H
|
||||
#include "ruby/3/config.h"
|
||||
#include "ruby/3/attr/alloc_size.h"
|
||||
#include "ruby/3/attr/cold.h"
|
||||
#include "ruby/3/attr/const.h"
|
||||
#include "ruby/3/attr/deprecated.h"
|
||||
#include "ruby/3/attr/error.h"
|
||||
#include "ruby/3/attr/forceinline.h"
|
||||
#include "ruby/3/attr/format.h"
|
||||
#include "ruby/3/attr/maybe_unused.h"
|
||||
#include "ruby/3/attr/noinline.h"
|
||||
#include "ruby/3/attr/nonnull.h"
|
||||
#include "ruby/3/attr/noreturn.h"
|
||||
#include "ruby/3/attr/pure.h"
|
||||
#include "ruby/3/attr/restrict.h"
|
||||
#include "ruby/3/attr/returns_nonnull.h"
|
||||
#include "ruby/3/attr/warning.h"
|
||||
#include "ruby/3/has/attribute.h"
|
||||
|
||||
/* function attributes */
|
||||
#undef CONSTFUNC
|
||||
#define CONSTFUNC(x) RUBY3_ATTR_CONST() x
|
||||
|
||||
#undef PUREFUNC
|
||||
#define PUREFUNC(x) RUBY3_ATTR_PURE() x
|
||||
|
||||
#undef DEPRECATED
|
||||
#define DEPRECATED(x) RUBY3_ATTR_DEPRECATED(("")) x
|
||||
|
||||
#undef DEPRECATED_BY
|
||||
#define DEPRECATED_BY(n,x) RUBY3_ATTR_DEPRECATED(("by: " # n)) x
|
||||
|
||||
#undef DEPRECATED_TYPE
|
||||
#define DEPRECATED_TYPE(mseg, decl) decl RUBY3_ATTR_DEPRECATED(mseg)
|
||||
|
||||
#undef RUBY_CXX_DEPRECATED
|
||||
#define RUBY_CXX_DEPRECATED(mseg) RUBY3_ATTR_DEPRECATED((mseg))
|
||||
|
||||
#undef NOINLINE
|
||||
#define NOINLINE(x) RUBY3_ATTR_NOINLINE() x
|
||||
|
||||
#ifndef MJIT_HEADER
|
||||
# undef ALWAYS_INLINE
|
||||
# define ALWAYS_INLINE(x) RUBY3_ATTR_FORCEINLINE() x
|
||||
#endif
|
||||
|
||||
#undef ERRORFUNC
|
||||
#define ERRORFUNC(mesg, x) RUBY3_ATTR_ERROR(mesg) x
|
||||
#if RUBY3_HAS_ATTRIBUTE(error)
|
||||
# define HAVE_ATTRIBUTE_ERRORFUNC 1
|
||||
#else
|
||||
# define HAVE_ATTRIBUTE_ERRORFUNC 0
|
||||
#endif
|
||||
|
||||
#undef WARNINGFUNC
|
||||
#define WARNINGFUNC(mesg, x) RUBY3_ATTR_WARNING(mesg) x
|
||||
#if RUBY3_HAS_ATTRIBUTE(warning)
|
||||
# define HAVE_ATTRIBUTE_WARNINGFUNC 1
|
||||
#else
|
||||
# define HAVE_ATTRIBUTE_WARNINGFUNC 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
cold attribute for code layout improvements
|
||||
RUBY_FUNC_ATTRIBUTE not used because MSVC does not like nested func macros
|
||||
*/
|
||||
#undef COLDFUNC
|
||||
#define COLDFUNC RUBY3_ATTR_COLD()
|
||||
|
||||
#define PRINTF_ARGS(decl, string_index, first_to_check) \
|
||||
RUBY3_ATTR_FORMAT(RUBY3_PRINTF_FORMAT, (string_index), (first_to_check)) \
|
||||
decl
|
||||
|
||||
#undef RUBY_ATTR_ALLOC_SIZE
|
||||
#define RUBY_ATTR_ALLOC_SIZE RUBY3_ATTR_ALLOC_SIZE
|
||||
|
||||
#undef RUBY_ATTR_MALLOC
|
||||
#define RUBY_ATTR_MALLOC RUBY3_ATTR_RESTRICT()
|
||||
|
||||
#undef RUBY_ATTR_RETURNS_NONNULL
|
||||
#define RUBY_ATTR_RETURNS_NONNULL RUBY3_ATTR_RETURNS_NONNULL()
|
||||
|
||||
#ifndef FUNC_MINIMIZED
|
||||
#define FUNC_MINIMIZED(x) x
|
||||
#endif
|
||||
|
||||
#ifndef FUNC_UNOPTIMIZED
|
||||
#define FUNC_UNOPTIMIZED(x) x
|
||||
#endif
|
||||
|
||||
#ifndef RUBY_ALIAS_FUNCTION_TYPE
|
||||
#define RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args) \
|
||||
FUNC_MINIMIZED(type prot) {return (type)name args;}
|
||||
#endif
|
||||
|
||||
#ifndef RUBY_ALIAS_FUNCTION_VOID
|
||||
#define RUBY_ALIAS_FUNCTION_VOID(prot, name, args) \
|
||||
FUNC_MINIMIZED(void prot) {name args;}
|
||||
#endif
|
||||
|
||||
#ifndef RUBY_ALIAS_FUNCTION
|
||||
#define RUBY_ALIAS_FUNCTION(prot, name, args) \
|
||||
RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
|
||||
#endif
|
||||
|
||||
#undef RUBY_FUNC_NONNULL
|
||||
#define RUBY_FUNC_NONNULL(n, x) RUBY3_ATTR_NONNULL(n) x
|
||||
|
||||
#undef NORETURN
|
||||
#define NORETURN(x) RUBY3_ATTR_NORETURN() x
|
||||
#define NORETURN_STYLE_NEW
|
||||
|
||||
#ifndef PACKED_STRUCT
|
||||
# define PACKED_STRUCT(x) x
|
||||
#endif
|
||||
|
||||
#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 RB_UNUSED_VAR
|
||||
#define RB_UNUSED_VAR(x) x RUBY3_ATTR_MAYBE_UNUSED()
|
||||
|
||||
#endif /* RUBY_BACKWARD2_ATTRIBUTES_H */
|
||||
33
include/ruby/backward/2/bool.h
Normal file
33
include/ruby/backward/2/bool.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 #TRUE / #FALSE
|
||||
*/
|
||||
#include "ruby/3/stdbool.h"
|
||||
|
||||
#ifndef FALSE
|
||||
# define FALSE false
|
||||
#elif FALSE
|
||||
# error FALSE must be false
|
||||
#endif
|
||||
|
||||
#ifndef TRUE
|
||||
# define TRUE true
|
||||
#elif ! TRUE
|
||||
# error TRUE must be true
|
||||
#endif
|
||||
45
include/ruby/backward/2/extern.h
Normal file
45
include/ruby/backward/2/extern.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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/3/config.h" /* for STRINGIZE */
|
||||
|
||||
/**
|
||||
* @brief Synonym of #RUBY_EXTERN.
|
||||
* @deprecated #EXTERN is deprecated, use #RUBY_EXTERN instead.
|
||||
*/
|
||||
#ifdef EXTERN
|
||||
# /* Stop bothering then. */
|
||||
|
||||
#elif 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
|
||||
34
include/ruby/backward/2/gcc_version_since.h
Normal file
34
include/ruby/backward/2/gcc_version_since.h
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 #GCC_VERSION_SINCE
|
||||
*/
|
||||
#include "ruby/3/compiler_since.h"
|
||||
|
||||
#ifndef GCC_VERSION_SINCE
|
||||
#define GCC_VERSION_SINCE(x, y, z) RUBY3_COMPILER_SINCE(GCC, (x), (y), (z))
|
||||
#endif
|
||||
|
||||
#ifndef GCC_VERSION_BEFORE
|
||||
#define GCC_VERSION_BEFORE(x, y, z) \
|
||||
(RUBY3_COMPILER_BEFORE(GCC, (x), (y), (z)) || \
|
||||
(RUBY3_COMPILER_IS(GCC) && \
|
||||
((RUBY3_COMPILER_VERSION_MAJOR == (x)) && \
|
||||
((RUBY3_COMPILER_VERSION_MINOR == (y)) && \
|
||||
(RUBY3_COMPILER_VERSION_PATCH == (z))))))
|
||||
#endif
|
||||
128
include/ruby/backward/2/inttypes.h
Normal file
128
include/ruby/backward/2/inttypes.h
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 C99 shim for `<inttypes.h>`
|
||||
*/
|
||||
#include "ruby/3/config.h" /* PRI_LL_PREFIX etc. are here */
|
||||
|
||||
#ifdef HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
#endif
|
||||
|
||||
#include "ruby/3/value.h" /* PRI_VALUE_PREFIX is here. */
|
||||
|
||||
#ifndef PRI_INT_PREFIX
|
||||
# define PRI_INT_PREFIX ""
|
||||
#endif
|
||||
|
||||
#ifndef PRI_LONG_PREFIX
|
||||
# define PRI_LONG_PREFIX "l"
|
||||
#endif
|
||||
|
||||
#ifndef PRI_SHORT_PREFIX
|
||||
# define PRI_SHORT_PREFIX "h"
|
||||
#endif
|
||||
|
||||
#ifdef PRI_64_PREFIX
|
||||
# /* Take that. */
|
||||
#elif SIZEOF_LONG == 8
|
||||
# define PRI_64_PREFIX PRI_LONG_PREFIX
|
||||
#elif SIZEOF_LONG_LONG == 8
|
||||
# define PRI_64_PREFIX PRI_LL_PREFIX
|
||||
#endif
|
||||
|
||||
#ifndef PRIdPTR
|
||||
# define PRIdPTR PRI_PTR_PREFIX"d"
|
||||
# define PRIiPTR PRI_PTR_PREFIX"i"
|
||||
# define PRIoPTR PRI_PTR_PREFIX"o"
|
||||
# define PRIuPTR PRI_PTR_PREFIX"u"
|
||||
# define PRIxPTR PRI_PTR_PREFIX"x"
|
||||
# define PRIXPTR PRI_PTR_PREFIX"X"
|
||||
#endif
|
||||
|
||||
#ifndef RUBY_PRI_VALUE_MARK
|
||||
# define RUBY_PRI_VALUE_MARK "\v"
|
||||
#endif
|
||||
|
||||
#if defined PRIdPTR && !defined PRI_VALUE_PREFIX
|
||||
# define PRIdVALUE PRIdPTR
|
||||
# define PRIoVALUE PRIoPTR
|
||||
# define PRIuVALUE PRIuPTR
|
||||
# define PRIxVALUE PRIxPTR
|
||||
# define PRIXVALUE PRIXPTR
|
||||
# define PRIsVALUE PRIiPTR"" RUBY_PRI_VALUE_MARK
|
||||
#else
|
||||
# define PRIdVALUE PRI_VALUE_PREFIX"d"
|
||||
# define PRIoVALUE PRI_VALUE_PREFIX"o"
|
||||
# define PRIuVALUE PRI_VALUE_PREFIX"u"
|
||||
# define PRIxVALUE PRI_VALUE_PREFIX"x"
|
||||
# define PRIXVALUE PRI_VALUE_PREFIX"X"
|
||||
# define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
|
||||
#endif
|
||||
|
||||
#ifndef PRI_VALUE_PREFIX
|
||||
# define PRI_VALUE_PREFIX ""
|
||||
#endif
|
||||
|
||||
#ifdef PRI_TIMET_PREFIX
|
||||
# /* Take that. */
|
||||
#elif SIZEOF_TIME_T == SIZEOF_INT
|
||||
# define PRI_TIMET_PREFIX
|
||||
#elif SIZEOF_TIME_T == SIZEOF_LONG
|
||||
# define PRI_TIMET_PREFIX "l"
|
||||
#elif SIZEOF_TIME_T == SIZEOF_LONG_LONG
|
||||
# define PRI_TIMET_PREFIX PRI_LL_PREFIX
|
||||
#endif
|
||||
|
||||
#ifdef PRI_PTRDIFF_PREFIX
|
||||
# /* Take that. */
|
||||
#elif SIZEOF_PTRDIFF_T == SIZEOF_INT
|
||||
# define PRI_PTRDIFF_PREFIX ""
|
||||
#elif SIZEOF_PTRDIFF_T == SIZEOF_LONG
|
||||
# define PRI_PTRDIFF_PREFIX "l"
|
||||
#elif SIZEOF_PTRDIFF_T == SIZEOF_LONG_LONG
|
||||
# define PRI_PTRDIFF_PREFIX PRI_LL_PREFIX
|
||||
#endif
|
||||
|
||||
#ifndef PRIdPTRDIFF
|
||||
# define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
|
||||
# define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
|
||||
# define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
|
||||
# define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
|
||||
# define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
|
||||
# define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
|
||||
#endif
|
||||
|
||||
#ifdef PRI_SIZE_PREFIX
|
||||
# /* Take that. */
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_INT
|
||||
# define PRI_SIZE_PREFIX ""
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_LONG
|
||||
# define PRI_SIZE_PREFIX "l"
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG
|
||||
# define PRI_SIZE_PREFIX PRI_LL_PREFIX
|
||||
#endif
|
||||
|
||||
#ifndef PRIdSIZE
|
||||
# define PRIdSIZE PRI_SIZE_PREFIX"d"
|
||||
# define PRIiSIZE PRI_SIZE_PREFIX"i"
|
||||
# define PRIoSIZE PRI_SIZE_PREFIX"o"
|
||||
# define PRIuSIZE PRI_SIZE_PREFIX"u"
|
||||
# define PRIxSIZE PRI_SIZE_PREFIX"x"
|
||||
# define PRIXSIZE PRI_SIZE_PREFIX"X"
|
||||
#endif
|
||||
96
include/ruby/backward/2/limits.h
Normal file
96
include/ruby/backward/2/limits.h
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 Historical shim for `<limits.h>`.
|
||||
*
|
||||
* The macros in this header file are obsolescent. Does anyone really need our
|
||||
* own definition of #CHAR_BIT today?
|
||||
*/
|
||||
#include "ruby/3/config.h"
|
||||
|
||||
#ifdef HAVE_LIMITS_H
|
||||
# include <limits.h>
|
||||
#endif
|
||||
|
||||
#include "ruby/backward/2/long_long.h"
|
||||
|
||||
#ifndef LONG_MAX
|
||||
# /* assuming 32bit(2's complement) long */
|
||||
# define LONG_MAX 2147483647L
|
||||
#endif
|
||||
|
||||
#ifndef LONG_MIN
|
||||
# define LONG_MIN (-LONG_MAX-1)
|
||||
#endif
|
||||
|
||||
#ifndef CHAR_BIT
|
||||
# define CHAR_BIT 8
|
||||
#endif
|
||||
|
||||
#ifdef LLONG_MAX
|
||||
# /* Take that. */
|
||||
#elif defined(LONG_LONG_MAX)
|
||||
# define LLONG_MAX LONG_LONG_MAX
|
||||
#elif defined(_I64_MAX)
|
||||
# define LLONG_MAX _I64_MAX
|
||||
#else
|
||||
# /* assuming 64bit(2's complement) long long */
|
||||
# define LLONG_MAX 9223372036854775807LL
|
||||
#endif
|
||||
|
||||
#ifdef LLONG_MIN
|
||||
# /* Take that. */
|
||||
#elif defined(LONG_LONG_MIN)
|
||||
# define LLONG_MIN LONG_LONG_MIN
|
||||
#elif defined(_I64_MAX)
|
||||
# define LLONG_MIN _I64_MIN
|
||||
#else
|
||||
# define LLONG_MIN (-LLONG_MAX-1)
|
||||
#endif
|
||||
|
||||
#ifdef SIZE_MAX
|
||||
# /* Take that. */
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG
|
||||
# define SIZE_MAX ULLONG_MAX
|
||||
# define SIZE_MIN ULLONG_MIN
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_LONG
|
||||
# define SIZE_MAX ULONG_MAX
|
||||
# define SIZE_MIN ULONG_MIN
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_INT
|
||||
# define SIZE_MAX UINT_MAX
|
||||
# define SIZE_MIN UINT_MIN
|
||||
#else
|
||||
# define SIZE_MAX USHRT_MAX
|
||||
# define SIZE_MIN USHRT_MIN
|
||||
#endif
|
||||
|
||||
#ifdef SSIZE_MAX
|
||||
# /* Take that. */
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG
|
||||
# define SSIZE_MAX LLONG_MAX
|
||||
# define SSIZE_MIN LLONG_MIN
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_LONG
|
||||
# define SSIZE_MAX LONG_MAX
|
||||
# define SSIZE_MIN LONG_MIN
|
||||
#elif SIZEOF_SIZE_T == SIZEOF_INT
|
||||
# define SSIZE_MAX INT_MAX
|
||||
# define SSIZE_MIN INT_MIN
|
||||
#else
|
||||
# define SSIZE_MAX SHRT_MAX
|
||||
# define SSIZE_MIN SHRT_MIN
|
||||
#endif
|
||||
64
include/ruby/backward/2/long_long.h
Normal file
64
include/ruby/backward/2/long_long.h
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 #LONG_LONG
|
||||
*
|
||||
* No known compiler that can compile today's ruby lacks long long.
|
||||
* Historically MSVC was one of such compiler, but it implemented long long a
|
||||
* while ago (some time back in 2013). The macros are for backwards
|
||||
* compatibility only.
|
||||
*/
|
||||
#include "ruby/3/config.h"
|
||||
#include "ruby/3/has/warning.h"
|
||||
#include "ruby/3/warning_push.h"
|
||||
|
||||
#if defined(LONG_LONG)
|
||||
# /* Take that. */
|
||||
|
||||
#elif RUBY3_HAS_WARNING("-Wc++11-long-long")
|
||||
# define HAVE_TRUE_LONG_LONG 1
|
||||
# define LONG_LONG \
|
||||
RUBY3_WARNING_PUSH() \
|
||||
RUBY3_WARNING_IGNORED(-Wc++11-long-long) \
|
||||
long long \
|
||||
RUBY3_WARNING_POP()
|
||||
|
||||
#elif RUBY3_HAS_WARNING("-Wlong-long")
|
||||
# define HAVE_TRUE_LONG_LONG 1
|
||||
# define LONG_LONG \
|
||||
RUBY3_WARNING_PUSH() \
|
||||
RUBY3_WARNING_IGNORED(-Wlong-long) \
|
||||
long long \
|
||||
RUBY3_WARNING_POP()
|
||||
|
||||
#elif defined(HAVE_LONG_LONG)
|
||||
# define HAVE_TRUE_LONG_LONG 1
|
||||
# define LONG_LONG long long
|
||||
|
||||
#elif SIZEOF___INT64 > 0
|
||||
# define HAVE_LONG_LONG 1
|
||||
# define LONG_LONG __int64
|
||||
# undef SIZEOF_LONG_LONG
|
||||
# define SIZEOF_LONG_LONG SIZEOF___INT64
|
||||
|
||||
#else
|
||||
# error Hello! Ruby developers believe this message must not happen.
|
||||
# error If you encounter this message, can you file a bug report?
|
||||
# error Remember to attach a detailed description of your environment.
|
||||
# error Thank you!
|
||||
#endif
|
||||
27
include/ruby/backward/2/r_cast.h
Normal file
27
include/ruby/backward/2/r_cast.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 #R_CAST
|
||||
*
|
||||
* Nobody is actively using this macro.
|
||||
*/
|
||||
#ifndef RUBY_BACKWARD2_R_CAST_H
|
||||
#define RUBY_BACKWARD2_R_CAST_H
|
||||
#define R_CAST(st) (struct st*)
|
||||
#define RMOVED(obj) (R_CAST(RMoved)(obj))
|
||||
#endif /* RUBY_BACKWARD2_R_CAST_H */
|
||||
30
include/ruby/backward/2/rmodule.h
Normal file
30
include/ruby/backward/2/rmodule.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 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.
|
||||
*/
|
||||
#ifndef RMODULE_IV_TBL
|
||||
#define RMODULE_IV_TBL(m) RCLASS_IV_TBL(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)
|
||||
#endif
|
||||
26
include/ruby/backward/2/stdalign.h
Normal file
26
include/ruby/backward/2/stdalign.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 #RUBY_ALIGNAS / #RUBY_ALIGNOF
|
||||
*/
|
||||
#include "ruby/3/stdalign.h"
|
||||
|
||||
#undef RUBY_ALIGNAS
|
||||
#undef RUBY_ALIGNOF
|
||||
#define RUBY_ALIGNAS RUBY3_ALIGNAS
|
||||
#define RUBY_ALIGNOF RUBY3_ALIGNOF
|
||||
43
include/ruby/backward/2/stdarg.h
Normal file
43
include/ruby/backward/2/stdarg.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
/** \noop-*-C++-*-vi:ft=cpp
|
||||
* @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 `RUBY3` or `ruby3` 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 #_
|
||||
*
|
||||
* Nobody should ever use these macros any longer. No konwn compilers lack
|
||||
* prototypes today. It's 21st century. Just forget them.
|
||||
*/
|
||||
|
||||
#undef _
|
||||
#ifdef HAVE_PROTOTYPES
|
||||
# define _(args) args
|
||||
#else
|
||||
# define _(args) ()
|
||||
#endif
|
||||
|
||||
#undef __
|
||||
#ifdef HAVE_STDARG_PROTOTYPES
|
||||
# define __(args) args
|
||||
#else
|
||||
# define __(args) ()
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define ANYARGS ...
|
||||
#else
|
||||
#define ANYARGS
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue