fx.collections: move fx_number to fx
This commit is contained in:
@@ -1,256 +0,0 @@
|
||||
#ifndef FX_DS_NUMBER_H
|
||||
#define FX_DS_NUMBER_H
|
||||
|
||||
#include <fx/macros.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
FX_DECLS_BEGIN;
|
||||
|
||||
#define FX_INT8(v) (fx_number_create_int8(v))
|
||||
#define FX_INT16(v) (fx_number_create_int16(v))
|
||||
#define FX_INT32(v) (fx_number_create_int32(v))
|
||||
#define FX_INT64(v) (fx_number_create_int64(v))
|
||||
#define FX_FLOAT32(v) (fx_number_create_float32(v))
|
||||
#define FX_FLOAT64(v) (fx_number_create_float64(v))
|
||||
#define FX_CHAR(v) (fx_number_create_char(v))
|
||||
#define FX_SHORT(v) (fx_number_create_short(v))
|
||||
#define FX_INT(v) (fx_number_create_int(v))
|
||||
#define FX_LONG(v) (fx_number_create_long(v))
|
||||
#define FX_LONGLONG(v) (fx_number_create_longlong(v))
|
||||
#define FX_FLOAT(v) (fx_number_create_float(v))
|
||||
#define FX_DOUBLE(v) (fx_number_create_double(v))
|
||||
#define FX_SIZE_T(v) (fx_number_create_size_t(v))
|
||||
|
||||
#define FX_RV_INT8(v) FX_RV(fx_number_create_int8(v))
|
||||
#define FX_RV_INT16(v) FX_RV(fx_number_create_int16(v))
|
||||
#define FX_RV_INT32(v) FX_RV(fx_number_create_int32(v))
|
||||
#define FX_RV_INT64(v) FX_RV(fx_number_create_int64(v))
|
||||
#define FX_RV_FLOAT32(v) FX_RV(fx_number_create_float32(v))
|
||||
#define FX_RV_FLOAT64(v) FX_RV(fx_number_create_float64(v))
|
||||
#define FX_RV_CHAR(v) FX_RV(fx_number_create_char(v))
|
||||
#define FX_RV_SHORT(v) FX_RV(fx_number_create_short(v))
|
||||
#define FX_RV_INT(v) FX_RV(fx_number_create_int(v))
|
||||
#define FX_RV_LONG(v) FX_RV(fx_number_create_long(v))
|
||||
#define FX_RV_LONGLONG(v) FX_RV(fx_number_create_longlong(v))
|
||||
#define FX_RV_FLOAT(v) FX_RV(fx_number_create_float(v))
|
||||
#define FX_RV_DOUBLE(v) FX_RV(fx_number_create_double(v))
|
||||
#define FX_RV_SIZE_T(v) FX_RV(fx_number_create_size_t(v))
|
||||
|
||||
#define FX_NUMBER_IVAL(p) (fx_number_get_size_t(p))
|
||||
#define FX_NUMBER_FVAL(p) (fx_number_get_double(p))
|
||||
|
||||
#define FX_TYPE_NUMBER (fx_number_get_type())
|
||||
|
||||
FX_DECLARE_TYPE(fx_number);
|
||||
|
||||
FX_TYPE_CLASS_DECLARATION_BEGIN(fx_number)
|
||||
FX_TYPE_CLASS_DECLARATION_END(fx_number)
|
||||
|
||||
typedef enum fx_number_type {
|
||||
FX_NUMBER_INT8,
|
||||
FX_NUMBER_INT16,
|
||||
FX_NUMBER_INT32,
|
||||
FX_NUMBER_INT64,
|
||||
FX_NUMBER_FLOAT32,
|
||||
FX_NUMBER_FLOAT64,
|
||||
FX_NUMBER_CHAR,
|
||||
FX_NUMBER_SHORT,
|
||||
FX_NUMBER_INT,
|
||||
FX_NUMBER_LONG,
|
||||
FX_NUMBER_LONGLONG,
|
||||
FX_NUMBER_FLOAT,
|
||||
FX_NUMBER_DOUBLE,
|
||||
FX_NUMBER_SIZE_T,
|
||||
FX_NUMBER_HANDLE,
|
||||
FX_NUMBER_TYPE_COUNT,
|
||||
|
||||
FX_NUMBER_BYTE = FX_NUMBER_INT8,
|
||||
FX_NUMBER_WORD = FX_NUMBER_INT16,
|
||||
FX_NUMBER_DWORD = FX_NUMBER_INT32,
|
||||
FX_NUMBER_QWORD = FX_NUMBER_INT64,
|
||||
} fx_number_type;
|
||||
|
||||
FX_API fx_type fx_number_get_type(void);
|
||||
|
||||
FX_API fx_number *fx_number_create(fx_number_type type, void *value_ptr);
|
||||
|
||||
static inline fx_number *fx_number_create_int8(int8_t value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_INT8, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_int16(int16_t value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_INT16, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_int32(int32_t value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_INT32, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_int64(int64_t value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_INT64, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_float32(float value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_FLOAT32, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_float64(double value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_FLOAT64, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_char(char value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_CHAR, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_short(short value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_SHORT, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_int(int value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_INT, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_long(long value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_LONG, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_longlong(long long value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_LONGLONG, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_float(float value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_FLOAT, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_double(double value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_DOUBLE, &value);
|
||||
}
|
||||
static inline fx_number *fx_number_create_size_t(size_t value)
|
||||
{
|
||||
return fx_number_create(FX_NUMBER_SIZE_T, &value);
|
||||
}
|
||||
|
||||
FX_API fx_number_type fx_number_get_number_type(const fx_number *number);
|
||||
FX_API int fx_number_get_value(
|
||||
const fx_number *number,
|
||||
fx_number_type type,
|
||||
void *value_ptr);
|
||||
|
||||
static inline int8_t fx_number_get_int8(const fx_number *number)
|
||||
{
|
||||
int8_t v;
|
||||
fx_number_get_value(number, FX_NUMBER_INT8, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline int16_t fx_number_get_int16(const fx_number *number)
|
||||
{
|
||||
int16_t v;
|
||||
fx_number_get_value(number, FX_NUMBER_INT16, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline int32_t fx_number_get_int32(const fx_number *number)
|
||||
{
|
||||
int32_t v;
|
||||
fx_number_get_value(number, FX_NUMBER_INT32, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline int64_t fx_number_get_int64(const fx_number *number)
|
||||
{
|
||||
int64_t v;
|
||||
fx_number_get_value(number, FX_NUMBER_INT64, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline float fx_number_get_float32(const fx_number *number)
|
||||
{
|
||||
float v;
|
||||
fx_number_get_value(number, FX_NUMBER_FLOAT32, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline double fx_number_get_float64(const fx_number *number)
|
||||
{
|
||||
double v;
|
||||
fx_number_get_value(number, FX_NUMBER_FLOAT64, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline char fx_number_get_char(const fx_number *number)
|
||||
{
|
||||
char v;
|
||||
fx_number_get_value(number, FX_NUMBER_CHAR, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline short fx_number_get_short(const fx_number *number)
|
||||
{
|
||||
short v;
|
||||
fx_number_get_value(number, FX_NUMBER_SHORT, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline int fx_number_get_int(const fx_number *number)
|
||||
{
|
||||
int v;
|
||||
fx_number_get_value(number, FX_NUMBER_INT, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline long fx_number_get_long(const fx_number *number)
|
||||
{
|
||||
long v;
|
||||
fx_number_get_value(number, FX_NUMBER_LONG, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline long long fx_number_get_longlong(const fx_number *number)
|
||||
{
|
||||
long long v;
|
||||
fx_number_get_value(number, FX_NUMBER_LONGLONG, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline float fx_number_get_float(const fx_number *number)
|
||||
{
|
||||
float v;
|
||||
fx_number_get_value(number, FX_NUMBER_FLOAT, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline double fx_number_get_double(const fx_number *number)
|
||||
{
|
||||
double v;
|
||||
fx_number_get_value(number, FX_NUMBER_DOUBLE, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline size_t fx_number_get_size_t(const fx_number *number)
|
||||
{
|
||||
size_t v;
|
||||
fx_number_get_value(number, FX_NUMBER_SIZE_T, &v);
|
||||
return v;
|
||||
}
|
||||
|
||||
FX_API bool fx_number_is_integer(const fx_number *number);
|
||||
FX_API bool fx_number_is_float(const fx_number *number);
|
||||
FX_API bool fx_number_is_inf(const fx_number *number);
|
||||
FX_API bool fx_number_is_inf_positive(const fx_number *number);
|
||||
FX_API bool fx_number_is_inf_negative(const fx_number *number);
|
||||
FX_API bool fx_number_is_nan(const fx_number *number);
|
||||
FX_API bool fx_number_is_nan_positive(const fx_number *number);
|
||||
FX_API bool fx_number_is_nan_negative(const fx_number *number);
|
||||
|
||||
FX_API void fx_number_set_inf_positive(fx_number *number, bool v);
|
||||
FX_API void fx_number_set_inf_negative(fx_number *number, bool v);
|
||||
FX_API void fx_number_set_nan_positive(fx_number *number, bool v);
|
||||
FX_API void fx_number_set_nan_negative(fx_number *number, bool v);
|
||||
|
||||
FX_API size_t fx_number_data_size(const fx_number *number);
|
||||
|
||||
FX_DECLS_END;
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user