diff options
author | Aaron Patterson <[email protected]> | 2022-09-12 09:53:19 -0700 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2022-10-07 15:18:49 +0900 |
commit | 48a64984063532f4dedf62e8ac4958a3cf3b556d (patch) | |
tree | 751355eebdde0a0bf77e7697b129d0e6a996c5b6 /ext/fiddle/fiddle.h | |
parent | 6d01b66764b6dd3fc61c297bd1ec973f8ea686aa (diff) |
[ruby/fiddle] Add constants for unsigned values (https://github.com/ruby/fiddle/pull/111)
This commit adds constants for unsigned values. Currently we can use `-`
to mean "unsigned", but I think having a specific name makes Fiddle more
user friendly. This commit continues to support `-`, but introduces
negative constants with "unsigned" names
I think this will help to eliminate [this
code](https://github.com/ruby/ruby/blob/3a56bf0bcc66e14ffe5ec89efc32ecfceed180f4/lib/mjit/c_type.rb#L31-L38)
https://github.com/ruby/fiddle/commit/2bef0f1082
Co-authored-by: Sutou Kouhei <[email protected]>
Diffstat (limited to 'ext/fiddle/fiddle.h')
-rw-r--r-- | ext/fiddle/fiddle.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ext/fiddle/fiddle.h b/ext/fiddle/fiddle.h index 9de62a58cc..10eb9ceedb 100644 --- a/ext/fiddle/fiddle.h +++ b/ext/fiddle/fiddle.h @@ -111,11 +111,16 @@ #define TYPE_VOID 0 #define TYPE_VOIDP 1 #define TYPE_CHAR 2 +#define TYPE_UCHAR -TYPE_CHAR #define TYPE_SHORT 3 +#define TYPE_USHORT -TYPE_SHORT #define TYPE_INT 4 +#define TYPE_UINT -TYPE_INT #define TYPE_LONG 5 +#define TYPE_ULONG -TYPE_LONG #if HAVE_LONG_LONG #define TYPE_LONG_LONG 6 +#define TYPE_ULONG_LONG -TYPE_LONG_LONG #endif #define TYPE_FLOAT 7 #define TYPE_DOUBLE 8 @@ -123,11 +128,18 @@ #define TYPE_CONST_STRING 10 #define TYPE_INT8_T TYPE_CHAR +#define TYPE_UINT8_T -TYPE_INT8_T + #if SIZEOF_SHORT == 2 # define TYPE_INT16_T TYPE_SHORT #elif SIZEOF_INT == 2 # define TYPE_INT16_T TYPE_INT #endif + +#ifdef TYPE_INT16_T +# define TYPE_UINT16_T -TYPE_INT16_T +#endif + #if SIZEOF_SHORT == 4 # define TYPE_INT32_T TYPE_SHORT #elif SIZEOF_INT == 4 @@ -135,6 +147,11 @@ #elif SIZEOF_LONG == 4 # define TYPE_INT32_T TYPE_LONG #endif + +#ifdef TYPE_INT32_T +#define TYPE_UINT32_T -TYPE_INT32_T +#endif + #if SIZEOF_INT == 8 # define TYPE_INT64_T TYPE_INT #elif SIZEOF_LONG == 8 @@ -143,6 +160,10 @@ # define TYPE_INT64_T TYPE_LONG_LONG #endif +#ifdef TYPE_INT64_T +#define TYPE_UINT64_T -TYPE_INT64_T +#endif + #ifndef TYPE_SSIZE_T # if SIZEOF_SIZE_T == SIZEOF_INT # define TYPE_SSIZE_T TYPE_INT |