2
0
Fork 0
lighttpd2/include/lighttpd/pattern.h

27 lines
1.4 KiB
C

#ifndef _LIGHTTPD_PATTERN_H_
#define _LIGHTTPD_PATTERN_H_
/* liPattern are a parsed representation of a string that can contain various placeholders like $n, %n, %{var} or {enc:var} */
/* liPattern is a GArray in disguise */
typedef GArray liPattern;
/* a pattern callback receives an integer index range [from-to] and a data pointer (usually an array) and must return a GString* which gets inserted into the pattern result
* "from" doesn't have to be smaller than "to" (allows reverse ranges)!
*/
typedef void (*liPatternCB) (GString *pattern_result, guint from, guint to, gpointer data);
/* constructs a new liPattern* by parsing the given string, returns NULL on error */
LI_API liPattern *li_pattern_new(liServer *srv, const gchar* str);
LI_API void li_pattern_free(liPattern *pattern);
/* appends the result to "dest". use (and truncate) vr->wrk->tmp_str as "dest" if possible */
LI_API void li_pattern_eval(liVRequest *vr, GString *dest, liPattern *pattern, liPatternCB nth_callback, gpointer nth_data, liPatternCB nth_prev_callback, gpointer nth_prev_data);
/* default array callback, expects a GArray* containing GString* elements */
LI_API void li_pattern_array_cb(GString *pattern_result, guint from, guint to, gpointer data);
/* default regex callback, expects a GMatchInfo* */
LI_API void li_pattern_regex_cb(GString *pattern_result, guint from, guint to, gpointer data);
#endif