Ruby  3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
Macros
attributes.h File Reference

(b76ad15ed0da636161de0243c547ee1e6fc95681)

Various attribute-related macros. More...

#include "ruby/internal/config.h"
#include "ruby/internal/attr/alloc_size.h"
#include "ruby/internal/attr/cold.h"
#include "ruby/internal/attr/const.h"
#include "ruby/internal/attr/deprecated.h"
#include "ruby/internal/attr/error.h"
#include "ruby/internal/attr/forceinline.h"
#include "ruby/internal/attr/format.h"
#include "ruby/internal/attr/maybe_unused.h"
#include "ruby/internal/attr/noinline.h"
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/attr/noreturn.h"
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/attr/restrict.h"
#include "ruby/internal/attr/returns_nonnull.h"
#include "ruby/internal/attr/warning.h"
#include "ruby/internal/has/attribute.h"
Include dependency graph for attributes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CONSTFUNC(x)   RBIMPL_ATTR_CONST() x
 
#define PUREFUNC(x)   RBIMPL_ATTR_PURE() x
 
#define DEPRECATED(x)   RBIMPL_ATTR_DEPRECATED(("")) x
 
#define DEPRECATED_BY(n, x)   RBIMPL_ATTR_DEPRECATED(("by: " # n)) x
 
#define DEPRECATED_TYPE(mesg, decl)
 
#define RUBY_CXX_DEPRECATED(mseg)   RBIMPL_ATTR_DEPRECATED((mseg))
 
#define NOINLINE(x)   RBIMPL_ATTR_NOINLINE() x
 
#define ALWAYS_INLINE(x)   RBIMPL_ATTR_FORCEINLINE() x
 
#define ERRORFUNC(mesg, x)   RBIMPL_ATTR_ERROR(mesg) x
 
#define HAVE_ATTRIBUTE_ERRORFUNC   1
 
#define WARNINGFUNC(mesg, x)   RBIMPL_ATTR_WARNING(mesg) x
 
#define HAVE_ATTRIBUTE_WARNINGFUNC   1
 
#define COLDFUNC   RBIMPL_ATTR_COLD()
 
#define PRINTF_ARGS(decl, string_index, first_to_check)
 
#define RUBY_ATTR_ALLOC_SIZE   RBIMPL_ATTR_ALLOC_SIZE
 
#define RUBY_ATTR_MALLOC   RBIMPL_ATTR_RESTRICT()
 
#define RUBY_ATTR_RETURNS_NONNULL   RBIMPL_ATTR_RETURNS_NONNULL()
 
#define FUNC_MINIMIZED(x)   x
 
#define FUNC_UNOPTIMIZED(x)   x
 
#define RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args)   FUNC_MINIMIZED(type prot) {return (type)name args;}
 
#define RUBY_ALIAS_FUNCTION_VOID(prot, name, args)   FUNC_MINIMIZED(void prot) {name args;}
 
#define RUBY_ALIAS_FUNCTION(prot, name, args)   RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
 
#define RUBY_FUNC_NONNULL(n, x)   RBIMPL_ATTR_NONNULL(n) x
 
#define NORETURN(x)   RBIMPL_ATTR_NORETURN() x
 
#define NORETURN_STYLE_NEW
 
#define PACKED_STRUCT(x)   x
 
#define PACKED_STRUCT_UNALIGNED(x)   x
 
#define RB_UNUSED_VAR(x)   x RBIMPL_ATTR_MAYBE_UNUSED()
 

Detailed Description

Various attribute-related macros.

Author
Ruby developers ruby-.nosp@m.core.nosp@m.@ruby.nosp@m.-lan.nosp@m.g.org
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.

Q&A

Definition in file attributes.h.

Macro Definition Documentation

◆ ALWAYS_INLINE

#define ALWAYS_INLINE (   x)    RBIMPL_ATTR_FORCEINLINE() x

Definition at line 86 of file attributes.h.

◆ COLDFUNC

#define COLDFUNC   RBIMPL_ATTR_COLD()

Definition at line 106 of file attributes.h.

◆ CONSTFUNC

#define CONSTFUNC (   x)    RBIMPL_ATTR_CONST() x

Definition at line 51 of file attributes.h.

◆ DEPRECATED

#define DEPRECATED (   x)    RBIMPL_ATTR_DEPRECATED(("")) x

Definition at line 57 of file attributes.h.

◆ DEPRECATED_BY

#define DEPRECATED_BY (   n,
 
)    RBIMPL_ATTR_DEPRECATED(("by: " # n)) x

Definition at line 60 of file attributes.h.

◆ DEPRECATED_TYPE

#define DEPRECATED_TYPE (   mesg,
  decl 
)
Value:
_Pragma("message \"DEPRECATED_TYPE is deprecated\""); \

Definition at line 64 of file attributes.h.

◆ ERRORFUNC

#define ERRORFUNC (   mesg,
 
)    RBIMPL_ATTR_ERROR(mesg) x

