Home | History | Annotate | Download | only in lib
      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