1 #include "string_array.h"
3 osrfStringArray* osrfNewStringArray(int size) {
4 return init_string_array(size);
7 string_array* init_string_array(int size) {
8 if(size > STRING_ARRAY_MAX_SIZE)
9 fatal_handler("init_string_array size is too large");
12 (string_array*) safe_malloc(sizeof(string_array));
13 arr->array = (char**) safe_malloc(size * sizeof(char*));
20 void osrfStringArrayAdd(osrfStringArray* arr, char* string) {
21 string_array_add(arr, string);
24 void string_array_add(string_array* arr, char* str) {
25 if(arr == NULL || str == NULL ) return;
26 if( strlen(str) < 1 ) return;
30 if( arr->size > STRING_ARRAY_MAX_SIZE )
31 fatal_handler("string_array_add size is too large");
33 /* if necessary, double capacity */
34 if(arr->size >= arr->arr_size) {
36 char** tmp = (char**) safe_malloc(arr->arr_size * sizeof(char*));
39 /* copy the string pointers over */
40 for( i = 0; i!= arr->size; i++ )
41 tmp[i] = arr->array[i];
47 arr->array[arr->size - 1] = strdup(str);
50 char* osrfStringArrayGetString(osrfStringArray* arr, int index) {
51 return string_array_get_string(arr, index);
54 char* string_array_get_string(string_array* arr, int index) {
55 if(!arr || index < 0 || index >= arr->size ) return NULL;
56 return arr->array[index];
60 void osrfStringArrayFree(osrfStringArray* arr) {
61 string_array_destroy(arr);
64 void string_array_destroy(string_array* arr) {
67 while( i++ < arr->size ) free(arr->array[i]);