File: pattern.h

package info (click to toggle)
fio 3.25-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 4,812 kB
  • sloc: ansic: 69,429; python: 4,155; sh: 4,058; makefile: 749; yacc: 204; lex: 184
file content (44 lines) | stat: -rw-r--r-- 1,295 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef FIO_PARSE_PATTERN_H
#define FIO_PARSE_PATTERN_H

/**
 * 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,
			   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