Некоторые методы Gimp, предоставляемые с помощью GI (GObject introspection), ожидают GValue, значением которого является GArray of float. В Python могу ли я создать массив array.array с плавающей точкой и ожидать, что PyGObject правильно его перенаправит в GArray? (грубо говоря, указатель на число с плавающей точкой и целое число элементов в массиве.)
В частности, Gimp 2.99 (ветвь разработки) имеет в своем API:
@accepts(GObject.Value, float, gsize)
@returns(none)
def value_set_float_array(value, array, length):
# Python wrapper for gimp_value_set_float_array()
IOW действительно ожидает адрес (указатель) на первый float из множества float, смежных в памяти, «массив». Если в Python я создам массив array.array, содержащий четыре числа с плавающей точкой, и передам его в качестве второго аргумента в Gimp.value_set_float_array (), будет ли PyGObject делать правильные вещи?
Я знаю, что могу просто попробовать, или прочитайте код PyGObject. Но даже если бы я мог заставить его работать, я считаю, что Gimp API мог бы быть лучше, если бы у него был конструктор для GValue (или конструктор для другого типа Gimp Gimp.FloatArray), который принимает GArray. Тогда я понимаю, что PyGObject будет автоматически компилировать список Python с плавающей точкой в GArray. Другими словами, мой вопрос касается руководства по архитектуре интроспективного API GObject.
Gimp поддерживает другие привязки, такие как Lua и Scheme. Мне кажется, что Gimp должен поддерживать аргументы GArray, которые, вероятно, будут поддерживать все привязки.
(Вопрос возникает из-за попытки использовать тип Gimp.FloatArray, который не является GObject. Может быть, проблема больше, что Gimp должен основывать Gimp.FloatArray на GObject?)