Make it clear that integers are parsed separately from floats

This commit is contained in:
gingerBill
2021-09-28 12:18:11 +01:00
parent bcb07b6b9e
commit ea0bf05727
+5 -6
View File
@@ -35,11 +35,12 @@ unmarshal_any :: proc(data: []byte, v: any, spec := DEFAULT_SPECIFICATION, alloc
if !reflect.is_pointer(ti) || ti.id == rawptr { if !reflect.is_pointer(ti) || ti.id == rawptr {
return .Non_Pointer_Parameter return .Non_Pointer_Parameter
} }
PARSE_INTEGERS :: true
if !is_valid(data, spec, true) { if !is_valid(data, spec, PARSE_INTEGERS) {
return .Invalid_Data return .Invalid_Data
} }
p := make_parser(data, spec, true, allocator) p := make_parser(data, spec, PARSE_INTEGERS, allocator)
data := any{(^rawptr)(v.data)^, ti.variant.(reflect.Type_Info_Pointer).elem.id} data := any{(^rawptr)(v.data)^, ti.variant.(reflect.Type_Info_Pointer).elem.id}
if v.data == nil { if v.data == nil {
@@ -169,7 +170,7 @@ unmarsal_value :: proc(p: ^Parser, v: any) -> (err: Unmarshal_Error) {
if assign_float(v, i) { if assign_float(v, i) {
return return
} }
return return UNSUPPORTED_TYPE
case .Float: case .Float:
advance_token(p) advance_token(p)
f, _ := strconv.parse_f64(token.text) f, _ := strconv.parse_f64(token.text)
@@ -276,8 +277,7 @@ unmarsal_value :: proc(p: ^Parser, v: any) -> (err: Unmarshal_Error) {
} }
advance_token(p) advance_token(p)
return return UNSUPPORTED_TYPE
} }
@@ -344,7 +344,6 @@ unmarsal_object :: proc(p: ^Parser, v: any) -> (err: Unmarshal_Error) {
type := fields[use_field_idx].type type := fields[use_field_idx].type
name := fields[use_field_idx].name name := fields[use_field_idx].name
field_ptr := rawptr(uintptr(v.data) + offset) field_ptr := rawptr(uintptr(v.data) + offset)
field := any{field_ptr, type.id} field := any{field_ptr, type.id}
unmarsal_value(p, field) or_return unmarsal_value(p, field) or_return