X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fexpressions%2Foperations.def;h=c25f113c319c4b214a46c923d2fdceffcf46fc75;hb=d775f576e4ffc0973c5f183b57b2baa089f555dc;hp=531d6b312a0284309ef32223fc7cd69271959673;hpb=b5249f4441110eaf24223166a5a6c9f7bf71faa7;p=pspp diff --git a/src/language/expressions/operations.def b/src/language/expressions/operations.def index 531d6b312a..c25f113c31 100644 --- a/src/language/expressions/operations.def +++ b/src/language/expressions/operations.def @@ -63,12 +63,12 @@ boolean operator LT (a, b) = a < b; boolean operator NE (a, b) = a != b; // String relational operators. -boolean operator EQ_STRING (string a, string b) = compare_string (&a, &b) == 0; -boolean operator GE_STRING (string a, string b) = compare_string (&a, &b) >= 0; -boolean operator GT_STRING (string a, string b) = compare_string (&a, &b) > 0; -boolean operator LE_STRING (string a, string b) = compare_string (&a, &b) <= 0; -boolean operator LT_STRING (string a, string b) = compare_string (&a, &b) < 0; -boolean operator NE_STRING (string a, string b) = compare_string (&a, &b) != 0; +boolean operator EQ_STRING (string a, string b) = compare_string_3way (&a, &b) == 0; +boolean operator GE_STRING (string a, string b) = compare_string_3way (&a, &b) >= 0; +boolean operator GT_STRING (string a, string b) = compare_string_3way (&a, &b) > 0; +boolean operator LE_STRING (string a, string b) = compare_string_3way (&a, &b) <= 0; +boolean operator LT_STRING (string a, string b) = compare_string_3way (&a, &b) < 0; +boolean operator NE_STRING (string a, string b) = compare_string_3way (&a, &b) != 0; // Unary functions. function ABS (x) = fabs (x); @@ -118,7 +118,7 @@ boolean function ANY (string x, string a[n]) size_t i; for (i = 0; i < n; i++) - if (!compare_string (&x, &a[i])) + if (!compare_string_3way (&x, &a[i])) return 1.; return 0.; } @@ -154,7 +154,7 @@ string function MAX (string a[n]) max = &a[0]; for (i = 1; i < n; i++) - if (compare_string (&a[i], max) > 0) + if (compare_string_3way (&a[i], max) > 0) max = &a[i]; return *max; } @@ -185,7 +185,7 @@ string function MIN (string a[n]) min = &a[0]; for (i = 1; i < n; i++) - if (compare_string (&a[i], min) < 0) + if (compare_string_3way (&a[i], min) < 0) min = &a[i]; return *min; } @@ -238,7 +238,7 @@ boolean function RANGE (string x, string a[n*2]) { struct substring *w = &a[2 * i]; struct substring *y = &a[2 * i + 1]; - if (compare_string (w, &x) <= 0 && compare_string (&x, y) <= 0) + if (compare_string_3way (w, &x) <= 0 && compare_string_3way (&x, y) <= 0) return 1.; } return 0.; @@ -961,7 +961,8 @@ absorb_miss no_opt string operator VEC_ELEM_STR (idx) if (idx >= 1 && idx <= vector_get_var_cnt (v)) { struct variable *var = vector_get_var (v, (size_t) idx - 1); - return copy_string (e, case_str (c, var), var_get_width (var)); + return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, var)), + var_get_width (var)); } else { @@ -1029,7 +1030,8 @@ no_opt perm_only string function LAG (str_var v, pos_int n_before) { const struct ccase *c = lagged_case (ds, n_before); if (c != NULL) - return copy_string (e, case_str (c, v), var_get_width (v)); + return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, v)), + var_get_width (v)); else return empty_string; } @@ -1040,7 +1042,8 @@ no_opt perm_only string function LAG (str_var v) { const struct ccase *c = lagged_case (ds, 1); if (c != NULL) - return copy_string (e, case_str (c, v), var_get_width (v)); + return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, v)), + var_get_width (v)); else return empty_string; }