1*d95af8dfSAndroid Build Coastguard Worker /* 2*d95af8dfSAndroid Build Coastguard Worker * Copyright 2017 The Chromium OS Authors. All rights reserved. 3*d95af8dfSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 4*d95af8dfSAndroid Build Coastguard Worker * found in the LICENSE file. 5*d95af8dfSAndroid Build Coastguard Worker */ 6*d95af8dfSAndroid Build Coastguard Worker 7*d95af8dfSAndroid Build Coastguard Worker #ifndef DRV_ARRAY_HELPERS_H 8*d95af8dfSAndroid Build Coastguard Worker #define DRV_ARRAY_HELPERS_H 9*d95af8dfSAndroid Build Coastguard Worker 10*d95af8dfSAndroid Build Coastguard Worker #include <stdint.h> 11*d95af8dfSAndroid Build Coastguard Worker 12*d95af8dfSAndroid Build Coastguard Worker struct drv_array; 13*d95af8dfSAndroid Build Coastguard Worker 14*d95af8dfSAndroid Build Coastguard Worker struct drv_array *drv_array_init(uint32_t item_size); 15*d95af8dfSAndroid Build Coastguard Worker 16*d95af8dfSAndroid Build Coastguard Worker /* The data will be copied and appended to the array. */ 17*d95af8dfSAndroid Build Coastguard Worker void *drv_array_append(struct drv_array *array, void *data); 18*d95af8dfSAndroid Build Coastguard Worker 19*d95af8dfSAndroid Build Coastguard Worker /* The data at the specified index will be freed -- the array will shrink. */ 20*d95af8dfSAndroid Build Coastguard Worker void drv_array_remove(struct drv_array *array, uint32_t idx); 21*d95af8dfSAndroid Build Coastguard Worker 22*d95af8dfSAndroid Build Coastguard Worker void *drv_array_at_idx(struct drv_array *array, uint32_t idx); 23*d95af8dfSAndroid Build Coastguard Worker 24*d95af8dfSAndroid Build Coastguard Worker uint32_t drv_array_size(struct drv_array *array); 25*d95af8dfSAndroid Build Coastguard Worker 26*d95af8dfSAndroid Build Coastguard Worker /* The array and all associated data will be freed. */ 27*d95af8dfSAndroid Build Coastguard Worker void drv_array_destroy(struct drv_array *array); 28*d95af8dfSAndroid Build Coastguard Worker 29*d95af8dfSAndroid Build Coastguard Worker #endif 30