Remove ARGstr_t typedef, it serves no purpose
[platform/upstream/rpm.git] / rpmio / argv.h
1 #ifndef _H_ARGV_
2 #define _H_ARGV_
3
4 /** \ingroup rpmargv
5  * \file rpmio/argv.h
6  */
7
8 #include <stdio.h>
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 typedef char ** ARGV_t;
15
16 typedef int * ARGint_t;
17 struct ARGI_s {
18     unsigned nvals;
19     ARGint_t vals;
20 };
21 typedef struct ARGI_s * ARGI_t;
22
23 /** \ingroup rpmargv
24  * Print argv array elements.
25  * @param msg           output message prefix (or NULL)
26  * @param argv          argv array
27  * @param fp            output file handle (NULL uses stderr)
28  */
29 void argvPrint(const char * msg, ARGV_t argv, FILE * fp);
30
31 /** \ingroup rpmargv
32  * Destroy an argi array.
33  * @param argi          argi array
34  * @return              NULL always
35  */
36 ARGI_t argiFree(ARGI_t argi);
37
38 /** \ingroup rpmargv
39  * Destroy an argv array.
40  * @param argv          argv array
41  * @return              NULL always
42  */
43 ARGV_t argvFree(ARGV_t argv);
44
45 /** \ingroup rpmargv
46  * Return no. of elements in argi array.
47  * @param argi          argi array
48  * @return              no. of elements
49  */
50 int argiCount(const ARGI_t argi);
51
52 /** \ingroup rpmargv
53  * Return data from argi array.
54  * @param argi          argi array
55  * @return              argi array data address
56  */
57 ARGint_t argiData(const ARGI_t argi);
58
59 /** \ingroup rpmargv
60  * Return no. of elements in argv array.
61  * @param argv          argv array
62  * @return              no. of elements
63  */
64 int argvCount(const ARGV_t argv);
65
66 /** \ingroup rpmargv
67  * Return data from argv array.
68  * @param argv          argv array
69  * @return              argv array data address
70  */
71 ARGV_t argvData(const ARGV_t argv);
72
73 /** \ingroup rpmargv
74  * Compare argv arrays (qsort/bsearch).
75  * @param a             1st instance address
76  * @param b             2nd instance address
77  * @return              result of comparison
78  */
79 int argvCmp(const void * a, const void * b);
80
81 /** \ingroup rpmargv
82  * Sort an argv array.
83  * @param argv          argv array
84  * @param compar        strcmp-like comparison function, or NULL for argvCmp()
85  * @return              0 always
86  */
87 int argvSort(ARGV_t argv, int (*compar)(const void *, const void *));
88
89 /** \ingroup rpmargv
90  * Find an element in an argv array.
91  * @param argv          argv array
92  * @param val           string to find
93  * @param compar        strcmp-like comparison function, or NULL for argvCmp()
94  * @return              found string (NULL on failure)
95  */
96 ARGV_t argvSearch(ARGV_t argv, const char *val,
97                 int (*compar)(const void *, const void *));
98
99 /** \ingroup rpmargv
100  * Add an int to an argi array.
101  * @retval *argip       argi array
102  * @param ix            argi array index (or -1 to append)
103  * @param val           int arg to add
104  * @return              0 always
105  */
106 int argiAdd(ARGI_t * argip, int ix, int val);
107
108 /** \ingroup rpmargv
109  * Add a string to an argv array.
110  * @retval *argvp       argv array
111  * @param val           string arg to append
112  * @return              0 always
113  */
114 int argvAdd(ARGV_t * argvp, const char *val);
115
116 /** \ingroup rpmargv
117  * Append one argv array to another.
118  * @retval *argvp       argv array
119  * @param av            argv array to append
120  * @return              0 always
121  */
122 int argvAppend(ARGV_t * argvp, const ARGV_t av);
123
124 /** \ingroup rpmargv
125  * Split a string into an argv array.
126  * @retval *argvp       argv array
127  * @param str           string arg to split
128  * @param seps          seperator characters
129  * @return              0 always
130  */
131 int argvSplit(ARGV_t * argvp, const char * str, const char * seps);
132
133 #ifdef __cplusplus
134 }
135 #endif
136
137 #endif /* _H_ARGV_ */