basic-types/arrays.vala \
basic-types/pointers.vala \
basic-types/sizeof.vala \
+ basic-types/garray.vala \
basic-types/glists.vala \
basic-types/bug571486.vala \
basic-types/bug591552.vala \
--- /dev/null
+class Foo : Object {
+}
+
+void main () {
+ var array = new GLib.Array<Foo> ();
+
+ var foo = new Foo ();
+ assert (foo.ref_count == 1);
+
+ array.append_val (foo);
+ assert (foo.ref_count == 2);
+ array.remove_index (0);
+ assert (foo.ref_count == 1);
+
+ array.append_val (foo);
+ assert (foo.ref_count == 2);
+ array.remove_index_fast (0);
+ assert (foo.ref_count == 1);
+
+ array.append_val (foo);
+ assert (foo.ref_count == 2);
+ array.remove_range (0, 1);
+ assert (foo.ref_count == 1);
+}
public void prepend_vals (void* data, uint len);
public void insert_val (uint index, owned G value);
public void insert_vals (uint index, void* data, uint len);
- public void remove_index (uint index);
- public void remove_index_fast (uint index);
- public void remove_range (uint index, uint length);
+ [CCode (cname = "g_array_remove_index")]
+ public void _remove_index (uint index);
+ [CCode (cname = "g_array_remove_index_fast")]
+ public void _remove_index_fast (uint index);
+ [CCode (cname = "g_array_remove_range")]
+ public void _remove_range (uint index, uint length);
+ [CCode (cname = "vala_g_array_remove_index")]
+ public G remove_index (uint index) {
+ assert (length > index);
+ G g = data[index];
+ _remove_index (index);
+ return g;
+ }
+ [CCode (cname = "vala_g_array_remove_index_fast")]
+ public G remove_index_fast (uint index) {
+ assert (length > index);
+ G g = data[index];
+ _remove_index_fast (index);
+ return g;
+ }
+ [CCode (cname = "vala_g_array_remove_range")]
+ public G[] remove_range (uint index, uint length) {
+ assert (this.length >= index + length);
+ G[] ga = new G[length];
+ for (uint i = 0; i < length; i++) {
+ ga[i] = data[i + index];
+ }
+ _remove_range (index, length);
+ return ga;
+ }
public void sort (CompareFunc<G> compare_func);
public void sort_with_data (CompareDataFunc<G> compare_func);
[CCode (generic_type_pos = 0.1)]