Madeorsk
46b6f24432
+ Create ksrarrays. + Create ksrbuffers. + Create ksrpromises. + Create ksregex. + Create strings and files helper functions. + Define some logging constants. + Setup basic unit tests and code coverage.
64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
#pragma once
|
|
|
|
#include <jemalloc/jemalloc.h>
|
|
#include <regex.h>
|
|
|
|
/**
|
|
* Regex structure.
|
|
*/
|
|
typedef struct {
|
|
regex_t expr;
|
|
unsigned nmatches;
|
|
char **matches;
|
|
} ksregex;
|
|
|
|
/**
|
|
* Create a ksregex from an expression.
|
|
* @param expression - the expression to compile.
|
|
* @param nmatches - the number of matches groups to get, 0 if you want none.
|
|
* @param flags - regex flags.
|
|
* @return - the created regex, NULL if an error happen.
|
|
*/
|
|
ksregex* ksregex_new(const char *expression, unsigned nmatches, int flags);
|
|
/**
|
|
* Create a ksregex from an expression with 0 match group.
|
|
* @param expression - the expression to compile.
|
|
* @param flags - regex flags.
|
|
*/
|
|
static inline ksregex* ksregex_new_nogroup(const char *expression, int flags)
|
|
{ return ksregex_new(expression, 0, flags); }
|
|
|
|
/**
|
|
* Try to match the regex with a tested string.
|
|
* @param regex - the regex to match.
|
|
* @param tested - the string that should match the regex.
|
|
* @return - true if the string matches, false otherwise.
|
|
*/
|
|
bool ksregex_matches(ksregex *regex, const char *tested);
|
|
|
|
/**
|
|
* Free ksregex matches.
|
|
*/
|
|
static inline void _ksregex_free_matches(ksregex *regex)
|
|
{
|
|
if (regex->matches)
|
|
{
|
|
// free all matches.
|
|
for (unsigned i = 0; i < regex->nmatches; i++) free(regex->matches[i]);
|
|
// free matches array.
|
|
free(regex->matches);
|
|
regex->matches = NULL;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Free a ksregex.
|
|
*/
|
|
static inline void ksregex_free(ksregex *regex)
|
|
{
|
|
// free matches groups.
|
|
_ksregex_free_matches(regex);
|
|
|
|
free(regex); // free regex data.
|
|
}
|