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

Function gjs_value_to_basic_array_gi_argument

gi/arg.cpp:1875–1918  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1873}
1874
1875bool gjs_value_to_basic_array_gi_argument(JSContext* cx, JS::HandleValue value,
1876 GITypeTag element_tag,
1877 GIArrayType array_type,
1878 GIArgument* arg, const char* arg_name,
1879 GjsArgumentType arg_type,
1880 GjsArgumentFlags flags) {
1881 Gjs::AutoPointer<void> data;
1882 size_t length;
1883 if (!gjs_array_to_basic_explicit_array(cx, value, element_tag, arg_name,
1884 arg_type, flags, data.out(),
1885 &length)) {
1886 return false;
1887 }
1888
1889 switch (array_type) {
1890 case GI_ARRAY_TYPE_C:
1891 gjs_arg_set(arg, data.release());
1892 return true;
1893
1894 case GI_ARRAY_TYPE_ARRAY: {
1895 GArray* array = garray_new_for_basic_type(length, element_tag);
1896
1897 if (data)
1898 g_array_append_vals(array, data, length);
1899 gjs_arg_set(arg, array);
1900 return true;
1901 }
1902
1903 case GI_ARRAY_TYPE_BYTE_ARRAY:
1904 return gjs_value_to_byte_array_gi_argument(cx, value, arg, arg_name,
1905 flags);
1906
1907 case GI_ARRAY_TYPE_PTR_ARRAY: {
1908 GPtrArray* array = g_ptr_array_sized_new(length);
1909
1910 g_ptr_array_set_size(array, length);
1911 if (data)
1912 memcpy(array->pdata, data, sizeof(void*) * length);
1913 gjs_arg_set(arg, array);
1914 return true;
1915 }
1916 }
1917 g_assert_not_reached();
1918}
1919
1920bool gjs_value_to_byte_array_gi_argument(JSContext* cx, JS::HandleValue value,
1921 GIArgument* arg, const char* arg_name,

Callers 5

inMethod · 0.85
inMethod · 0.85
inMethod · 0.85
inMethod · 0.85
gjs_value_to_gi_argumentFunction · 0.85

Calls 6

gjs_arg_setFunction · 0.85
outMethod · 0.45
releaseMethod · 0.45

Tested by

no test coverage detected