From b4011fcc4eed8a298d933825738675005a0a232f Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 28 Nov 2012 16:22:33 +0300 Subject: [PATCH] helper: introduce get_param_num_from_sym() You pass it a sym and it returns which parameter it is. If the symbol was not a parameter, then it returns -1. Signed-off-by: Dan Carpenter --- smatch.h | 1 + smatch_helper.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/smatch.h b/smatch.h index 9b45aff5..6052c454 100644 --- a/smatch.h +++ b/smatch.h @@ -254,6 +254,7 @@ char *get_member_name(struct expression *expr); char *get_fnptr_name(struct expression *expr); int positions_eq(struct position pos1, struct position pos2); struct statement *get_current_statement(void); +int get_param_num_from_sym(struct symbol *sym); /* smatch_type.c */ struct symbol *get_real_base_type(struct symbol *sym); diff --git a/smatch_helper.c b/smatch_helper.c index fe4138b0..09287f21 100644 --- a/smatch_helper.c +++ b/smatch_helper.c @@ -500,3 +500,18 @@ struct statement *get_current_statement(void) } END_FOR_EACH_PTR_REVERSE(tmp); return prev; } + +int get_param_num_from_sym(struct symbol *sym) +{ + struct symbol *tmp; + int i; + + i = 0; + FOR_EACH_PTR(cur_func_sym->ctype.base_type->arguments, tmp) { + if (tmp == sym) + return i; + i++; + } END_FOR_EACH_PTR(tmp); + return -1; +} + -- 2.11.4.GIT