mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-24 05:20:17 +00:00
Update cJSONw.cpp
This commit is contained in:
parent
b3e77cdb51
commit
ac5bc5ea0e
@ -6,8 +6,8 @@ namespace pkpy{
|
||||
static cJSON* convert_python_object_to_cjson(PyObject* obj, VM* vm);
|
||||
static PyObject* convert_cjson_to_python_object(const cJSON * const item, VM* vm);
|
||||
|
||||
|
||||
static cJSON* convert_list_to_cjson(const List& list, VM* vm){
|
||||
template<typename T>
|
||||
static cJSON* convert_list_to_cjson(const T& list, VM* vm){
|
||||
cJSON *cjson_list = cJSON_CreateArray();
|
||||
for(auto& element : list){
|
||||
cJSON_AddItemToArray(cjson_list, convert_python_object_to_cjson(element, vm));
|
||||
@ -15,14 +15,6 @@ static cJSON* convert_list_to_cjson(const List& list, VM* vm){
|
||||
return cjson_list;
|
||||
}
|
||||
|
||||
static cJSON* convert_tuple_to_cjson(const Tuple& tuple, VM* vm){
|
||||
cJSON *cjson_list = cJSON_CreateArray();
|
||||
for(auto& element : tuple){
|
||||
cJSON_AddItemToArray(cjson_list, convert_python_object_to_cjson(element, vm));
|
||||
}
|
||||
return cjson_list;
|
||||
}
|
||||
|
||||
static cJSON* covert_dict_to_cjson(const Dict& dict, VM* vm){
|
||||
cJSON *cjson_object = cJSON_CreateObject();
|
||||
dict.apply([&](PyObject* key, PyObject* val){
|
||||
@ -49,10 +41,10 @@ static cJSON* convert_python_object_to_cjson(PyObject* obj, VM* vm){
|
||||
return covert_dict_to_cjson(_CAST(Dict&, obj), vm);
|
||||
}
|
||||
else if (obj_t == vm->tp_list){
|
||||
return convert_list_to_cjson(_CAST(List&, obj), vm);
|
||||
return convert_list_to_cjson<List>(_CAST(List&, obj), vm);
|
||||
}
|
||||
else if(obj_t == vm->tp_tuple){
|
||||
return convert_tuple_to_cjson(_CAST(Tuple&, obj), vm);
|
||||
return convert_list_to_cjson<Tuple>(_CAST(Tuple&, obj), vm);
|
||||
}else if(obj == vm->None){
|
||||
return cJSON_CreateNull();
|
||||
}else{
|
||||
@ -136,7 +128,9 @@ void add_module_cjson(VM* vm){
|
||||
cJSON* cjson = convert_python_object_to_cjson(args[0], vm);
|
||||
char* str = cJSON_Print(cjson);
|
||||
cJSON_Delete(cjson);
|
||||
return VAR(Str(str));
|
||||
PyObject* ret = VAR((const char*)str);
|
||||
hooks.free_fn(str);
|
||||
return ret;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user