PATH:
lib64
/
perl5
/
CORE
/* invlist_inline.h * * Copyright (C) 2012 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * 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) /* An element is in an inversion list iff its index is even numbered: 0, 2, 4, * etc */ #define ELEMENT_RANGE_MATCHES_INVLIST(i) (! ((i) & 1)) #define PREV_RANGE_MATCHES_INVLIST(i) (! ELEMENT_RANGE_MATCHES_INVLIST(i)) /* This converts to/from our UVs to what the SV code is expecting: bytes. */ #define TO_INTERNAL_SIZE(x) ((x) * sizeof(UV)) #define FROM_INTERNAL_SIZE(x) ((x)/ sizeof(UV)) PERL_STATIC_INLINE bool* S_get_invlist_offset_addr(SV* invlist) { /* Return the address of the field that says whether the inversion list is * offset (it contains 1) or not (contains 0) */ PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR; assert(SvTYPE(invlist) == SVt_INVLIST); return &(((XINVLIST*) SvANY(invlist))->is_offset); } PERL_STATIC_INLINE UV S__invlist_len(SV* const invlist) { /* Returns the current number of elements stored in the inversion list's * array */ PERL_ARGS_ASSERT__INVLIST_LEN; assert(SvTYPE(invlist) == SVt_INVLIST); return (SvCUR(invlist) == 0) ? 0 : FROM_INTERNAL_SIZE(SvCUR(invlist)) - *get_invlist_offset_addr(invlist); } PERL_STATIC_INLINE bool S__invlist_contains_cp(SV* const invlist, const UV cp) { /* Does <invlist> contain code point <cp> as part of the set? */ IV index = _invlist_search(invlist, cp); PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP; return index >= 0 && ELEMENT_RANGE_MATCHES_INVLIST(index); } PERL_STATIC_INLINE UV* S_invlist_array(SV* const invlist) { /* Returns the pointer to the inversion list's array. Every time the * length changes, this needs to be called in case malloc or realloc moved * it */ PERL_ARGS_ASSERT_INVLIST_ARRAY; /* Must not be empty. If these fail, you probably didn't check for <len> * being non-zero before trying to get the array */ assert(_invlist_len(invlist)); /* The very first element always contains zero, The array begins either * there, or if the inversion list is offset, at the element after it. * The offset header field determines which; it contains 0 or 1 to indicate * how much additionally to add */ assert(0 == *(SvPVX(invlist))); return ((UV *) SvPVX(invlist) + *get_invlist_offset_addr(invlist)); } # if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGEXEC_C) /* These symbols are only needed later in regcomp.c */ # undef TO_INTERNAL_SIZE # undef FROM_INTERNAL_SIZE # endif #endif
[-] parser.h
[edit]
[-] pp.h
[edit]
[-] pad.h
[edit]
[-] perlapi.h
[edit]
[-] uudmap.h
[edit]
[-] iperlsys.h
[edit]
[-] util.h
[edit]
[-] keywords.h
[edit]
[-] invlist_inline.h
[edit]
[-] mg_raw.h
[edit]
[-] perlvars.h
[edit]
[-] thread.h
[edit]
[-] perliol.h
[edit]
[-] utfebcdic.h
[edit]
[-] unixish.h
[edit]
[-] inline.h
[edit]
[-] malloc_ctl.h
[edit]
[-] scope.h
[edit]
[-] mydtrace.h
[edit]
[-] config.h
[edit]
[-] gv.h
[edit]
[-] reentr.h
[edit]
[-] ebcdic_tables.h
[edit]
[-] perly.h
[edit]
[-] charclass_invlists.h
[edit]
[-] fakesdio.h
[edit]
[-] hv_func.h
[edit]
[-] pp_proto.h
[edit]
[-] op_reg_common.h
[edit]
[-] XSUB.h
[edit]
[-] metaconfig.h
[edit]
[-] INTERN.h
[edit]
[-] av.h
[edit]
[-] mg_vtable.h
[edit]
[-] intrpvar.h
[edit]
[-] cop.h
[edit]
[-] time64.h
[edit]
[-] dquote_inline.h
[edit]
[-] sv.h
[edit]
[+]
..
[-] libperl.so
[edit]
[-] warnings.h
[edit]
[-] handy.h
[edit]
[-] unicode_constants.h
[edit]
[-] mg_data.h
[edit]
[-] embedvar.h
[edit]
[-] regcharclass.h
[edit]
[-] opnames.h
[edit]
[-] time64_config.h
[edit]
[-] bitcount.h
[edit]
[-] perldtrace.h
[edit]
[-] regcomp.h
[edit]
[-] regnodes.h
[edit]
[-] uconfig.h
[edit]
[-] feature.h
[edit]
[-] perlsdio.h
[edit]
[-] opcode.h
[edit]
[-] regexp.h
[edit]
[-] overload.h
[edit]
[-] l1_char_class_tab.h
[edit]
[-] hv.h
[edit]
[-] cv.h
[edit]
[-] vutil.h
[edit]
[-] proto.h
[edit]
[-] mg.h
[edit]
[-] perlio.h
[edit]
[-] EXTERN.h
[edit]
[-] embed.h
[edit]
[-] op.h
[edit]
[-] perl.h
[edit]
[-] dosish.h
[edit]
[-] patchlevel.h
[edit]
[-] git_version.h
[edit]
[-] form.h
[edit]
[-] utf8.h
[edit]
[-] nostdio.h
[edit]