This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
We no longer need PL_shared_hek_table
[perl5.git] / perlapi.h
index 0b8e6de..e6fe38f 100644 (file)
--- a/perlapi.h
+++ b/perlapi.h
@@ -1,7 +1,9 @@
-/*
+/*  -*- buffer-read-only: t -*-
+ *
  *    perlapi.h
  *
- *    Copyright (c) 1997-2003, Larry Wall
+ *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ *    2000, 2001, 2002, 2003, 2004, 2005, 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.
@@ -26,11 +28,14 @@ START_EXTERN_C
 #undef PERLVARA
 #undef PERLVARI
 #undef PERLVARIC
+#undef PERLVARISC
 #define PERLVAR(v,t)   EXTERN_C t* Perl_##v##_ptr(pTHX);
 #define PERLVARA(v,n,t)        typedef t PL_##v##_t[n];                        \
                        EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX);
 #define PERLVARI(v,t,i)        PERLVAR(v,t)
 #define PERLVARIC(v,t,i) PERLVAR(v, const t)
+#define PERLVARISC(v,i)        typedef const char PL_##v##_t[sizeof(i)];       \
+                       EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX);
 
 #include "thrdvar.h"
 #include "intrpvar.h"
@@ -40,6 +45,16 @@ START_EXTERN_C
 #undef PERLVARA
 #undef PERLVARI
 #undef PERLVARIC
+#undef PERLVARISC
+
+#ifndef PERL_GLOBAL_STRUCT
+EXTERN_C Perl_ppaddr_t** Perl_Gppaddr_ptr(pTHX);
+EXTERN_C Perl_check_t**  Perl_Gcheck_ptr(pTHX);
+EXTERN_C unsigned char** Perl_Gfold_locale_ptr(pTHX);
+#define Perl_ppaddr_ptr      Perl_Gppaddr_ptr
+#define Perl_check_ptr       Perl_Gcheck_ptr
+#define Perl_fold_locale_ptr Perl_Gfold_locale_ptr
+#endif
 
 END_EXTERN_C
 
@@ -55,9 +70,9 @@ END_EXTERN_C
 START_EXTERN_C
 
 #ifndef DOINIT
-EXT void *PL_force_link_funcs[];
+EXTCONST void * const PL_force_link_funcs[];
 #else
-EXT void *PL_force_link_funcs[] = {
+EXTCONST void * const PL_force_link_funcs[] = {
 #undef PERLVAR
 #undef PERLVARA
 #undef PERLVARI
@@ -66,15 +81,34 @@ EXT void *PL_force_link_funcs[] = {
 #define PERLVARA(v,n,t)        PERLVAR(v,t)
 #define PERLVARI(v,t,i)        PERLVAR(v,t)
 #define PERLVARIC(v,t,i) PERLVAR(v,t)
+#define PERLVARISC(v,i) PERLVAR(v,char)
+
+/* In Tru64 (__DEC && __osf__) the cc option -std1 causes that one
+ * cannot cast between void pointers and function pointers without
+ * info level warnings.  The PL_force_link_funcs[] would cause a few
+ * hundred of those warnings.  In code one can circumnavigate this by using
+ * unions that overlay the different pointers, but in declarations one
+ * cannot use this trick.  Therefore we just disable the warning here
+ * for the duration of the PL_force_link_funcs[] declaration. */
+
+#if defined(__DECC) && defined(__osf__)
+#pragma message save
+#pragma message disable (nonstandcast)
+#endif
 
 #include "thrdvar.h"
 #include "intrpvar.h"
 #include "perlvars.h"
 
+#if defined(__DECC) && defined(__osf__)
+#pragma message restore
+#endif
+
 #undef PERLVAR
 #undef PERLVARA
 #undef PERLVARI
 #undef PERLVARIC
+#undef PERLVARISC
 };
 #endif /* DOINIT */
 
@@ -196,6 +230,8 @@ END_EXTERN_C
 #define PL_custom_op_descs     (*Perl_Icustom_op_descs_ptr(aTHX))
 #undef  PL_custom_op_names
 #define PL_custom_op_names     (*Perl_Icustom_op_names_ptr(aTHX))
+#undef  PL_cv_has_eval
+#define PL_cv_has_eval         (*Perl_Icv_has_eval_ptr(aTHX))
 #undef  PL_dbargs
 #define PL_dbargs              (*Perl_Idbargs_ptr(aTHX))
 #undef  PL_debstash
