| 2599 | } |
| 2600 | |
| 2601 | GJS_JSAPI_RETURN_CONVENTION |
| 2602 | static 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 | |
| 2640 | GJS_JSAPI_RETURN_CONVENTION |
| 2641 | bool gjs_array_from_g_value_array(JSContext* cx, JS::MutableHandleValue value_p, |
no test coverage detected