X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/f1bcae08d82e5348df8b5dc0c44313ea38deb12b..5ddb873f0acab0969d15c62c8ccad524e153b7cc:/invlist_inline.h diff --git a/invlist_inline.h b/invlist_inline.h index 3a1afc6..4bab3d8 100644 --- a/invlist_inline.h +++ b/invlist_inline.h @@ -6,7 +6,10 @@ * License or the Artistic License, as specified in the README file. */ -#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) +#ifndef PERL_INVLIST_INLINE_H_ +#define PERL_INVLIST_INLINE_H_ + +#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_PP_C) /* An element is in an inversion list iff its index is even numbered: 0, 2, 4, * etc */ @@ -17,6 +20,12 @@ #define TO_INTERNAL_SIZE(x) ((x) * sizeof(UV)) #define FROM_INTERNAL_SIZE(x) ((x)/ sizeof(UV)) +PERL_STATIC_INLINE bool +S_is_invlist(SV* const invlist) +{ + return invlist != NULL && SvTYPE(invlist) == SVt_INVLIST; +} + PERL_STATIC_INLINE bool* S_get_invlist_offset_addr(SV* invlist) { @@ -24,7 +33,7 @@ S_get_invlist_offset_addr(SV* invlist) * offset (it contains 1) or not (contains 0) */ PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR; - assert(SvTYPE(invlist) == SVt_INVLIST); + assert(is_invlist(invlist)); return &(((XINVLIST*) SvANY(invlist))->is_offset); } @@ -37,7 +46,7 @@ S__invlist_len(SV* const invlist) PERL_ARGS_ASSERT__INVLIST_LEN; - assert(SvTYPE(invlist) == SVt_INVLIST); + assert(is_invlist(invlist)); return (SvCUR(invlist) == 0) ? 0 @@ -77,7 +86,7 @@ S_invlist_array(SV* const invlist) return ((UV *) SvPVX(invlist) + *get_invlist_offset_addr(invlist)); } -# if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGEXEC_C) +# if defined(PERL_IN_REGEXEC_C) /* These symbols are only needed later in regcomp.c */ # undef TO_INTERNAL_SIZE @@ -85,3 +94,5 @@ S_invlist_array(SV* const invlist) # endif #endif + +#endif /* PERL_INVLIST_INLINE_H_ */