Files
fx/fx/int/i32.c
T

59 lines
1.1 KiB
C

#include <fx/int.h>
#include <fx/value-type.h>
#define SWAP32(v) \
(((v << 24) & 0xFF000000) | ((v << 8) & 0x00FF0000) \
| ((v >> 8) & 0x0000FF00) | ((v >> 24) & 0x000000FF))
i32 fx_i32_htob(i32 v)
{
#if FX_ENDIAN == 1
return v;
#else
return SWAP32(v);
#endif
}
i32 fx_i32_htos(i32 v)
{
#if FX_ENDIAN == 0
return v;
#else
return SWAP32(v);
#endif
}
i32 fx_i32_btoh(i32 v)
{
#if FX_ENDIAN == 1
return v;
#else
return SWAP32(v);
#endif
}
i32 fx_i32_stoh(i32 v)
{
#if FX_ENDIAN == 0
return v;
#else
return SWAP32(v);
#endif
}
/*** CLASS DEFINITION *********************************************************/
FX_TYPE_CLASS_BEGIN(fx_i32)
FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_object, FX_TYPE_OBJECT)
FX_INTERFACE_ENTRY(to_string) = NULL;
FX_TYPE_VTABLE_INTERFACE_END(fx_object, FX_TYPE_OBJECT)
FX_TYPE_CLASS_END(fx_i32)
FX_TYPE_DEFINITION_BEGIN(fx_i32)
__FX_VALUE_TYPE_ID(I32);
FX_TYPE_EXTENDS(FX_TYPE_VALUE_TYPE);
FX_TYPE_NAME("fx.i32");
FX_TYPE_CLASS(fx_i32_class);
FX_TYPE_INSTANCE_PRIVATE(i32);
FX_TYPE_DEFINITION_END(fx_i32)