@@ -248,6 +284,8 @@ END_EXTERN_C
 #define PL_expect              (*Perl_Iexpect_ptr(aTHX))
 #undef  PL_fdpid
 #define PL_fdpid               (*Perl_Ifdpid_ptr(aTHX))
+#undef  PL_fdscript
+#define PL_fdscript            (*Perl_Ifdscript_ptr(aTHX))
 #undef  PL_filemode
 #define PL_filemode            (*Perl_Ifilemode_ptr(aTHX))
 #undef  PL_forkprocess
@@ -264,6 +302,10 @@ END_EXTERN_C
 #define PL_glob_index          (*Perl_Iglob_index_ptr(aTHX))
 #undef  PL_globalstash
 #define PL_globalstash         (*Perl_Iglobalstash_ptr(aTHX))
+#undef  PL_hash_seed
+#define PL_hash_seed           (*Perl_Ihash_seed_ptr(aTHX))
+#undef  PL_hash_seed_set
+#define PL_hash_seed_set       (*Perl_Ihash_seed_set_ptr(aTHX))
 #undef  PL_he_arenaroot
 #define PL_he_arenaroot                (*Perl_Ihe_arenaroot_ptr(aTHX))
 #undef  PL_he_root
@@ -350,6 +392,8 @@ END_EXTERN_C
 #define PL_linestr             (*Perl_Ilinestr_ptr(aTHX))
 #undef  PL_localpatches
 #define PL_localpatches                (*Perl_Ilocalpatches_ptr(aTHX))
+#undef  PL_lockhook
+#define PL_lockhook            (*Perl_Ilockhook_ptr(aTHX))
 #undef  PL_main_cv
 #define PL_main_cv             (*Perl_Imain_cv_ptr(aTHX))
 #undef  PL_main_root
@@ -422,8 +466,6 @@ END_EXTERN_C
 #define PL_oldoldbufptr                (*Perl_Ioldoldbufptr_ptr(aTHX))
 #undef  PL_op_mask
 #define PL_op_mask             (*Perl_Iop_mask_ptr(aTHX))
-#undef  PL_op_seqmax
-#define PL_op_seqmax           (*Perl_Iop_seqmax_ptr(aTHX))
 #undef  PL_origalen
 #define PL_origalen            (*Perl_Iorigalen_ptr(aTHX))
 #undef  PL_origargc
@@ -456,6 +498,8 @@ END_EXTERN_C
 #define PL_perlio              (*Perl_Iperlio_ptr(aTHX))
 #undef  PL_pidstatus
 #define PL_pidstatus           (*Perl_Ipidstatus_ptr(aTHX))
+#undef  PL_ppid
+#define PL_ppid                        (*Perl_Ippid_ptr(aTHX))
 #undef  PL_preambleav
 #define PL_preambleav          (*Perl_Ipreambleav_ptr(aTHX))
 #undef  PL_preambled
@@ -470,14 +514,24 @@ END_EXTERN_C
 #define PL_psig_pend           (*Perl_Ipsig_pend_ptr(aTHX))
 #undef  PL_psig_ptr
 #define PL_psig_ptr            (*Perl_Ipsig_ptr_ptr(aTHX))
+#undef  PL_pte_arenaroot
+#define PL_pte_arenaroot       (*Perl_Ipte_arenaroot_ptr(aTHX))
+#undef  PL_pte_root
+#define PL_pte_root            (*Perl_Ipte_root_ptr(aTHX))
 #undef  PL_ptr_table
 #define PL_ptr_table           (*Perl_Iptr_table_ptr(aTHX))
 #undef  PL_reentrant_buffer
 #define PL_reentrant_buffer    (*Perl_Ireentrant_buffer_ptr(aTHX))
+#undef  PL_reentrant_retint
+#define PL_reentrant_retint    (*Perl_Ireentrant_retint_ptr(aTHX))
 #undef  PL_regex_pad
 #define PL_regex_pad           (*Perl_Iregex_pad_ptr(aTHX))
 #undef  PL_regex_padav
 #define PL_regex_padav         (*Perl_Iregex_padav_ptr(aTHX))
+#undef  PL_rehash_seed
+#define PL_rehash_seed         (*Perl_Irehash_seed_ptr(aTHX))
+#undef  PL_rehash_seed_set
+#define PL_rehash_seed_set     (*Perl_Irehash_seed_set_ptr(aTHX))
 #undef  PL_replgv
 #define PL_replgv              (*Perl_Ireplgv_ptr(aTHX))
 #undef  PL_rsfp
