From 3bdb47679274f3e828d5540a98a809637500d6bd Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Mon, 20 May 2013 15:41:18 +0300 Subject: [PATCH] ranges: introduce rl_to_sval() If the range_list is really just on value then it returns true and gives you the sval. Signed-off-by: Dan Carpenter --- smatch_extra.h | 1 + smatch_ranges.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/smatch_extra.h b/smatch_extra.h index ba0e12fe..387ec606 100644 --- a/smatch_extra.h +++ b/smatch_extra.h @@ -62,6 +62,7 @@ int is_whole_rl(struct range_list *rl); sval_t rl_min(struct range_list *rl); sval_t rl_max(struct range_list *rl); +int rl_to_sval(struct range_list *rl, sval_t *sval); struct symbol *rl_type(struct range_list *rl); struct range_list *rl_invert(struct range_list *orig); diff --git a/smatch_ranges.c b/smatch_ranges.c index 7a5f16b2..ba6a9078 100644 --- a/smatch_ranges.c +++ b/smatch_ranges.c @@ -215,6 +215,21 @@ sval_t rl_max(struct range_list *rl) return drange->max; } +int rl_to_sval(struct range_list *rl, sval_t *sval) +{ + sval_t min, max; + + if (!rl) + return 0; + + min = rl_min(rl); + max = rl_max(rl); + if (sval_cmp(min, max) != 0) + return 0; + *sval = min; + return 1; +} + struct symbol *rl_type(struct range_list *rl) { if (!rl) -- 2.11.4.GIT