ecoli_strvec - Man Page

Name

ecoli_strvec — String vector

— Helpers for strings vectors manipulation.  

Synopsis

Macros

#define EC_STRVEC(args...)

Enumerations

enum ec_strvec_flag_t { EC_STRVEC_STRICT = 0x1, EC_STRVEC_TRAILSP = 0x2 }

Functions

struct ec_strvec * ec_strvec (void)
struct ec_strvec * ec_strvec_from_array (const char *const *strarr, size_t n)
struct ec_strvec * ec_strvec_sh_lex_str (const char *str, ec_strvec_flag_t flags, char *unclosed_quote)
int ec_strvec_set (struct ec_strvec *strvec, size_t idx, const char *s)
int ec_strvec_add (struct ec_strvec *strvec, const char *s)
int ec_strvec_del_last (struct ec_strvec *strvec)
struct ec_strvec * ec_strvec_dup (const struct ec_strvec *strvec)
struct ec_strvec * ec_strvec_ndup (const struct ec_strvec *strvec, size_t off, size_t len)
void ec_strvec_free (struct ec_strvec *strvec)
size_t ec_strvec_len (const struct ec_strvec *strvec)
const char * ec_strvec_val (const struct ec_strvec *strvec, size_t idx)
const struct ec_dict * ec_strvec_get_attrs (const struct ec_strvec *strvec, size_t idx)
int ec_strvec_set_attrs (struct ec_strvec *strvec, size_t idx, struct ec_dict *attrs)
int ec_strvec_cmp (const struct ec_strvec *strvec1, const struct ec_strvec *strvec2)
void ec_strvec_sort (struct ec_strvec *strvec, int(*str_cmp)(const char *s1, const char *s2))
void ec_strvec_dump (FILE *out, const struct ec_strvec *strvec)

Detailed Description

Helpers for strings vectors manipulation.

The ec_strvec API provide helpers to manipulate string vectors. When duplicating vectors, the strings are not duplicated in memory, a reference counter is used.

Macro Definition Documentation

#define EC_STRVEC( args...)

Value:

            ({                      \
            const char *_arr[] = {args};            \
            ec_strvec_from_array(_arr, EC_COUNT_OF(_arr));  \
        })

Allocate a new string vector

The string vector is initialized with the list of const strings passed as arguments.

Returns

The new strvec object, or NULL on error (errno is set).

Definition at line 41 of file ecoli_strvec.h.

Enumeration Type Documentation

enum ec_strvec_flag_t

Options for ec_strvec_sh_lex_str().

Enumerator

EC_STRVEC_STRICT

Fail if a quote is not closed properly or if the provided string ends with an unterminated escape sequence.

EC_STRVEC_TRAILSP

If there is trailing white space, add an empty element to the output string vector.

Definition at line 64 of file ecoli_strvec.h.

Function Documentation

struct ec_strvec * ec_strvec (void )

Allocate a new empty string vector.

Returns

The new strvec object, or NULL on error (errno is set).

struct ec_strvec * ec_strvec_from_array (const char *const * strarr, size_t n)

Allocate a new string vector

The string vector is initialized with the array of const strings passed as arguments.

Parameters

strarr The array of const strings.
n The number of strings in the array.

Returns

The new strvec object, or NULL on error (errno is set).

struct ec_strvec * ec_strvec_sh_lex_str (const char * str, ec_strvec_flag_t flags, char * unclosed_quote)

Split a string into multiple tokens following basic shell lexing rules.

Parameters

str The string to split.
flags Options for controlling behavior.
unclosed_quote If not NULL and if the provided string has an unterminated quote. The opening quote will be stored here.

Returns

The new strvec object, or NULL on error (errno is set).

int ec_strvec_set (struct ec_strvec * strvec, size_t idx, const char * s)

Set a string in the vector at specified index.

Parameters

strvec The pointer to the string vector.
idx The index of the string to set.
s The string to be set.

Returns

