Hi, I'm new to Vala and have run into an issue with generics and arrays.
Consider this example:
public class Vector<T> {
internal T[] items;
....
public Vector.from(T[] source) {
....
}
}
This allows me to conveniently initialize the vector like this:
new Vector<string>.from({"Fred", "Daphne", "Velma"})
But the problem arises that if I do the same thing with integers:
new Vector<int>.from({1, 2, 3})
Vala doesn't complain but the c compiler does because the generic is
representing the array as a gpointer* where outside the generic the array
is gint*. Since the size of the types is different I can't correctly
access an integer array from within a generic nor can I correctly pass a
gpointer* back to a gint*. So while it compiles, the results are wrong
because when I use the array it is moving across the array at the wrong
stride. To illustrate my point, this works correctly because the size is
compatible on my system:
new Vector<long>.from({1l, 2l, 3l})
Is there anything I can do to check the type or size of T in the generic to
provide custom type/size specific initialization? Or is there some other
technique I might employ other than creating non-generic containers
(IntVector, BoolVector, etc..)?
Best,
James
_______________________________________________
vala-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/vala-list