Also deserializing float and double values (as strings)
This commit is contained in:
parent
fa76b348e0
commit
7c2d741759
|
@ -220,6 +220,8 @@ Variable * variable_new_deserialize_type(VariableType type, size_t * size,
|
||||||
int32_t i32;
|
int32_t i32;
|
||||||
uint32_t u32;
|
uint32_t u32;
|
||||||
int64_t i64;
|
int64_t i64;
|
||||||
|
float f;
|
||||||
|
double d;
|
||||||
void * p = (char *)data;
|
void * p = (char *)data;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -263,6 +265,8 @@ Variable * variable_new_deserialize_type(VariableType type, size_t * size,
|
||||||
u32 = ntohl(u32);
|
u32 = ntohl(u32);
|
||||||
s += u32;
|
s += u32;
|
||||||
break;
|
break;
|
||||||
|
case VT_FLOAT:
|
||||||
|
case VT_DOUBLE:
|
||||||
case VT_STRING:
|
case VT_STRING:
|
||||||
for(s = 0; s < *size;)
|
for(s = 0; s < *size;)
|
||||||
if(data[s++] != '\0')
|
if(data[s++] != '\0')
|
||||||
|
@ -310,6 +314,26 @@ Variable * variable_new_deserialize_type(VariableType type, size_t * size,
|
||||||
case VT_UINT32:
|
case VT_UINT32:
|
||||||
i32 = ntohl(i32);
|
i32 = ntohl(i32);
|
||||||
break;
|
break;
|
||||||
|
case VT_FLOAT:
|
||||||
|
i32 = sscanf(p, "%e", &f);
|
||||||
|
free(p);
|
||||||
|
if(i32 != 1)
|
||||||
|
{
|
||||||
|
error_set_code(1, "Invalid float value", type);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
p = &f;
|
||||||
|
break;
|
||||||
|
case VT_DOUBLE:
|
||||||
|
i32 = sscanf(p, "%le", &d);
|
||||||
|
free(p);
|
||||||
|
if(i32 != 1)
|
||||||
|
{
|
||||||
|
error_set_code(1, "Invalid double value", type);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
p = &d;
|
||||||
|
break;
|
||||||
case VT_STRING:
|
case VT_STRING:
|
||||||
break;
|
break;
|
||||||
case VT_INT64:
|
case VT_INT64:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user