@@ -486,12 +540,18 @@ END_EXTERN_C
 #define PL_rsfp_filters                (*Perl_Irsfp_filters_ptr(aTHX))
 #undef  PL_runops
 #define PL_runops              (*Perl_Irunops_ptr(aTHX))
+#undef  PL_runops_dbg
+#define PL_runops_dbg          (*Perl_Irunops_dbg_ptr(aTHX))
+#undef  PL_runops_std
+#define PL_runops_std          (*Perl_Irunops_std_ptr(aTHX))
 #undef  PL_savebegin
 #define PL_savebegin           (*Perl_Isavebegin_ptr(aTHX))
 #undef  PL_sawampersand
 #define PL_sawampersand                (*Perl_Isawampersand_ptr(aTHX))
 #undef  PL_sh_path_compat
 #define PL_sh_path_compat      (*Perl_Ish_path_compat_ptr(aTHX))
+#undef  PL_sharehook
+#define PL_sharehook           (*Perl_Isharehook_ptr(aTHX))
 #undef  PL_sig_pending
 #define PL_sig_pending         (*Perl_Isig_pending_ptr(aTHX))
 #undef  PL_sighandlerp
@@ -504,8 +564,12 @@ END_EXTERN_C
 #define PL_splitstr            (*Perl_Isplitstr_ptr(aTHX))
 #undef  PL_srand_called
 #define PL_srand_called                (*Perl_Isrand_called_ptr(aTHX))
+#undef  PL_stashcache
+#define PL_stashcache          (*Perl_Istashcache_ptr(aTHX))
 #undef  PL_statusvalue
 #define PL_statusvalue         (*Perl_Istatusvalue_ptr(aTHX))
+#undef  PL_statusvalue_posix
+#define PL_statusvalue_posix   (*Perl_Istatusvalue_posix_ptr(aTHX))
 #undef  PL_statusvalue_vms
 #define PL_statusvalue_vms     (*Perl_Istatusvalue_vms_ptr(aTHX))
 #undef  PL_stderrgv
@@ -522,6 +586,8 @@ END_EXTERN_C
 #define PL_subline             (*Perl_Isubline_ptr(aTHX))
 #undef  PL_subname
 #define PL_subname             (*Perl_Isubname_ptr(aTHX))
+#undef  PL_suidscript
+#define PL_suidscript          (*Perl_Isuidscript_ptr(aTHX))
 #undef  PL_sv_arenaroot
 #define PL_sv_arenaroot                (*Perl_Isv_arenaroot_ptr(aTHX))
 #undef  PL_sv_count
@@ -542,12 +608,16 @@ END_EXTERN_C
 #define PL_taint_warn          (*Perl_Itaint_warn_ptr(aTHX))
 #undef  PL_tainting
 #define PL_tainting            (*Perl_Itainting_ptr(aTHX))
+#undef  PL_threadhook
+#define PL_threadhook          (*Perl_Ithreadhook_ptr(aTHX))
 #undef  PL_tokenbuf
 #define PL_tokenbuf            (*Perl_Itokenbuf_ptr(aTHX))
 #undef  PL_uid
 #define PL_uid                 (*Perl_Iuid_ptr(aTHX))
 #undef  PL_unicode
 #define PL_unicode             (*Perl_Iunicode_ptr(aTHX))
+#undef  PL_unlockhook
+#define PL_unlockhook          (*Perl_Iunlockhook_ptr(aTHX))
 #undef  PL_unsafe
 #define PL_unsafe              (*Perl_Iunsafe_ptr(aTHX))
 #undef  PL_utf8_alnum
@@ -598,10 +668,6 @@ END_EXTERN_C
 #define PL_warnhook            (*Perl_Iwarnhook_ptr(aTHX))
 #undef  PL_widesyscalls
 #define PL_widesyscalls                (*Perl_Iwidesyscalls_ptr(aTHX))
-#undef  PL_xiv_arenaroot
-#define PL_xiv_arenaroot       (*Perl_Ixiv_arenaroot_ptr(aTHX))
-#undef  PL_xiv_root
-#define PL_xiv_root            (*Perl_Ixiv_root_ptr(aTHX))
 #undef  PL_xnv_arenaroot
 #define PL_xnv_arenaroot       (*Perl_Ixnv_arenaroot_ptr(aTHX))
 #undef  PL_xnv_root
