Mercurial > hg > th-libs
view th_regex.h @ 664:c5aa9ada1051
s/th_regex_char_t/th_char_t/g
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 27 Jan 2020 07:48:27 +0200 |
parents | ae601363fdad |
children | 7493d4c9ff77 |
line wrap: on
line source
/* * Simple regular expression matching functionality * Programmed and designed by Matti 'ccr' Hamalainen * (C) Copyright 2020 Tecnic Software productions (TNSP) * * Please read file 'COPYING' for information on license and distribution. */ /// @file /// @brief Simple regular expression matching functionality #ifndef TH_REGEX_H #define TH_REGEX_H #include "th_datastruct.h" #include "th_ioctx.h" #ifdef __cplusplus extern "C" { #endif // // Definitions // /** @struct th_regex_t * Structure containing the tokenized / compiled regular expression. */ struct th_regex_t; typedef struct th_regex_t th_regex_t; /** @brief * Linked list structure containing the information for matched * sequences returned by th_regex_match(). */ typedef struct { th_llist_t node; ///< Internal linked list data size_t start; ///< Start offset of the match sequence in @p haystack in @c th_char_t units. size_t len; ///< Length of the match sequence in @p haystack in @c th_char_t units. } th_regex_match_t; // Flags for th_regex_match() // (not actually used or supported yet :D) enum { TH_REF_CASEFOLD = 0x0001, TH_REF_ANCHORED = 0x0002, }; #ifdef TH_EXPERIMENTAL_REGEX_DEBUG extern th_ioctx *th_dbg_fh; #endif // // Functions // int th_regex_compile(th_regex_t **pexpr, const th_char_t *pattern); void th_regex_free(th_regex_t *expr); void th_regex_dump(th_ioctx *fh, const int level, const th_regex_t *expr); int th_regex_match(const th_regex_t *expr, const th_char_t *haystack, size_t *pnmatches, th_regex_match_t **pmatches, const size_t maxmatches, const int flags); void th_regex_free_matches(th_regex_match_t *matches); #ifdef __cplusplus } #endif #endif // TH_REGEX_H