xref: /aosp_15_r20/external/libtracefs/src/sqlhist-parse.h (revision 287e80b3a36113050663245e7f2c00d274188f18)
1*287e80b3SSadaf Ebrahimi #ifndef __SQLHIST_PARSE_H
2*287e80b3SSadaf Ebrahimi #define __SQLHIST_PARSE_H
3*287e80b3SSadaf Ebrahimi 
4*287e80b3SSadaf Ebrahimi #include <stdarg.h>
5*287e80b3SSadaf Ebrahimi #include <tracefs.h>
6*287e80b3SSadaf Ebrahimi 
7*287e80b3SSadaf Ebrahimi #include <tracefs-local.h>
8*287e80b3SSadaf Ebrahimi 
9*287e80b3SSadaf Ebrahimi struct str_hash;
10*287e80b3SSadaf Ebrahimi 
11*287e80b3SSadaf Ebrahimi struct sql_table;
12*287e80b3SSadaf Ebrahimi 
13*287e80b3SSadaf Ebrahimi struct sqlhist_bison {
14*287e80b3SSadaf Ebrahimi 	void			*scanner;
15*287e80b3SSadaf Ebrahimi 	const char		*buffer;
16*287e80b3SSadaf Ebrahimi 	size_t			buffer_size;
17*287e80b3SSadaf Ebrahimi 	size_t			buffer_idx;
18*287e80b3SSadaf Ebrahimi 	int			line_no;
19*287e80b3SSadaf Ebrahimi 	int			line_idx;
20*287e80b3SSadaf Ebrahimi 	struct sql_table	*table;
21*287e80b3SSadaf Ebrahimi 	char			*parse_error_str;
22*287e80b3SSadaf Ebrahimi 	struct str_hash         *str_hash[1 << HASH_BITS];
23*287e80b3SSadaf Ebrahimi };
24*287e80b3SSadaf Ebrahimi 
25*287e80b3SSadaf Ebrahimi #include "sqlhist.tab.h"
26*287e80b3SSadaf Ebrahimi 
27*287e80b3SSadaf Ebrahimi enum filter_type {
28*287e80b3SSadaf Ebrahimi 	FILTER_GROUP,
29*287e80b3SSadaf Ebrahimi 	FILTER_NOT_GROUP,
30*287e80b3SSadaf Ebrahimi 	FILTER_EQ,
31*287e80b3SSadaf Ebrahimi 	FILTER_NE,
32*287e80b3SSadaf Ebrahimi 	FILTER_LE,
33*287e80b3SSadaf Ebrahimi 	FILTER_LT,
34*287e80b3SSadaf Ebrahimi 	FILTER_GE,
35*287e80b3SSadaf Ebrahimi 	FILTER_GT,
36*287e80b3SSadaf Ebrahimi 	FILTER_BIN_AND,
37*287e80b3SSadaf Ebrahimi 	FILTER_STR_CMP,
38*287e80b3SSadaf Ebrahimi 	FILTER_AND,
39*287e80b3SSadaf Ebrahimi 	FILTER_OR,
40*287e80b3SSadaf Ebrahimi };
41*287e80b3SSadaf Ebrahimi 
42*287e80b3SSadaf Ebrahimi enum compare_type {
43*287e80b3SSadaf Ebrahimi 	COMPARE_GROUP,
44*287e80b3SSadaf Ebrahimi 	COMPARE_ADD,
45*287e80b3SSadaf Ebrahimi 	COMPARE_SUB,
46*287e80b3SSadaf Ebrahimi 	COMPARE_MUL,
47*287e80b3SSadaf Ebrahimi 	COMPARE_DIV,
48*287e80b3SSadaf Ebrahimi 	COMPARE_BIN_AND,
49*287e80b3SSadaf Ebrahimi 	COMPARE_BIN_OR,
50*287e80b3SSadaf Ebrahimi 	COMPARE_AND,
51*287e80b3SSadaf Ebrahimi 	COMPARE_OR,
52*287e80b3SSadaf Ebrahimi };
53*287e80b3SSadaf Ebrahimi 
54*287e80b3SSadaf Ebrahimi char * store_str(struct sqlhist_bison *sb, const char *str);
55*287e80b3SSadaf Ebrahimi 
56*287e80b3SSadaf Ebrahimi int table_start(struct sqlhist_bison *sb);
57*287e80b3SSadaf Ebrahimi 
58*287e80b3SSadaf Ebrahimi void *add_field(struct sqlhist_bison *sb, const char *field, const char *label);
59*287e80b3SSadaf Ebrahimi 
60*287e80b3SSadaf Ebrahimi void *add_filter(struct sqlhist_bison *sb, void *A, void *B, enum filter_type op);
61*287e80b3SSadaf Ebrahimi 
62*287e80b3SSadaf Ebrahimi int add_match(struct sqlhist_bison *sb, void *A, void *B);
63*287e80b3SSadaf Ebrahimi void *add_compare(struct sqlhist_bison *sb, void *A, void *B, enum compare_type type);
64*287e80b3SSadaf Ebrahimi int add_where(struct sqlhist_bison *sb, void *expr);
65*287e80b3SSadaf Ebrahimi 
66*287e80b3SSadaf Ebrahimi int add_selection(struct sqlhist_bison *sb, void *item, const char *label);
67*287e80b3SSadaf Ebrahimi int add_from(struct sqlhist_bison *sb, void *item);
68*287e80b3SSadaf Ebrahimi int add_to(struct sqlhist_bison *sb, void *item);
69*287e80b3SSadaf Ebrahimi void *add_cast(struct sqlhist_bison *sb, void *field, const char *type);
70*287e80b3SSadaf Ebrahimi 
71*287e80b3SSadaf Ebrahimi void *add_string(struct sqlhist_bison *sb, const char *str);
72*287e80b3SSadaf Ebrahimi void *add_number(struct sqlhist_bison *sb, long val);
73*287e80b3SSadaf Ebrahimi 
74*287e80b3SSadaf Ebrahimi extern void sql_parse_error(struct sqlhist_bison *sb, const char *text,
75*287e80b3SSadaf Ebrahimi 			    const char *fmt, va_list ap);
76*287e80b3SSadaf Ebrahimi 
77*287e80b3SSadaf Ebrahimi #endif
78