I don't think this function will need to be used again.
Es |void |ssc_and |NN const RExC_state_t *pRExC_state \
|NN regnode_ssc *ssc \
|NN const regnode_charclass *and_with
-Esn |void |ssc_flags_and |NN regnode_ssc *ssc|const U8 and_with
Es |void |ssc_or |NN const RExC_state_t *pRExC_state \
|NN regnode_ssc *ssc \
|NN const regnode_charclass *or_with
#define ssc_clear_locale(a) S_ssc_clear_locale(aTHX_ a)
#define ssc_cp_and(a,b) S_ssc_cp_and(aTHX_ a,b)
#define ssc_finalize(a,b) S_ssc_finalize(aTHX_ a,b)
-#define ssc_flags_and S_ssc_flags_and
#define ssc_init(a,b) S_ssc_init(aTHX_ a,b)
#define ssc_intersection(a,b,c) S_ssc_intersection(aTHX_ a,b,c)
#define ssc_is_anything(a) S_ssc_is_anything(aTHX_ a)
#define PERL_ARGS_ASSERT_SSC_FINALIZE \
assert(pRExC_state); assert(ssc)
-STATIC void S_ssc_flags_and(regnode_ssc *ssc, const U8 and_with)
- __attribute__nonnull__(1);
-#define PERL_ARGS_ASSERT_SSC_FLAGS_AND \
- assert(ssc)
-
STATIC void S_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define ssc_add_cp(ssc, cp) ssc_add_range((ssc), (cp), (cp))
#define ssc_match_all_cp(ssc) ssc_add_range(ssc, 0, UV_MAX)
-STATIC void
-S_ssc_flags_and(regnode_ssc *ssc, const U8 and_with)
-{
- /* Take the flags 'and_with' and accumulate them anded into the flags for
- * the SSC 'ssc'. The non-SSC related flags in 'and_with' are ignored.
- * The flags 'and_with' should not come from another SSC (otherwise the
- * EMPTY_STRING flag won't work) */
-
- const U8 ssc_only_flags = ANYOF_FLAGS(ssc) & ~ANYOF_COMMON_FLAGS;
-
- PERL_ARGS_ASSERT_SSC_FLAGS_AND;
-
- /* Use just the SSC-related flags from 'and_with' */
- ANYOF_FLAGS(ssc) &= (and_with & ANYOF_COMMON_FLAGS);
- ANYOF_FLAGS(ssc) |= ssc_only_flags;
-}
-
/* 'AND' a given class with another one. Can create false positives. 'ssc'
* should not be inverted. 'and_with->flags & ANYOF_POSIXL' should be 0 if
* 'and_with' is a regnode_charclass instead of a regnode_ssc. */