61#define NUMBER_BOOL(v) \
64 .type = NT_INT1, .value = v \
70#define NUMBER_CHAR(v) \
73 .type = NT_INT8, .value = v \
80#define NUMBER_SHORT(v) \
83 .type = NT_INT16, .value = v \
89#define NUMBER_INT(v) \
92 .type = NT_INT32, .value = v \
98#define NUMBER_LONG(v) \
101 .type = NT_INT64, .value = v \
107#define NUMBER_FROM_TYPE_VAL(t, v) \
110 .type = t, .value = v \
116#define NT_MAX(a, b) (a > b ? a : b)
121#define NT_MIN(a, b) (NT_MAX(a, b) == a ? b : a)
NumberType token_type_to_number_type(int token_type)
Convert a TokenType to a NumberType.
Definition: number.c:17
struct Number Number
Container for various kinds of number data.
static const char * numberTypeFormatStrings[]
Format strings for each data type.
Definition: number.h:46
int number_to_token_type(Number number)
Definition: number.c:43
static const int numberTypeByteSizes[]
Size of each NumberType.
Definition: number.h:28
static const unsigned long long int numberTypeMaxValues[]
Max value of each NumberType.
Definition: number.h:40
static const int numberTypeBitSizes[]
Bit size of each NumberType.
Definition: number.h:35
NumberType
Types of numbers supported by Purple.
Definition: number.h:17
@ NT_INT16
Definition: number.h:20
@ NT_INT64
Definition: number.h:22
@ NT_INT1
Definition: number.h:18
@ NT_INT32
Definition: number.h:21
@ NT_INT8
Definition: number.h:19
Container for various kinds of number data.
Definition: number.h:51
long long int value
Definition: number.h:55
NumberType type
Definition: number.h:53