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 osrfLogError( OSRF_LOG_MARK, "init_string_array size is too large");
13 (string_array*) safe_malloc(sizeof(string_array));
16 OSRF_MALLOC( arr, sizeof(string_array));
18 //arr->array = (char**) safe_malloc(size * sizeof(char*));
19 OSRF_MALLOC(arr->array, size * sizeof(char*));
27 void osrfStringArrayAdd(osrfStringArray* arr, char* string) {
28 string_array_add(arr, string);
31 void string_array_add(string_array* arr, char* str) {
32 if(arr == NULL || str == NULL ) return;
33 if( strlen(str) < 1 ) return;
37 if( arr->size > STRING_ARRAY_MAX_SIZE )
38 osrfLogError( OSRF_LOG_MARK, "string_array_add size is too large");
40 /* if necessary, double capacity */
41 if(arr->size >= arr->arr_size) {
43 //char** tmp = (char**) safe_malloc(arr->arr_size * sizeof(char*));
45 OSRF_MALLOC( tmp, arr->arr_size * sizeof(char*));
48 /* copy the string pointers over */
49 for( i = 0; i!= arr->size; i++ )
50 tmp[i] = arr->array[i];
56 arr->array[arr->size - 1] = strdup(str);
59 char* osrfStringArrayGetString(osrfStringArray* arr, int index) {
60 return string_array_get_string(arr, index);
63 char* string_array_get_string(string_array* arr, int index) {
64 if(!arr || index < 0 || index >= arr->size ) return NULL;
65 return arr->array[index];
69 void osrfStringArrayFree(osrfStringArray* arr) {
70 string_array_destroy(arr);
73 void string_array_destroy(string_array* arr) {
76 while( i < arr->size ) free(arr->array[i++]);
83 int osrfStringArrayContains( osrfStringArray* arr, char* string ) {
84 if(!(arr && string)) return 0;
87 for( i = 0; i != arr->size; i++ ) {
88 char* str = osrfStringArrayGetString(arr, i);
90 if(!strcmp(str, string)) return 1;
97 void osrfStringArrayRemove( osrfStringArray* arr, char* tstr) {
98 if(!(arr && tstr)) return;
100 for( i = 0; i != arr->size; i++ ) {
101 char* str = osrfStringArrayGetString(arr, i);
103 if(!strcmp(str, tstr)) {
105 arr->array[i] = NULL;
110 for( ; i != arr->size; i++ )
111 arr->array[i] = arr->array[i+1];