diff --git a/libgimpbase/gimpbase.def b/libgimpbase/gimpbase.def index 99fd9caeef..a9da5c968a 100644 --- a/libgimpbase/gimpbase.def +++ b/libgimpbase/gimpbase.def @@ -205,6 +205,7 @@ EXPORTS gimp_units_to_points gimp_utf8_strtrim gimp_value_array_append + gimp_value_array_copy gimp_value_array_get_type gimp_value_array_index gimp_value_array_insert diff --git a/libgimpbase/gimpvaluearray.c b/libgimpbase/gimpvaluearray.c index eb21d2fd85..971e77b234 100644 --- a/libgimpbase/gimpvaluearray.c +++ b/libgimpbase/gimpvaluearray.c @@ -250,6 +250,25 @@ gimp_value_array_new_from_types_valist (gchar **error_msg, return value_array; } +/** + * gimp_value_array_copy: + * @value_array: #GimpValueArray to copy + * + * Return an exact copy of a #GimpValueArray by duplicating all its values. + * + * Returns: a newly allocated #GimpValueArray. + * + * Since: 3.0 + */ +GimpValueArray * +gimp_value_array_copy (const GimpValueArray *value_array) +{ + g_return_val_if_fail (value_array != NULL, NULL); + + return gimp_value_array_new_from_values (value_array->values, + value_array->n_values); +} + /** * gimp_value_array_new_from_values: * @values: (array length=n_values): The #GValue elements diff --git a/libgimpbase/gimpvaluearray.h b/libgimpbase/gimpvaluearray.h index ec27cbb48e..2ca4cf7704 100644 --- a/libgimpbase/gimpvaluearray.h +++ b/libgimpbase/gimpvaluearray.h @@ -53,6 +53,8 @@ GimpValueArray * gimp_value_array_new_from_values (const GValue *values, gint n_values); +GimpValueArray * gimp_value_array_copy (const GimpValueArray *value_array); + GimpValueArray * gimp_value_array_ref (GimpValueArray *value_array); void gimp_value_array_unref (GimpValueArray *value_array);