mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 19:40:18 +00:00
...
This commit is contained in:
parent
11fba94c54
commit
56d66ad980
@ -24,29 +24,17 @@ static cJSON* covert_dict_to_cjson(const Dict& dict, VM* vm){
|
|||||||
}
|
}
|
||||||
|
|
||||||
static cJSON* convert_python_object_to_cjson(PyObject* obj, VM* vm){
|
static cJSON* convert_python_object_to_cjson(PyObject* obj, VM* vm){
|
||||||
|
if(obj == vm->None) return cJSON_CreateNull();
|
||||||
Type obj_t = vm->_tp(obj);
|
Type obj_t = vm->_tp(obj);
|
||||||
if (obj_t == vm->tp_int){
|
switch(obj_t){
|
||||||
return cJSON_CreateNumber(_CAST(i64, obj));
|
case VM::tp_int.index: cJSON_CreateNumber(_CAST(i64, obj));
|
||||||
}
|
case VM::tp_float.index: cJSON_CreateNumber(_CAST(f64, obj));
|
||||||
else if (obj_t == vm->tp_float){
|
case VM::tp_bool.index: cJSON_CreateBool(obj == vm->True);
|
||||||
return cJSON_CreateNumber(_CAST(f64, obj));
|
case VM::tp_str.index: cJSON_CreateString(_CAST(Str&, obj).c_str());
|
||||||
}
|
case VM::tp_dict.index: return covert_dict_to_cjson(_CAST(Dict&, obj), vm);
|
||||||
else if (obj_t == vm->tp_bool){
|
case VM::tp_list.index: return convert_list_to_cjson<List>(_CAST(List&, obj), vm);
|
||||||
return cJSON_CreateBool(obj == vm->True);
|
case VM::tp_tuple.index: return convert_list_to_cjson<Tuple>(_CAST(Tuple&, obj), vm);
|
||||||
}
|
default: break;
|
||||||
else if (obj_t == vm->tp_str){
|
|
||||||
return cJSON_CreateString(_CAST(Str&, obj).c_str());
|
|
||||||
}
|
|
||||||
else if (obj_t == vm->tp_dict){
|
|
||||||
return covert_dict_to_cjson(_CAST(Dict&, obj), vm);
|
|
||||||
}
|
|
||||||
else if (obj_t == vm->tp_list){
|
|
||||||
return convert_list_to_cjson<List>(_CAST(List&, obj), vm);
|
|
||||||
}
|
|
||||||
else if(obj_t == vm->tp_tuple){
|
|
||||||
return convert_list_to_cjson<Tuple>(_CAST(Tuple&, obj), vm);
|
|
||||||
}else if(obj == vm->None){
|
|
||||||
return cJSON_CreateNull();
|
|
||||||
}
|
}
|
||||||
vm->TypeError(fmt("unrecognized type ", obj_type_name(vm, obj_t).escape()));
|
vm->TypeError(fmt("unrecognized type ", obj_type_name(vm, obj_t).escape()));
|
||||||
PK_UNREACHABLE()
|
PK_UNREACHABLE()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user