Files
fx/fx/int/short.c
T

104 lines
3.7 KiB
C
Raw Normal View History

2026-05-25 17:19:51 +01:00
#include "convert.h"
2026-05-17 17:09:05 +01:00
#include <fx/int.h>
#include <fx/value-type.h>
2026-05-25 17:19:51 +01:00
HASH(short)
TO_STRING(short, "%d")
BOOL_CONVERT(short)
GENERIC_CONVERT(short, i16, i16)
GENERIC_CONVERT(short, u16, u16)
GENERIC_CONVERT(short, i32, i32)
GENERIC_CONVERT(short, u32, u32)
GENERIC_CONVERT(short, i64, i64)
GENERIC_CONVERT(short, u64, u64)
GENERIC_CONVERT(short, iptr, iptr)
GENERIC_CONVERT(short, uptr, uptr)
GENERIC_CONVERT(short, sbyte, sbyte)
GENERIC_CONVERT(short, byte, byte)
GENERIC_CONVERT(short, ushort, unsigned short)
GENERIC_CONVERT(short, int, int)
GENERIC_CONVERT(short, uint, unsigned int)
GENERIC_CONVERT(short, long, long)
GENERIC_CONVERT(short, ulong, unsigned long)
GENERIC_CONVERT(short, longlong, long long)
GENERIC_CONVERT(short, ulonglong, unsigned long long)
GENERIC_CONVERT(short, size, size_t)
GENERIC_CONVERT(short, float, float)
GENERIC_CONVERT(short, double, double)
BINARY_OP(add, +, short)
BINARY_OP(subtract, -, short)
BINARY_OP(multiply, *, short)
BINARY_OP(divide, /, short)
PREFIX_OP(increment, ++, short)
PREFIX_OP(decrement, --, short)
IN_PLACE_OP(add_in_place, +=, short)
IN_PLACE_OP(subtract_in_place, -=, short)
IN_PLACE_OP(multiply_in_place, *=, short)
IN_PLACE_OP(divide_in_place, /=, short)
COMPARE(short, short)
2026-05-17 17:09:05 +01:00
/*** CLASS DEFINITION *********************************************************/
FX_TYPE_CLASS_BEGIN(fx_short)
FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_object, FX_TYPE_OBJECT)
2026-05-25 17:19:51 +01:00
FX_INTERFACE_ENTRY(to_string) = to_string;
FX_INTERFACE_ENTRY(hash) = hash;
2026-05-17 17:09:05 +01:00
FX_TYPE_VTABLE_INTERFACE_END(fx_object, FX_TYPE_OBJECT)
2026-05-25 17:19:51 +01:00
FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_comparable, FX_TYPE_COMPARABLE)
FX_INTERFACE_ENTRY(c_compare) = compare;
FX_TYPE_VTABLE_INTERFACE_END(fx_comparable, FX_TYPE_COMPARABLE)
FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_operable, FX_TYPE_OPERABLE)
FX_INTERFACE_ENTRY(op_add) = add;
FX_INTERFACE_ENTRY(op_subtract) = subtract;
FX_INTERFACE_ENTRY(op_multiply) = multiply;
FX_INTERFACE_ENTRY(op_divide) = divide;
FX_INTERFACE_ENTRY(op_increment) = increment;
FX_INTERFACE_ENTRY(op_decrement) = decrement;
FX_INTERFACE_ENTRY(op_add_in_place) = add_in_place;
FX_INTERFACE_ENTRY(op_subtract_in_place) = subtract_in_place;
FX_INTERFACE_ENTRY(op_multiply_in_place) = multiply_in_place;
FX_INTERFACE_ENTRY(op_divide_in_place) = divide_in_place;
FX_TYPE_VTABLE_INTERFACE_END(fx_operable, FX_TYPE_OPERABLE)
FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_convertible, FX_TYPE_CONVERTIBLE)
FX_INTERFACE_ENTRY(c_to_bool) = to_bool;
FX_INTERFACE_ENTRY(c_to_i16) = to_i16;
FX_INTERFACE_ENTRY(c_to_u16) = to_u16;
FX_INTERFACE_ENTRY(c_to_i32) = to_i32;
FX_INTERFACE_ENTRY(c_to_u32) = to_u32;
FX_INTERFACE_ENTRY(c_to_i64) = to_i64;
FX_INTERFACE_ENTRY(c_to_u64) = to_u64;
FX_INTERFACE_ENTRY(c_to_iptr) = to_iptr;
FX_INTERFACE_ENTRY(c_to_uptr) = to_uptr;
FX_INTERFACE_ENTRY(c_to_sbyte) = to_sbyte;
FX_INTERFACE_ENTRY(c_to_byte) = to_byte;
FX_INTERFACE_ENTRY(c_to_ushort) = to_ushort;
FX_INTERFACE_ENTRY(c_to_int) = to_int;
FX_INTERFACE_ENTRY(c_to_uint) = to_uint;
FX_INTERFACE_ENTRY(c_to_long) = to_long;
FX_INTERFACE_ENTRY(c_to_ulong) = to_ulong;
FX_INTERFACE_ENTRY(c_to_longlong) = to_longlong;
FX_INTERFACE_ENTRY(c_to_ulonglong) = to_ulonglong;
FX_INTERFACE_ENTRY(c_to_size) = to_size;
FX_INTERFACE_ENTRY(c_to_float) = to_float;
FX_INTERFACE_ENTRY(c_to_double) = to_double;
FX_TYPE_VTABLE_INTERFACE_END(fx_convertible, FX_TYPE_CONVERTIBLE)
2026-05-17 17:09:05 +01:00
FX_TYPE_CLASS_END(fx_short)
FX_TYPE_DEFINITION_BEGIN(fx_short)
__FX_VALUE_TYPE_ID(SHORT);
FX_TYPE_EXTENDS(FX_TYPE_VALUE_TYPE);
2026-05-25 17:19:51 +01:00
FX_TYPE_IMPLEMENTS(FX_TYPE_CONVERTIBLE);
FX_TYPE_IMPLEMENTS(FX_TYPE_OPERABLE);
FX_TYPE_IMPLEMENTS(FX_TYPE_COMPARABLE);
2026-05-17 17:09:05 +01:00
FX_TYPE_NAME("fx.short");
FX_TYPE_CLASS(fx_short_class);
FX_TYPE_INSTANCE_PRIVATE(short);
FX_TYPE_DEFINITION_END(fx_short)