Fewer macros in transform.c

* src/transform.c (CASE_CTL_RESET): Remove, replacing with one
instance of code (with a goto, alas).  Still a bit clearer, I think.
This commit is contained in:
Paul Eggert
2024-08-19 09:53:35 -07:00
parent 350cc4077e
commit 82ef07c9bd

View File

@@ -464,15 +464,6 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
size_t nmatches = 0; size_t nmatches = 0;
enum case_ctl_type case_ctl = ctl_stop, /* Current case conversion op */ enum case_ctl_type case_ctl = ctl_stop, /* Current case conversion op */
save_ctl = ctl_stop; /* Saved case_ctl for \u and \l */ save_ctl = ctl_stop; /* Saved case_ctl for \u and \l */
/* Reset case conversion after a single-char operation */
#define CASE_CTL_RESET() if (case_ctl == ctl_upcase_next \
|| case_ctl == ctl_locase_next) \
{ \
case_ctl = save_ctl; \
save_ctl = ctl_stop; \
}
regmatch_t *rmp = xinmalloc (tf->regex.re_nsub + 1, sizeof *rmp); regmatch_t *rmp = xinmalloc (tf->regex.re_nsub + 1, sizeof *rmp);
while (*input) while (*input)
@@ -506,7 +497,14 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
run_case_conv (case_ctl, run_case_conv (case_ctl,
segm->v.literal.ptr, segm->v.literal.ptr,
segm->v.literal.size); segm->v.literal.size);
CASE_CTL_RESET (); case_ctl_reset:
/* Reset case conversion after a single-char operation. */
if (case_ctl == ctl_upcase_next
|| case_ctl == ctl_locase_next)
{
case_ctl = save_ctl;
save_ctl = ctl_stop;
}
break; break;
case segm_backref: /* Back-reference segment */ case segm_backref: /* Back-reference segment */
@@ -517,7 +515,7 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
- rmp[segm->v.ref].rm_so; - rmp[segm->v.ref].rm_so;
run_case_conv (case_ctl, run_case_conv (case_ctl,
input + rmp[segm->v.ref].rm_so, size); input + rmp[segm->v.ref].rm_so, size);
CASE_CTL_RESET (); goto case_ctl_reset;
} }
break; break;