mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/fiddle] Add support for specifying types by name as String or Symbol
For example, :voidp equals to Fiddle::TYPE_VOID_P.
3b4de54899
This commit is contained in:
parent
ae7b53546c
commit
e2dfc0c26b
Notes:
git
2020-11-18 09:05:47 +09:00
6 changed files with 161 additions and 47 deletions
|
@ -118,6 +118,38 @@
|
|||
#define TYPE_VARIADIC 9
|
||||
#define TYPE_CONST_STRING 10
|
||||
|
||||
#ifndef TYPE_SSIZE_T
|
||||
# if SIZEOF_SIZE_T == SIZEOF_INT
|
||||
# define TYPE_SSIZE_T TYPE_INT
|
||||
# elif SIZEOF_SIZE_T == SIZEOF_LONG
|
||||
# define TYPE_SSIZE_T TYPE_LONG
|
||||
# elif defined HAVE_LONG_LONG && SIZEOF_SIZE_T == SIZEOF_LONG_LONG
|
||||
# define TYPE_SSIZE_T TYPE_LONG_LONG
|
||||
# endif
|
||||
#endif
|
||||
#define TYPE_SIZE_T (-1*SIGNEDNESS_OF_SIZE_T*TYPE_SSIZE_T)
|
||||
|
||||
#ifndef TYPE_PTRDIFF_T
|
||||
# if SIZEOF_PTRDIFF_T == SIZEOF_INT
|
||||
# define TYPE_PTRDIFF_T TYPE_INT
|
||||
# elif SIZEOF_PTRDIFF_T == SIZEOF_LONG
|
||||
# define TYPE_PTRDIFF_T TYPE_LONG
|
||||
# elif defined HAVE_LONG_LONG && SIZEOF_PTRDIFF_T == SIZEOF_LONG_LONG
|
||||
# define TYPE_PTRDIFF_T TYPE_LONG_LONG
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef TYPE_INTPTR_T
|
||||
# if SIZEOF_INTPTR_T == SIZEOF_INT
|
||||
# define TYPE_INTPTR_T TYPE_INT
|
||||
# elif SIZEOF_INTPTR_T == SIZEOF_LONG
|
||||
# define TYPE_INTPTR_T TYPE_LONG
|
||||
# elif defined HAVE_LONG_LONG && SIZEOF_INTPTR_T == SIZEOF_LONG_LONG
|
||||
# define TYPE_INTPTR_T TYPE_LONG_LONG
|
||||
# endif
|
||||
#endif
|
||||
#define TYPE_UINTPTR_T (-TYPE_INTPTR_T)
|
||||
|
||||
#define ALIGN_OF(type) offsetof(struct {char align_c; type align_x;}, align_x)
|
||||
|
||||
#define ALIGN_VOIDP ALIGN_OF(void*)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue