ds: number: convert to new object system
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
#ifndef BLUELIB_NUMBER_H
|
||||
#define BLUELIB_NUMBER_H
|
||||
#ifndef BLUE_DS_NUMBER_H
|
||||
#define BLUE_DS_NUMBER_H
|
||||
|
||||
#include <blue/ds/object.h>
|
||||
#include <blue/ds/type.h>
|
||||
#include <blue/core/macros.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define B_NUMBER(p) ((b_number *)(p))
|
||||
B_DECLS_BEGIN;
|
||||
|
||||
#define B_INT8(v) (b_number_create_int8(v))
|
||||
#define B_INT16(v) (b_number_create_int16(v))
|
||||
@@ -40,7 +39,12 @@
|
||||
#define B_NUMBER_IVAL(p) (b_number_get_size_t(p))
|
||||
#define B_NUMBER_FVAL(p) (b_number_get_double(p))
|
||||
|
||||
typedef struct b_number b_number;
|
||||
#define B_TYPE_NUMBER (b_number_get_type())
|
||||
|
||||
B_DECLARE_TYPE(b_number);
|
||||
|
||||
B_TYPE_CLASS_DECLARATION_BEGIN(b_number)
|
||||
B_TYPE_CLASS_DECLARATION_END(b_number)
|
||||
|
||||
typedef enum b_number_type {
|
||||
B_NUMBER_INT8,
|
||||
@@ -66,15 +70,9 @@ typedef enum b_number_type {
|
||||
B_NUMBER_QWORD = B_NUMBER_INT64,
|
||||
} b_number_type;
|
||||
|
||||
BLUE_API b_type b_number_get_type(void);
|
||||
|
||||
BLUE_API b_number *b_number_create(b_number_type type, void *value_ptr);
|
||||
static inline b_number *b_number_retain(b_number *number)
|
||||
{
|
||||
return B_NUMBER(b_retain(B_DSREF(number)));
|
||||
}
|
||||
static inline void b_number_release(b_number *number)
|
||||
{
|
||||
b_release(B_DSREF(number));
|
||||
}
|
||||
|
||||
static inline b_number *b_number_create_int8(int8_t value)
|
||||
{
|
||||
@@ -133,7 +131,7 @@ static inline b_number *b_number_create_size_t(size_t value)
|
||||
return b_number_create(B_NUMBER_SIZE_T, &value);
|
||||
}
|
||||
|
||||
BLUE_API b_number_type b_number_get_type(const b_number *number);
|
||||
BLUE_API b_number_type b_number_get_number_type(const b_number *number);
|
||||
BLUE_API int b_number_get_value(
|
||||
const b_number *number, b_number_type type, void *value_ptr);
|
||||
|
||||
@@ -251,4 +249,6 @@ BLUE_API void b_number_set_nan_negative(b_number *number, bool v);
|
||||
|
||||
BLUE_API size_t b_number_data_size(const b_number *number);
|
||||
|
||||
B_DECLS_END;
|
||||
|
||||
#endif
|
||||
|
||||
723
ds/number.c
723
ds/number.c
File diff suppressed because it is too large
Load Diff
35
ds/number.h
35
ds/number.h
@@ -1,35 +0,0 @@
|
||||
#ifndef _BLUELIB_NUMBER_H_
|
||||
#define _BLUELIB_NUMBER_H_
|
||||
|
||||
#include "object.h"
|
||||
|
||||
#include <blue/ds/number.h>
|
||||
|
||||
enum b_number_flags {
|
||||
NUMBER_F_INF = 0x01u,
|
||||
NUMBER_F_NAN = 0x02u,
|
||||
};
|
||||
|
||||
struct b_number {
|
||||
struct b_dsref n_base;
|
||||
b_number_type n_type;
|
||||
enum b_number_flags n_flags;
|
||||
union {
|
||||
int8_t v_int8;
|
||||
int16_t v_int16;
|
||||
int32_t v_int32;
|
||||
int64_t v_int64;
|
||||
float v_float32;
|
||||
double v_float64;
|
||||
char v_char;
|
||||
short v_short;
|
||||
int v_int;
|
||||
long v_long;
|
||||
long long v_longlong;
|
||||
float v_float;
|
||||
double v_double;
|
||||
size_t v_size_t;
|
||||
} n_value;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user