0 on success or -1 on error (errno is set).

int ec_strvec_add (struct ec_strvec * strvec, const char * s)

Add a string in a vector.

Parameters

strvec The pointer to the string vector.
s The string to be added at the end of the vector.

Returns

0 on success or -1 on error (errno is set).

int ec_strvec_del_last (struct ec_strvec * strvec)

Delete the last entry in the string vector.

Parameters

strvec The pointer to the string vector.

Returns

0 on success or -1 on error (errno is set).

struct ec_strvec * ec_strvec_dup (const struct ec_strvec * strvec)

Duplicate a string vector.

Attributes are duplicated if any.

Parameters

strvec The pointer to the string vector.

Returns

The duplicated strvec object, or NULL on error (errno is set).

struct ec_strvec * ec_strvec_ndup (const struct ec_strvec * strvec, size_t off, size_t len)

Duplicate a part of a string vector.

Attributes are duplicated if any.

Parameters

strvec The pointer to the string vector.
off The index of the first string to duplicate.
len The number of strings to duplicate.

Returns

The duplicated strvec object, or NULL on error (errno is set).

void ec_strvec_free (struct ec_strvec * strvec)

Free a string vector.

Parameters

strvec The pointer to the string vector.

size_t ec_strvec_len (const struct ec_strvec * strvec)

Get the length of a string vector.

Parameters

strvec The pointer to the string vector.

Returns

The length of the vector.

const char * ec_strvec_val (const struct ec_strvec * strvec, size_t idx)

Get a string element from a vector.

Parameters

strvec The pointer to the string vector.
idx The index of the string to get.

Returns

The string stored at given index, or NULL on error (strvec is NULL or invalid index).

const struct ec_dict * ec_strvec_get_attrs (const struct ec_strvec * strvec, size_t idx)

Get the attributes of a vector element.

Parameters

strvec The pointer to the string vector.
idx The index of the string to get.

Returns

The read-only attributes (dictionnary) of the string at specified index, or NULL if there is no attribute.

int ec_strvec_set_attrs (struct ec_strvec * strvec, size_t idx, struct ec_dict * attrs)

Set the attributes of a vector element.

Parameters

strvec The pointer to the string vector.
idx The index of the string to get.
attrs The attributes to be set.

Returns

0 on success, -1 on error (errno is set). On error, attrs are freed and must not be used by the caller.

int ec_strvec_cmp (const struct ec_strvec * strvec1, const struct ec_strvec * strvec2)

Compare two string vectors

Parameters

strvec1 The pointer to the first string vector.
strvec2 The pointer to the second string vector.

Returns

0 if the string vectors are equal.

void ec_strvec_sort (struct ec_strvec * strvec, int(* str_cmp )(const char *s1, const char *s2))

Sort the string vector.

Attributes are not compared.

Parameters

strvec The pointer to the first string vector.
str_cmp The sort function to use. If NULL, use strcmp.

void ec_strvec_dump (FILE * out, const struct ec_strvec * strvec)

Dump a string vector.

Parameters

out The stream where the dump is sent.
strvec The pointer to the string vector.

Author

Generated automatically by Doxygen for Libecoli from the source code.

Referenced By

The man pages ec_strvec(3), EC_STRVEC(3), ec_strvec_add(3), ec_strvec_cmp(3), ec_strvec_del_last(3), ec_strvec_dump(3), ec_strvec_dup(3), ec_strvec_flag_t(3), ec_strvec_free(3), ec_strvec_from_array(3), ec_strvec_get_attrs(3), ec_strvec_len(3), ec_strvec_ndup(3), ec_strvec_set(3), ec_strvec_set_attrs(3), ec_strvec_sh_lex_str(3), ec_strvec_sort(3), EC_STRVEC_STRICT(3), EC_STRVEC_TRAILSP(3) and ec_strvec_val(3) are aliases of ecoli_strvec(3).

Version 0.3.0 Libecoli