Changed the signature of osrfStringArrayGetString():
[OpenSRF.git] / include / opensrf / string_array.h
index 805e1e2..57675c3 100644 (file)
@@ -1,28 +1,63 @@
-#include <stdio.h>
-
-#include "opensrf/generic_utils.h"
+/**
+       @file string_array.h
+       @brief Header for osrfStringArray, a vector of strings.
 
-#define STRING_ARRAY_MAX_SIZE 1024
+       An osrfStringArray manages an array of character pointers pointing to nul-terminated
+       strings.  New entries are added at the end.  When a string is removed, entries above
+       it are shifted down to fill in the gap.
+*/
 
 #ifndef STRING_ARRAY_H
 #define STRING_ARRAY_H
 
-struct string_array_struct {
-               char** array;   
-               int size;
-               int arr_size;
-               int total_string_size;
-};
-typedef struct string_array_struct string_array;
+#include <stdio.h>
+
+#include <opensrf/utils.h>
+#include <opensrf/log.h>
+#include <opensrf/osrf_list.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+       @brief Maximum number of strings in an osrfStringArray.
+
+       This ostensible limit is not enforced.  If you exceed it, you'll get an error message,
+       but only as a slap on the wrist.  You'll still get your big list of strings.
+*/
+#define STRING_ARRAY_MAX_SIZE 4096
 
-string_array* init_string_array(int size);
-void string_array_add(string_array*, char* string);
+/** @brief Macro version of osrfStringArrayFree() */
+#define OSRF_STRING_ARRAY_FREE(arr) osrfListFree( (osrfList*) (arr) )
 
-char* string_array_get_string(string_array* arr, int index);
-void string_array_destroy(string_array*);
+/**
+       @brief Structure of an osrfStringArray.
+*/
+typedef struct {
+       /** @brief The underlying container of pointers. */
+    osrfList list;
+       /** @brief The number of strings stored. */
+       int size;    // redundant with list.size
+} osrfStringArray;
 
-/* total size of all included strings */
-int string_array_get_total_size(string_array* arr);
+osrfStringArray* osrfNewStringArray( int size );
 
+void osrfStringArrayAdd( osrfStringArray*, const char* str );
+
+const char* osrfStringArrayGetString( const osrfStringArray* arr, int index );
+
+int osrfStringArrayContains(
+       const osrfStringArray* arr, const char* string );
+
+void osrfStringArrayFree( osrfStringArray* );
+
+void osrfStringArrayRemove( osrfStringArray* arr, const char* str );
+
+osrfStringArray* osrfStringArrayTokenize( const char* src, char delim );
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif