+static
+void _array_definition_free(struct definition *definition)
+{
+ struct definition_array *array =
+ container_of(definition, struct definition_array, p);
+ uint64_t i;
+
+ for (i = 0; i < array->elems->len; i++) {
+ struct field *field;
+
+ field = &g_array_index(array->elems, struct field, i);
+ field->definition->declaration->definition_free(field->definition);
+ }
+ (void) g_array_free(array->elems, TRUE);
+ free_definition_scope(array->scope);
+ declaration_unref(array->p.declaration);
+ g_free(array);
+}
+
+uint64_t array_len(struct definition_array *array)
+{
+ return array->elems->len;
+}
+
+struct definition *array_index(struct definition_array *array, uint64_t i)
+{
+ if (i >= array->elems->len)
+ return NULL;
+ return g_array_index(array->elems, struct field, i).definition;