X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/3f7c398ef4badd9c6ec5b40ea29141484c160f63..f49ed1dab8c52e58c3b45270b50ae23e7886790c:/proto.h diff --git a/proto.h b/proto.h index 78d3161..9f5ced8 100644 --- a/proto.h +++ b/proto.h @@ -57,7 +57,9 @@ PERL_CALLCONV Malloc_t Perl_realloc(Malloc_t where, MEM_SIZE nbytes) PERL_CALLCONV Free_t Perl_mfree(Malloc_t where); #if defined(MYMALLOC) -PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p); +PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p) + __attribute__warn_unused_result__; + #endif PERL_CALLCONV void* Perl_get_context(void); @@ -453,12 +455,18 @@ PERL_CALLCONV void Perl_init_stacks(pTHX); PERL_CALLCONV void Perl_init_tm(pTHX_ struct tm *ptm); PERL_CALLCONV U32 Perl_intro_my(pTHX); PERL_CALLCONV char* Perl_instr(pTHX_ const char* big, const char* little) + __attribute__warn_unused_result__ __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, bool not_implicit); -PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd); +PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, bool not_implicit) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd) + __attribute__warn_unused_result__; + PERL_CALLCONV bool Perl_is_gv_magical(pTHX_ const char *name, STRLEN len, U32 flags) __attribute__warn_unused_result__; @@ -612,8 +620,10 @@ PERL_CALLCONV bool Perl_is_utf8_string(pTHX_ const U8 *s, STRLEN len) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **p) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV bool Perl_is_utf8_string_loclen(pTHX_ const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) + __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_alnum(pTHX_ const U8 *p) __attribute__warn_unused_result__ @@ -984,7 +994,8 @@ PERL_CALLCONV OP* Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv) PERL_CALLCONV SV* Perl_newRV(pTHX_ SV* pref) __attribute__malloc__ - __attribute__warn_unused_result__; + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV *sv) __attribute__malloc__ @@ -1025,6 +1036,10 @@ PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char* s, STRLEN len) __attribute__malloc__ __attribute__warn_unused_result__; +PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *hek) + __attribute__malloc__ + __attribute__warn_unused_result__; + PERL_CALLCONV SV* Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash) __attribute__malloc__ __attribute__warn_unused_result__; @@ -1331,24 +1346,19 @@ PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV char* sv_2pv(pTHX_ SV* sv, STRLEN* lp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); */ + __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV char* Perl_sv_2pv_flags(pTHX_ SV* sv, STRLEN* lp, I32 flags) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_2pvutf8(pTHX_ SV* sv, STRLEN* lp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_2pvbyte(pTHX_ SV* sv, STRLEN* lp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV UV sv_2uv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); */ @@ -1497,8 +1507,12 @@ PERL_CALLCONV SV* Perl_sv_newmortal(pTHX) PERL_CALLCONV SV* Perl_sv_newref(pTHX_ SV* sv); PERL_CALLCONV char* Perl_sv_peek(pTHX_ SV* sv); -PERL_CALLCONV void Perl_sv_pos_u2b(pTHX_ SV* sv, I32* offsetp, I32* lenp); -PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp); +PERL_CALLCONV void Perl_sv_pos_u2b(pTHX_ SV* sv, I32* offsetp, I32* lenp) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp) + __attribute__nonnull__(pTHX_2); + /* PERL_CALLCONV char* sv_pvn_force(pTHX_ SV* sv, STRLEN* lp); */ PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV* sv, STRLEN* lp); PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV* sv, STRLEN* lp); @@ -1852,9 +1866,7 @@ STATIC void S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -STATIC void S_unshare_hek_or_pvn(pTHX_ HEK* hek, const char* sv, I32 len, U32 hash) - __attribute__nonnull__(pTHX_2); - +STATIC void S_unshare_hek_or_pvn(pTHX_ HEK* hek, const char* str, I32 len, U32 hash); STATIC HE* S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags) __attribute__warn_unused_result__; @@ -1863,6 +1875,7 @@ STATIC void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const ch __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4); +STATIC struct xpvhv_aux* S_hv_auxinit(pTHX_ HV *hv); #endif #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) @@ -2198,10 +2211,21 @@ STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp); #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) -STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop); -STATIC int S_emulate_eaccess(pTHX_ const char* path, Mode_t mode); +STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); + +STATIC int S_emulate_eaccess(pTHX_ const char* path, Mode_t mode) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1); + # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) -STATIC int S_dooneliner(pTHX_ char *cmd, char *filename); +STATIC int S_dooneliner(pTHX_ const char *cmd, const char *filename) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + # endif #endif @@ -2463,6 +2487,12 @@ STATIC SV* S_mess_alloc(pTHX); STATIC NV S_mulexp10(NV value, I32 exponent); #endif +#if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) +STATIC STRLEN S_is_utf8_char_slow(pTHX_ const U8 *s, const STRLEN len) + __attribute__nonnull__(pTHX_1); + +#endif + START_EXTERN_C PERL_CALLCONV void Perl_sv_setsv_flags(pTHX_ SV* dsv, SV* ssv, I32 flags) @@ -2495,26 +2525,34 @@ PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv); #endif #if defined(USE_PERLIO) && !defined(USE_SFIO) -PERL_CALLCONV int Perl_PerlIO_close(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_fill(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_fileno(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_eof(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_error(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_flush(pTHX_ PerlIO *); -PERL_CALLCONV void Perl_PerlIO_clearerr(pTHX_ PerlIO *); -PERL_CALLCONV void Perl_PerlIO_set_cnt(pTHX_ PerlIO *, int); -PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *, STDCHAR *, int); -PERL_CALLCONV void Perl_PerlIO_setlinebuf(pTHX_ PerlIO *); -PERL_CALLCONV SSize_t Perl_PerlIO_read(pTHX_ PerlIO *, void *, Size_t); -PERL_CALLCONV SSize_t Perl_PerlIO_write(pTHX_ PerlIO *, const void *, Size_t); -PERL_CALLCONV SSize_t Perl_PerlIO_unread(pTHX_ PerlIO *, const void *, Size_t); -PERL_CALLCONV Off_t Perl_PerlIO_tell(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_seek(pTHX_ PerlIO *, Off_t, int); - -PERL_CALLCONV STDCHAR * Perl_PerlIO_get_base(pTHX_ PerlIO *); -PERL_CALLCONV STDCHAR * Perl_PerlIO_get_ptr(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *); -PERL_CALLCONV int Perl_PerlIO_get_cnt(pTHX_ PerlIO *); +PERL_CALLCONV int Perl_PerlIO_close(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_fill(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_fileno(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_eof(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_error(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_flush(pTHX_ PerlIO *f); +PERL_CALLCONV void Perl_PerlIO_clearerr(pTHX_ PerlIO *f); +PERL_CALLCONV void Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, int cnt); +PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, int cnt) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV void Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f); +PERL_CALLCONV SSize_t Perl_PerlIO_read(pTHX_ PerlIO *f, void *buf, Size_t count) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV SSize_t Perl_PerlIO_write(pTHX_ PerlIO *f, const void *buf, Size_t count) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV SSize_t Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *buf, Size_t count) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV Off_t Perl_PerlIO_tell(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence); + +PERL_CALLCONV STDCHAR * Perl_PerlIO_get_base(pTHX_ PerlIO *f); +PERL_CALLCONV STDCHAR * Perl_PerlIO_get_ptr(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f); +PERL_CALLCONV int Perl_PerlIO_get_cnt(pTHX_ PerlIO *f); PERL_CALLCONV PerlIO * Perl_PerlIO_stdin(pTHX); PERL_CALLCONV PerlIO * Perl_PerlIO_stdout(pTHX); @@ -2526,28 +2564,45 @@ PERL_CALLCONV void Perl_deb_stack_all(pTHX); STATIC void S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max); #endif -PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags); +PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags) + __attribute__malloc__ + __attribute__warn_unused_result__; + PERL_CALLCONV void Perl_pad_undef(pTHX_ CV* cv); PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, HV* typestash, HV* ourstash, bool clone) __attribute__nonnull__(pTHX_1); PERL_CALLCONV PADOFFSET Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type); -PERL_CALLCONV void Perl_pad_check_dup(pTHX_ const char* name, bool is_our, const HV* ourstash); +PERL_CALLCONV void Perl_pad_check_dup(pTHX_ const char* name, bool is_our, const HV* ourstash) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); + #ifdef DEBUGGING -PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv); +PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv) + __attribute__nonnull__(pTHX_2); + #endif PERL_CALLCONV void Perl_pad_block_start(pTHX_ int full); PERL_CALLCONV void Perl_pad_tidy(pTHX_ padtidy_type type); -PERL_CALLCONV void Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full); -PERL_CALLCONV void Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv); +PERL_CALLCONV void Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV void Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv) + __attribute__nonnull__(pTHX_1); + + +PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth) + __attribute__nonnull__(pTHX_1); -PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth); PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po); #if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) STATIC PADOFFSET S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags); # if defined(DEBUGGING) -STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title); +STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + # endif #endif PERL_CALLCONV CV* Perl_find_runcv(pTHX_ U32 *db_seqp) @@ -2558,26 +2613,55 @@ PERL_CALLCONV void Perl_free_tied_hv_pool(pTHX); PERL_CALLCONV int Perl_get_debug_opts(pTHX_ const char **s, bool givehelp); #endif PERL_CALLCONV void Perl_save_set_svflags(pTHX_ SV* sv, U32 mask, U32 val); -PERL_CALLCONV void Perl_hv_assert(pTHX_ HV* tb); +PERL_CALLCONV void Perl_hv_assert(pTHX_ HV* tb) + __attribute__nonnull__(pTHX_1); + #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) STATIC SV* S_hv_delete_common(pTHX_ HV* tb, SV* key_sv, const char* key, STRLEN klen, int k_flags, I32 d_flags, U32 hash); STATIC HE* S_hv_fetch_common(pTHX_ HV* tb, SV* key_sv, const char* key, STRLEN klen, int flags, int action, SV* val, U32 hash); #endif -PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV* hb); +PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV* hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV I32* Perl_hv_riter_p(pTHX_ HV* hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV HE** Perl_hv_eiter_p(pTHX_ HV* hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV void Perl_hv_riter_set(pTHX_ HV* hv, I32 riter) + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV void Perl_hv_eiter_set(pTHX_ HV* hv, HE* eiter) + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV* hv, const char *name, I32 len, int flags) + __attribute__nonnull__(pTHX_1); -PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV* hv); -PERL_CALLCONV I32* Perl_hv_riter_p(pTHX_ HV* hv); -PERL_CALLCONV HE** Perl_hv_eiter_p(pTHX_ HV* hv); -PERL_CALLCONV void Perl_hv_riter_set(pTHX_ HV* hv, I32 riter); -PERL_CALLCONV void Perl_hv_eiter_set(pTHX_ HV* hv, HE* eiter); -PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV* hv, const char *, I32 len, int flags); -PERL_CALLCONV I32* Perl_hv_placeholders_p(pTHX_ HV* hv); -PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ HV* hv); -PERL_CALLCONV void Perl_hv_placeholders_set(pTHX_ HV* hv, I32 ph); +PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV* hb) + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV I32* Perl_hv_placeholders_p(pTHX_ HV* hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ HV* hv) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1); + +PERL_CALLCONV void Perl_hv_placeholders_set(pTHX_ HV* hv, I32 ph) + __attribute__nonnull__(pTHX_1); + + +PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV* hv, MAGIC* mg) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); -PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV* hv, MAGIC* mg); #ifdef PERL_IN_SV_C STATIC SV* S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top); #endif