MCPcopy Create free account
hub / github.com/GNOME/gjs / gjs_array_from_boxed_array

Function gjs_array_from_boxed_array

gi/arg.cpp:2601–2638  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2599}
2600
2601GJS_JSAPI_RETURN_CONVENTION
2602static bool gjs_array_from_boxed_array(JSContext* cx,
2603 JS::MutableHandleValue value_p,
2604 GIArrayType array_type,
2605 const GI::TypeInfo& element_type,
2606 GITransfer transfer, GIArgument* arg) {
2607 if (!gjs_arg_get<void*>(arg)) {
2608 value_p.setNull();
2609 return true;
2610 }
2611
2612 GArray* array;
2613 GPtrArray* ptr_array;
2614 void* data = nullptr;
2615
2616 size_t length = 0;
2617 switch (array_type) {
2618 case GI_ARRAY_TYPE_BYTE_ARRAY:
2619 // GByteArray is just a typedef for GArray internally
2620 case GI_ARRAY_TYPE_ARRAY:
2621 array = gjs_arg_get<GArray*>(arg);
2622 data = array->data;
2623 length = array->len;
2624 break;
2625 case GI_ARRAY_TYPE_PTR_ARRAY:
2626 ptr_array = gjs_arg_get<GPtrArray*>(arg);
2627 data = ptr_array->pdata;
2628 length = ptr_array->len;
2629 break;
2630 case GI_ARRAY_TYPE_C:
2631 // already checked in gjs_value_from_gi_argument()
2632 default:
2633 g_assert_not_reached();
2634 }
2635
2636 return gjs_array_from_carray_internal(cx, value_p, array_type, element_type,
2637 transfer, length, data);
2638}
2639
2640GJS_JSAPI_RETURN_CONVENTION
2641bool gjs_array_from_g_value_array(JSContext* cx, JS::MutableHandleValue value_p,

Callers 1

Calls 1

Tested by

no test coverage detected