• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef FIO_PARSE_PATTERN_H
2 #define FIO_PARSE_PATTERN_H
3 
4 struct pattern_fmt;
5 
6 /**
7  * Pattern format description. The input for 'parse_pattern'.
8  * Describes format with its name and callback, which should
9  * be called to paste something inside the buffer.
10  */
11 struct pattern_fmt_desc {
12 	const char  *fmt;
13 	unsigned int len;
14 	int (*paste)(char *buf, unsigned int len, void *priv);
15 };
16 
17 /**
18  * Pattern format. The output of 'parse_pattern'.
19  * Describes the exact position inside the xbuffer.
20  */
21 struct pattern_fmt {
22 	unsigned int off;
23 	const struct pattern_fmt_desc *desc;
24 };
25 
26 int parse_and_fill_pattern(const char *in, unsigned int in_len,
27 			   char *out, unsigned int out_len,
28 			   const struct pattern_fmt_desc *fmt_desc,
29 			   unsigned int fmt_desc_sz,
30 			   struct pattern_fmt *fmt,
31 			   unsigned int *fmt_sz_out);
32 
33 int paste_format_inplace(char *pattern, unsigned int pattern_len,
34 			 struct pattern_fmt *fmt, unsigned int fmt_sz,
35 			 void *priv);
36 
37 int paste_format(const char *pattern, unsigned int pattern_len,
38 		 struct pattern_fmt *fmt, unsigned int fmt_sz,
39 		 char *out, unsigned int out_len, void *priv);
40 
41 int cpy_pattern(const char *pattern, unsigned int pattern_len,
42 		char *out, unsigned int out_len);
43 
44 int cmp_pattern(const char *pattern, unsigned int pattern_size,
45 		unsigned int off, const char *buf, unsigned int len);
46 
47 #endif
48