Home | History | Annotate | Download | only in libcutils

Lines Matching refs:array

17 #include <cutils/array.h>
26 struct Array {
32 Array* arrayCreate() {
33 return calloc(1, sizeof(struct Array));
36 void arrayFree(Array* array) {
37 assert(array != NULL);
39 // Free internal array.
40 free(array->contents);
42 // Free the Array itself.
43 free(array);
47 static int ensureCapacity(Array* array, int capacity) {
48 int oldCapacity = array->capacity;
71 if (array->contents == NULL) {
72 // Allocate new array.
78 // Expand existing array.
79 newContents = realloc(array->contents, sizeof(void*) * newCapacity);
85 array->capacity = newCapacity;
86 array->contents = newContents;
92 int arrayAdd(Array* array, void* pointer) {
93 assert(array != NULL);
94 int size = array->size;
95 int result = ensureCapacity(array, size + 1);
99 array->contents[size] = pointer;
100 array->size++;
104 static inline void checkBounds(Array* array, int index) {
105 assert(array != NULL);
106 assert(index < array->size);
110 void* arrayGet(Array* array, int index) {
111 checkBounds(array, index);
112 return array->contents[index];
115 void* arrayRemove(Array* array, int index) {
116 checkBounds(array, index);
118 void* pointer = array->contents[index];
120 int newSize = array->size - 1;
124 memmove(array->contents + index, array->contents + index + 1,
128 array->size = newSize;
133 void* arraySet(Array* array, int index, void* pointer) {
134 checkBounds(array, index);
135 void* old = array->contents[index];
136 array->contents[index] = pointer;
140 int arraySetSize(Array* array, int newSize) {
141 assert(array != NULL);
144 int oldSize = array->size;
148 int result = ensureCapacity(array, newSize);
154 memset(array->contents + sizeof(void*) * oldSize, 0,
158 array->size = newSize;
163 int arraySize(Array* array) {
164 assert(array != NULL);
165 return array->size;
168 const void** arrayUnwrap(Array* array) {
169 return (const void**)array->contents;