Added (and partially implemented) a float and double type to the Variable class
This commit is contained in:
parent
f2d929554d
commit
2ed5673e58
|
@ -39,6 +39,8 @@ typedef enum _VariableType
|
||||||
VT_UINT32,
|
VT_UINT32,
|
||||||
VT_INT64,
|
VT_INT64,
|
||||||
VT_UINT64,
|
VT_UINT64,
|
||||||
|
VT_FLOAT,
|
||||||
|
VT_DOUBLE,
|
||||||
VT_BUFFER,
|
VT_BUFFER,
|
||||||
VT_STRING
|
VT_STRING
|
||||||
} VariableType;
|
} VariableType;
|
||||||
|
|
|
@ -42,6 +42,8 @@ struct _Variable
|
||||||
uint32_t uint32;
|
uint32_t uint32;
|
||||||
int64_t int64;
|
int64_t int64;
|
||||||
uint64_t uint64;
|
uint64_t uint64;
|
||||||
|
float f;
|
||||||
|
double d;
|
||||||
Buffer * buffer;
|
Buffer * buffer;
|
||||||
String * string;
|
String * string;
|
||||||
} u;
|
} u;
|
||||||
|
@ -61,6 +63,8 @@ Variable * variable_new(VariableType type, void * value)
|
||||||
uint32_t * u32;
|
uint32_t * u32;
|
||||||
int64_t * i64;
|
int64_t * i64;
|
||||||
uint64_t * u64;
|
uint64_t * u64;
|
||||||
|
float * f;
|
||||||
|
double * d;
|
||||||
Buffer * b;
|
Buffer * b;
|
||||||
char const * s;
|
char const * s;
|
||||||
|
|
||||||
|
@ -138,6 +142,14 @@ Variable * variable_new(VariableType type, void * value)
|
||||||
u64 = value;
|
u64 = value;
|
||||||
variable->u.uint64 = *u64;
|
variable->u.uint64 = *u64;
|
||||||
break;
|
break;
|
||||||
|
case VT_FLOAT:
|
||||||
|
f = value;
|
||||||
|
variable->u.f = *f;
|
||||||
|
break;
|
||||||
|
case VT_DOUBLE:
|
||||||
|
d = value;
|
||||||
|
variable->u.d = *d;
|
||||||
|
break;
|
||||||
case VT_BUFFER:
|
case VT_BUFFER:
|
||||||
if((b = buffer_new_copy(value)) == NULL)
|
if((b = buffer_new_copy(value)) == NULL)
|
||||||
{
|
{
|
||||||
|
@ -324,6 +336,8 @@ void variable_delete(Variable * variable)
|
||||||
case VT_UINT32:
|
case VT_UINT32:
|
||||||
case VT_INT64:
|
case VT_INT64:
|
||||||
case VT_UINT64:
|
case VT_UINT64:
|
||||||
|
case VT_FLOAT:
|
||||||
|
case VT_DOUBLE:
|
||||||
break;
|
break;
|
||||||
case VT_BUFFER:
|
case VT_BUFFER:
|
||||||
buffer_delete(variable->u.buffer);
|
buffer_delete(variable->u.buffer);
|
||||||
|
@ -515,6 +529,22 @@ int variable_get_as(Variable * variable, VariableType type, void * result)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case VT_FLOAT:
|
||||||
|
if(variable->type == VT_FLOAT)
|
||||||
|
{
|
||||||
|
size = sizeof(variable->u.f);
|
||||||
|
p = &variable->u.f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case VT_DOUBLE:
|
||||||
|
if(variable->type == VT_DOUBLE)
|
||||||
|
{
|
||||||
|
size = sizeof(variable->u.d);
|
||||||
|
p = &variable->u.d;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case VT_BUFFER:
|
case VT_BUFFER:
|
||||||
if(variable->type == VT_BUFFER)
|
if(variable->type == VT_BUFFER)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user