diff options
author | Corey Farrell <git@cfware.com> | 2017-11-19 21:10:09 -0500 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2018-01-15 13:25:45 -0500 |
commit | 35ae99c712d2b0de2f780269fbabf8ceaf8c11ec (patch) | |
tree | f5db97084e6c5a4a2799e1f9080fff84d0baaeff /include | |
parent | 6f1f16d88720db2f0c29f323dce2ba065cb0c9ce (diff) |
vector: Additional string vector definitions.
ast_vector_string_split:
This function will add items to an ast_vector_string by splitting values
of a string buffer. Items are appended to the vector in the order they
are found.
ast_vector_const_string:
A vector of 'const char *'.
Change-Id: I1bf02a1efeb2baeea11c59c557d39dd1197494d7
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/vector.h | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/include/asterisk/vector.h b/include/asterisk/vector.h index 8bd1cefef..d1b2973bf 100644 --- a/include/asterisk/vector.h +++ b/include/asterisk/vector.h @@ -51,8 +51,38 @@ /*! \brief Integer vector definition */ AST_VECTOR(ast_vector_int, int); -/*! \brief String vector definition */ +/*! \brief String vector definitions */ AST_VECTOR(ast_vector_string, char *); +AST_VECTOR(ast_vector_const_string, const char *); + +/*! Options to override default processing of ast_vector_string_split. */ +enum ast_vector_string_split_flags { + /*! Do not trim whitespace from values. */ + AST_VECTOR_STRING_SPLIT_NO_TRIM = 0x01, + /*! Append empty strings to the vector. */ + AST_VECTOR_STRING_SPLIT_ALLOW_EMPTY = 0x02, +}; + +/*! + * \brief Append a string vector by splitting a string. + * + * \param dest Pointer to an initialized vector. + * \param input String buffer to split. + * \param delim String delimeter passed to strsep. + * \param flags Processing options defined by \ref enum ast_vector_string_split_flags. + * \param excludes_cmp NULL or a function like strcmp to exclude duplicate strings. + * + * \retval 0 Success + * \retval -1 Failure + * + * \note All elements added to the vector are allocated. The caller is always + * responsible for calling ast_free on each element in the vector even + * after failure. It's possible for this function to successfully add + * some elements before failing. + */ +int ast_vector_string_split(struct ast_vector_string *dest, + const char *input, const char *delim, int flags, + int (*excludes_cmp)(const char *s1, const char *s2)); /*! * \brief Define a vector structure with a read/write lock |