Using acl Prefix

This commit is contained in:
2020-06-15 18:38:24 +02:00
parent c7feb38582
commit 7f968cba8e
3 changed files with 8 additions and 12 deletions

View File

@ -1,6 +1,7 @@
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
union arraylist_meta {
double dummy_double;
@ -15,7 +16,7 @@ union arraylist_meta {
};
};
void* arraylist_create(size_t array_size, size_t sizeof_one_element) {
void* acl_arraylist_create(size_t array_size, size_t sizeof_one_element) {
union arraylist_meta *arraylist_new = malloc(array_size * sizeof_one_element + sizeof*arraylist_new);
arraylist_new->len = array_size;
arraylist_new->cap = array_size;
@ -23,19 +24,14 @@ void* arraylist_create(size_t array_size, size_t sizeof_one_element) {
return arraylist_new+1;
}
void* arraylist_append(void *arraylist_void, void *element_void) {
char *element = element_void;
void* acl_arraylist_append(void *arraylist_void, void *element) {
union arraylist_meta *arraylist = arraylist_void;
--arraylist;
if(arraylist->len == arraylist->cap) {
arraylist->cap = arraylist->len + 10;
arraylist = realloc(arraylist, arraylist->cap * arraylist->sizeof_one_element + sizeof *arraylist);
}
char *arraylist_char = (char*)(arraylist+1);
arraylist_char += arraylist->sizeof_one_element * arraylist->len;
for(size_t i = 0; i < arraylist->sizeof_one_element; ++arraylist_char, ++element, ++i) {
*arraylist_char = *element;
}
memcpy((char*)(arraylist + 1) + arraylist->sizeof_one_element * arraylist->len, element, arraylist->sizeof_one_element);
++arraylist->len;
return arraylist+1;
}

View File

@ -1,5 +1,5 @@
#ifndef array_h
#define array_h
void* arraylist_create(size_t array_size, size_t sizeof_one_element);
void* arraylist_append(void *arraylist_void, void *element_void);
void* acl_arraylist_create(size_t array_size, size_t sizeof_one_element);
void* acl_arraylist_append(void *arraylist_void, void *element_void);
#endif

View File

@ -3,9 +3,9 @@
#include <stddef.h>
int main() {
int *int_array = arraylist_create(2, sizeof (int));
int *int_array = acl_arraylist_create(2, sizeof (int));
int_array[0] = 28;
int_array[1] = 20;
for(int i = 0; i < 10; ++i) arraylist_append(int_array, &i);
for(int i = 0; i < 10; ++i) acl_arraylist_append(int_array, &i);
for(int i = 0; i < 12; ++i) printf("Index: %d Value: %d\n", i, int_array[i]);
}