From efaeaa579b0fdee56fedcdcef6383304a30044f4 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 13 May 2015 14:59:40 +0200 Subject: [PATCH] iscc: add equality operation on strings This will allow us to implement a test for equality to NaN in terms of strings. Signed-off-by: Sven Verdoolaege --- doc/isl.tex | 2 ++ iscc.c | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/doc/isl.tex b/doc/isl.tex index a0a3515..4c2f8f5 100644 --- a/doc/isl.tex +++ b/doc/isl.tex @@ -1023,6 +1023,8 @@ $b$ := $s_1$ \ai[\tt]{=} $s_2$ & is $s_1$ equal to $s_2$? \\ $b$ := $m_1$ \ai[\tt]{=} $m_2$ & is $m_1$ equal to $m_2$? \\ +$b$ := $S_1$ \ai[\tt]{=} $S_2$ & is $S_1$ equal to $S_2$? +\\ $b$ := $s_1$ \ai[\tt]{<=} $s_2$ & is $s_1$ a subset of $s_2$? \\ $b$ := $m_1$ \ai[\tt]{<=} $m_2$ & is $m_1$ a subset of $m_2$? diff --git a/iscc.c b/iscc.c index c045fb4..fff567f 100644 --- a/iscc.c +++ b/iscc.c @@ -381,6 +381,16 @@ int_val_mul_union_pw_qpolynomial_fold(__isl_take isl_val *v, return isl_union_pw_qpolynomial_fold_scale_val(upwf, v); } +/* Are the two strings "str1" and "str2" equal to each other? + */ +static int str_eq(__isl_keep isl_str *str1, __isl_keep isl_str *str2) +{ + if (!str1 || !str2) + return -1; + + return !strcmp(str1->s, str2->s); +} + struct isc_bin_op bin_ops[] = { { '+', isl_obj_val, isl_obj_val, isl_obj_val, (isc_bin_op_fn) &isl_val_add }, @@ -548,6 +558,8 @@ struct isc_bin_op bin_ops[] = { &isl_union_pw_qpolynomial_fold_plain_is_equal } }, { '+', isl_obj_str, isl_obj_str, isl_obj_str, (isc_bin_op_fn) &isl_str_concat }, + { '=', isl_obj_str, isl_obj_str, isl_obj_bool, + { .test = (isc_bin_test_fn) &str_eq } }, 0 }; -- 2.11.4.GIT