#ifndef FIO_PARSE_PATTERN_H #define FIO_PARSE_PATTERN_H struct pattern_fmt; /** * Pattern format description. The input for 'parse_pattern'. * Describes format with its name and callback, which should * be called to paste something inside the buffer. */ struct pattern_fmt_desc { const char *fmt; unsigned int len; int (*paste)(char *buf, unsigned int len, void *priv); }; /** * Pattern format. The output of 'parse_pattern'. * Describes the exact position inside the xbuffer. */ struct pattern_fmt { unsigned int off; const struct pattern_fmt_desc *desc; }; int parse_and_fill_pattern(const char *in, unsigned int in_len, char *out, unsigned int out_len, const struct pattern_fmt_desc *fmt_desc, unsigned int fmt_desc_sz, struct pattern_fmt *fmt, unsigned int *fmt_sz_out); int paste_format_inplace(char *pattern, unsigned int pattern_len, struct pattern_fmt *fmt, unsigned int fmt_sz, void *priv); int paste_format(const char *pattern, unsigned int pattern_len, struct pattern_fmt *fmt, unsigned int fmt_sz, char *out, unsigned int out_len, void *priv); int cpy_pattern(const char *pattern, unsigned int pattern_len, char *out, unsigned int out_len); int cmp_pattern(const char *pattern, unsigned int pattern_size, unsigned int off, const char *buf, unsigned int len); #endif