1 #include "string_array.h"
5 string_array* arr = init_string_array(1);
6 string_array_add(arr, "1");
7 fprintf(stderr,"adding 3\n");
8 string_array_add(arr, "3");
9 string_array_destroy(arr);
16 string_array* init_string_array(int size) {
17 if(size > STRING_ARRAY_MAX_SIZE)
18 fatal_handler("init_string_array size is too large");
21 (string_array*) safe_malloc(sizeof(string_array));
22 arr->array = (char**) safe_malloc(size * sizeof(char*));
29 void string_array_add(string_array* arr, char* str) {
30 if(arr == NULL || str == NULL ) {
31 warning_handler("Invalid params to string_array_add");
35 if( strlen(str) < 1 ) return;
38 //fprintf(stderr,"size is %d\n", arr->size);
40 if( arr->size > STRING_ARRAY_MAX_SIZE )
41 fatal_handler("string_array_add size is too large");
43 /* if necessary, double capacity */
44 if(arr->size >= arr->arr_size) {
46 debug_handler("string_array: Doubling array size to %d", arr->arr_size);
47 char** tmp = (char**) safe_malloc(arr->arr_size * sizeof(char*));
50 /* copy the string pointers over */
51 for( i = 0; i!= arr->size; i++ )
52 tmp[i] = arr->array[i];
58 //fprintf(stderr, "String is %s", str);
59 //debug_handler("string_array_add: Adding string %s", str);
60 //arr->array[arr->size - 1] = (char*) safe_malloc(strlen(str));
61 arr->array[arr->size - 1] = strdup(str);
62 //fprintf(stderr,"we have %s\n", arr->array[arr->size - 1]);
65 char* string_array_get_string(string_array* arr, int index) {
66 if(!arr || index < 0 || index >= arr->size )
68 char* str = arr->array[index];
71 warning_handler("Somehow we have a NULL string in the string array");
73 //debug_handler("string_array_get_string: getting string %s", str);
78 void string_array_destroy(string_array* arr) {
81 for( i = 0; i!= arr->size; i++ ) {
82 if( arr->array[i] != NULL ) {
83 //debug_handler("Freeing string from string array %s", arr->array[i]);