@@ -622,6 +688,10 @@ END_EXTERN_C
 #define PL_xpvcv_arenaroot     (*Perl_Ixpvcv_arenaroot_ptr(aTHX))
 #undef  PL_xpvcv_root
 #define PL_xpvcv_root          (*Perl_Ixpvcv_root_ptr(aTHX))
+#undef  PL_xpvgv_arenaroot
+#define PL_xpvgv_arenaroot     (*Perl_Ixpvgv_arenaroot_ptr(aTHX))
+#undef  PL_xpvgv_root
+#define PL_xpvgv_root          (*Perl_Ixpvgv_root_ptr(aTHX))
 #undef  PL_xpvhv_arenaroot
 #define PL_xpvhv_arenaroot     (*Perl_Ixpvhv_arenaroot_ptr(aTHX))
 #undef  PL_xpvhv_root
@@ -642,22 +712,10 @@ END_EXTERN_C
 #define PL_xpvnv_arenaroot     (*Perl_Ixpvnv_arenaroot_ptr(aTHX))
 #undef  PL_xpvnv_root
 #define PL_xpvnv_root          (*Perl_Ixpvnv_root_ptr(aTHX))
-#undef  PL_xrv_arenaroot
-#define PL_xrv_arenaroot       (*Perl_Ixrv_arenaroot_ptr(aTHX))
-#undef  PL_xrv_root
-#define PL_xrv_root            (*Perl_Ixrv_root_ptr(aTHX))
-#undef  PL_yychar
-#define PL_yychar              (*Perl_Iyychar_ptr(aTHX))
-#undef  PL_yydebug
-#define PL_yydebug             (*Perl_Iyydebug_ptr(aTHX))
-#undef  PL_yyerrflag
-#define PL_yyerrflag           (*Perl_Iyyerrflag_ptr(aTHX))
-#undef  PL_yylval
-#define PL_yylval              (*Perl_Iyylval_ptr(aTHX))
-#undef  PL_yynerrs
-#define PL_yynerrs             (*Perl_Iyynerrs_ptr(aTHX))
-#undef  PL_yyval
-#define PL_yyval               (*Perl_Iyyval_ptr(aTHX))
+#undef  PL_yycharp
+#define PL_yycharp             (*Perl_Iyycharp_ptr(aTHX))
+#undef  PL_yylvalp
+#define PL_yylvalp             (*Perl_Iyylvalp_ptr(aTHX))
 #undef  PL_Sv
 #define PL_Sv                  (*Perl_TSv_ptr(aTHX))
 #undef  PL_Xpv
@@ -744,8 +802,6 @@ END_EXTERN_C
 #define PL_opsave              (*Perl_Topsave_ptr(aTHX))
 #undef  PL_peepp
 #define PL_peepp               (*Perl_Tpeepp_ptr(aTHX))
-#undef  PL_protect
-#define PL_protect             (*Perl_Tprotect_ptr(aTHX))
 #undef  PL_reg_call_cc
 #define PL_reg_call_cc         (*Perl_Treg_call_cc_ptr(aTHX))
 #undef  PL_reg_curpm
@@ -834,12 +890,6 @@ END_EXTERN_C
 #define PL_regtill             (*Perl_Tregtill_ptr(aTHX))
 #undef  PL_restartop
 #define PL_restartop           (*Perl_Trestartop_ptr(aTHX))
-#undef  PL_retstack
-#define PL_retstack            (*Perl_Tretstack_ptr(aTHX))
-#undef  PL_retstack_ix
-#define PL_retstack_ix         (*Perl_Tretstack_ix_ptr(aTHX))
-#undef  PL_retstack_max
-#define PL_retstack_max                (*Perl_Tretstack_max_ptr(aTHX))
 #undef  PL_rs
 #define PL_rs                  (*Perl_Trs_ptr(aTHX))
 #undef  PL_savestack
@@ -906,41 +956,68 @@ END_EXTERN_C
 #define PL_No                  (*Perl_GNo_ptr(NULL))
 #undef  PL_Yes
 #define PL_Yes                 (*Perl_GYes_ptr(NULL))