Definition at line 90 of file attributes.h.

◆ FUNC_MINIMIZED

#define FUNC_MINIMIZED (   x)    x

Definition at line 122 of file attributes.h.

◆ FUNC_UNOPTIMIZED

#define FUNC_UNOPTIMIZED (   x)    x

Definition at line 126 of file attributes.h.

◆ HAVE_ATTRIBUTE_ERRORFUNC

#define HAVE_ATTRIBUTE_ERRORFUNC   1

Definition at line 92 of file attributes.h.

◆ HAVE_ATTRIBUTE_WARNINGFUNC

#define HAVE_ATTRIBUTE_WARNINGFUNC   1

Definition at line 98 of file attributes.h.

◆ NOINLINE

#define NOINLINE (   x)    RBIMPL_ATTR_NOINLINE() x

Definition at line 82 of file attributes.h.

◆ NORETURN

#define NORETURN (   x)    RBIMPL_ATTR_NORETURN() x

Definition at line 148 of file attributes.h.

◆ NORETURN_STYLE_NEW

#define NORETURN_STYLE_NEW

Definition at line 149 of file attributes.h.

◆ PACKED_STRUCT

#define PACKED_STRUCT (   x)    x

Definition at line 152 of file attributes.h.

◆ PACKED_STRUCT_UNALIGNED

#define PACKED_STRUCT_UNALIGNED (   x)    x

Definition at line 159 of file attributes.h.

◆ PRINTF_ARGS

#define PRINTF_ARGS (   decl,
  string_index,
  first_to_check 
)
Value:
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, (string_index), (first_to_check)) \
decl

Definition at line 108 of file attributes.h.

◆ PUREFUNC

#define PUREFUNC (   x)    RBIMPL_ATTR_PURE() x

Definition at line 54 of file attributes.h.

◆ RB_UNUSED_VAR

#define RB_UNUSED_VAR (   x)    x RBIMPL_ATTR_MAYBE_UNUSED()

Definition at line 164 of file attributes.h.

◆ RUBY_ALIAS_FUNCTION

#define RUBY_ALIAS_FUNCTION (   prot,
  name,
  args 
)    RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)

Definition at line 140 of file attributes.h.

◆ RUBY_ALIAS_FUNCTION_TYPE

#define RUBY_ALIAS_FUNCTION_TYPE (   type,
  prot,
  name,
  args 
)    FUNC_MINIMIZED(type prot) {return (type)name args;}

Definition at line 130 of file attributes.h.

◆ RUBY_ALIAS_FUNCTION_VOID

#define RUBY_ALIAS_FUNCTION_VOID (   prot,
  name,
  args 
)    FUNC_MINIMIZED(void prot) {name args;}

Definition at line 135 of file attributes.h.

◆ RUBY_ATTR_ALLOC_SIZE

#define RUBY_ATTR_ALLOC_SIZE   RBIMPL_ATTR_ALLOC_SIZE

Definition at line 113 of file attributes.h.

◆ RUBY_ATTR_MALLOC

#define RUBY_ATTR_MALLOC   RBIMPL_ATTR_RESTRICT()

Definition at line 116 of file attributes.h.

◆ RUBY_ATTR_RETURNS_NONNULL

#define RUBY_ATTR_RETURNS_NONNULL   RBIMPL_ATTR_RETURNS_NONNULL()

Definition at line 119 of file attributes.h.

◆ RUBY_CXX_DEPRECATED

#define RUBY_CXX_DEPRECATED (   mseg)    RBIMPL_ATTR_DEPRECATED((mseg))

Definition at line 79 of file attributes.h.

◆ RUBY_FUNC_NONNULL

#define RUBY_FUNC_NONNULL (   n,
 
)    RBIMPL_ATTR_NONNULL(n) x

Definition at line 145 of file attributes.h.

◆ WARNINGFUNC

#define WARNINGFUNC (   mesg,
 
)    RBIMPL_ATTR_WARNING(mesg) x

Definition at line 96 of file attributes.h.

RBIMPL_ATTR_DEPRECATED
#define RBIMPL_ATTR_DEPRECATED(msg)
Wraps (or simulates) [[deprecated]]
Definition: deprecated.h:36
RBIMPL_PRINTF_FORMAT
#define RBIMPL_PRINTF_FORMAT
Definition: format.h:35
RBIMPL_ATTR_FORMAT
#define RBIMPL_ATTR_FORMAT(x, y, z)
Wraps (or simulates) __attribute__((format))
Definition: format.h:27