14 typedef const char * ARGstr_t;
15 typedef ARGstr_t * ARGV_t;
17 typedef int * ARGint_t;
22 typedef struct ARGI_s * ARGI_t;
25 * Print argv array elements.
26 * @param msg output message prefix (or NULL)
27 * @param argv argv array
28 * @param fp output file handle (NULL uses stderr)
30 void argvPrint(const char * msg, ARGV_t argv, FILE * fp);
33 * Destroy an argi array.
34 * @param argi argi array
37 ARGI_t argiFree(ARGI_t argi);
40 * Destroy an argv array.
41 * @param argv argv array
44 ARGV_t argvFree(ARGV_t argv);
47 * Return no. of elements in argi array.
48 * @param argi argi array
49 * @return no. of elements
51 int argiCount(const ARGI_t argi);
54 * Return data from argi array.
55 * @param argi argi array
56 * @return argi array data address
58 ARGint_t argiData(const ARGI_t argi);
61 * Return no. of elements in argv array.
62 * @param argv argv array
63 * @return no. of elements
65 int argvCount(const ARGV_t argv);
68 * Return data from argv array.
69 * @param argv argv array
70 * @return argv array data address
72 ARGV_t argvData(const ARGV_t argv);
75 * Compare argv arrays (qsort/bsearch).
76 * @param a 1st instance address
77 * @param b 2nd instance address
78 * @return result of comparison
80 int argvCmp(const void * a, const void * b);
84 * @param argv argv array
85 * @param compar strcmp-like comparison function, or NULL for argvCmp()
88 int argvSort(ARGV_t argv, int (*compar)(const void *, const void *));
91 * Find an element in an argv array.
92 * @param argv argv array
93 * @param val string to find
94 * @param compar strcmp-like comparison function, or NULL for argvCmp()
95 * @return found string (NULL on failure)
97 ARGV_t argvSearch(ARGV_t argv, ARGstr_t val,
98 int (*compar)(const void *, const void *));
101 * Add an int to an argi array.
102 * @retval *argip argi array
103 * @param ix argi array index (or -1 to append)
104 * @param val int arg to add
107 int argiAdd(ARGI_t * argip, int ix, int val);
110 * Add a string to an argv array.
111 * @retval *argvp argv array
112 * @param val string arg to append
115 int argvAdd(ARGV_t * argvp, ARGstr_t val);
118 * Append one argv array to another.
119 * @retval *argvp argv array
120 * @param av argv array to append
123 int argvAppend(ARGV_t * argvp, const ARGV_t av);
126 * Split a string into an argv array.
127 * @retval *argvp argv array
128 * @param str string arg to split
129 * @param seps seperator characters
132 int argvSplit(ARGV_t * argvp, const char * str, const char * seps);
138 #endif /* _H_ARGV_ */