+#undef  PL_appctx
+#define PL_appctx              (*Perl_Gappctx_ptr(NULL))
+#undef  PL_check
+#define PL_check               (*Perl_Gcheck_ptr(NULL))
+#undef  PL_csighandlerp
+#define PL_csighandlerp                (*Perl_Gcsighandlerp_ptr(NULL))
 #undef  PL_curinterp
 #define PL_curinterp           (*Perl_Gcurinterp_ptr(NULL))
 #undef  PL_do_undump
 #define PL_do_undump           (*Perl_Gdo_undump_ptr(NULL))
 #undef  PL_dollarzero_mutex
 #define PL_dollarzero_mutex    (*Perl_Gdollarzero_mutex_ptr(NULL))
+#undef  PL_fold_locale
+#define PL_fold_locale         (*Perl_Gfold_locale_ptr(NULL))
 #undef  PL_hexdigit
 #define PL_hexdigit            (*Perl_Ghexdigit_ptr(NULL))
-#undef  PL_lockhook
-#define PL_lockhook            (*Perl_Glockhook_ptr(NULL))
 #undef  PL_malloc_mutex
 #define PL_malloc_mutex                (*Perl_Gmalloc_mutex_ptr(NULL))
+#undef  PL_mmap_page_size
+#define PL_mmap_page_size      (*Perl_Gmmap_page_size_ptr(NULL))
 #undef  PL_op_mutex
 #define PL_op_mutex            (*Perl_Gop_mutex_ptr(NULL))
+#undef  PL_op_seq
+#define PL_op_seq              (*Perl_Gop_seq_ptr(NULL))
+#undef  PL_op_sequence
+#define PL_op_sequence         (*Perl_Gop_sequence_ptr(NULL))
 #undef  PL_patleave
 #define PL_patleave            (*Perl_Gpatleave_ptr(NULL))
-#undef  PL_ppid
-#define PL_ppid                        (*Perl_Gppid_ptr(NULL))
-#undef  PL_runops_dbg
-#define PL_runops_dbg          (*Perl_Grunops_dbg_ptr(NULL))
-#undef  PL_runops_std
-#define PL_runops_std          (*Perl_Grunops_std_ptr(NULL))
+#undef  PL_perlio_debug_fd
+#define PL_perlio_debug_fd     (*Perl_Gperlio_debug_fd_ptr(NULL))
+#undef  PL_perlio_fd_refcnt
+#define PL_perlio_fd_refcnt    (*Perl_Gperlio_fd_refcnt_ptr(NULL))
+#undef  PL_ppaddr
+#define PL_ppaddr              (*Perl_Gppaddr_ptr(NULL))
 #undef  PL_sh_path
 #define PL_sh_path             (*Perl_Gsh_path_ptr(NULL))
-#undef  PL_sharehook
-#define PL_sharehook           (*Perl_Gsharehook_ptr(NULL))
+#undef  PL_sig_defaulting
+#define PL_sig_defaulting      (*Perl_Gsig_defaulting_ptr(NULL))
+#undef  PL_sig_handlers_initted
+#define PL_sig_handlers_initted        (*Perl_Gsig_handlers_initted_ptr(NULL))
+#undef  PL_sig_ignoring
+#define PL_sig_ignoring                (*Perl_Gsig_ignoring_ptr(NULL))
+#undef  PL_sig_sv
+#define PL_sig_sv              (*Perl_Gsig_sv_ptr(NULL))
+#undef  PL_sig_trapped
+#define PL_sig_trapped         (*Perl_Gsig_trapped_ptr(NULL))
+#undef  PL_sigfpe_saved
+#define PL_sigfpe_saved                (*Perl_Gsigfpe_saved_ptr(NULL))
+#undef  PL_sv_placeholder
+#define PL_sv_placeholder      (*Perl_Gsv_placeholder_ptr(NULL))
 #undef  PL_thr_key
 #define PL_thr_key             (*Perl_Gthr_key_ptr(NULL))
-#undef  PL_threadhook
-#define PL_threadhook          (*Perl_Gthreadhook_ptr(NULL))
-#undef  PL_unlockhook
-#define PL_unlockhook          (*Perl_Gunlockhook_ptr(NULL))
+#undef  PL_timesbase
+#define PL_timesbase           (*Perl_Gtimesbase_ptr(NULL))
+#undef  PL_use_safe_putenv
+#define PL_use_safe_putenv     (*Perl_Guse_safe_putenv_ptr(NULL))
+#undef  PL_watch_pvx
+#define PL_watch_pvx           (*Perl_Gwatch_pvx_ptr(NULL))
 
 #endif /* !PERL_CORE */
 #endif /* MULTIPLICITY */
 
 #endif /* __perlapi_h__ */
 
+/* ex: set ro: */