__module_put_and_exit() doesn't return.
[smatch.git] / smatch_extra.h
blob81f8f927f11ba249a4df750b9b0a3188513db206
1 /*
2 * sparse/smatch_extra.h
4 * Copyright (C) 2009 Dan Carpenter.
6 * Licensed under the Open Software License version 1.1
8 */
10 enum data_type {
11 DATA_NUM,
14 DECLARE_PTR_LIST(num_list, long long);
16 struct data_info {
17 enum data_type type;
18 int merged;
19 struct num_list *values;
20 struct num_list *filter;
22 DECLARE_ALLOCATOR(data_info);
24 /* these are implimented in smatch_extra_helper.c */
25 struct data_info *alloc_data_info(long long num);
26 void add_num(struct num_list **list, long long num);
27 struct num_list *clone_num_list(struct num_list *list);
28 struct num_list *num_list_union(struct num_list *one, struct num_list *two);
29 struct num_list *num_list_intersection(struct num_list *one,
30 struct num_list *two);
31 int num_matches(struct data_info *dinfo, long long num);
32 long long get_single_value(struct data_info *dinfo);
33 int possibly_true(int comparison, struct data_info *dinfo, int num, int left);
34 int possibly_false(int comparison, struct data_info *dinfo, int num, int left);
35 void free_data_info_allocs(void);
37 /* used in smatch_slist. implemented in smatch_extra.c */
38 struct sm_state *__extra_merge(struct sm_state *one, struct state_list *slist1,
39 struct sm_state *two, struct state_list *slist2);
40 struct sm_state *__extra_and_merge(struct sm_state *sm,
41 struct state_list_stack *stack);