comparison src/if_perl.xs @ 9353:32e1dfae5664 v7.4.1958

commit https://github.com/vim/vim/commit/eeb50ab5228c5c09743a9c2b907c3634c0146e84 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 26 17:19:46 2016 +0200 patch 7.4.1958 Problem: Perl interface preprocessor statements not nicely indented. Solution: Improve the indenting. (Ken Takata)
author Christian Brabandt <cb@256bit.org>
date Sun, 26 Jun 2016 17:30:07 +0200
parents 82cb3ed4781b
children fd9727ae3c49
comparison
equal deleted inserted replaced
9352:06e4f8536f81 9353:32e1dfae5664
80 * include if_perl.pro and perlsfio.pro when IN_PERL_FILE is defined, because 80 * include if_perl.pro and perlsfio.pro when IN_PERL_FILE is defined, because
81 * we need the CV typedef. proto.h can't be moved to after including 81 * we need the CV typedef. proto.h can't be moved to after including
82 * if_perl.h, because we get all sorts of name clashes then. 82 * if_perl.h, because we get all sorts of name clashes then.
83 */ 83 */
84 #ifndef PROTO 84 #ifndef PROTO
85 #ifndef __MINGW32__ 85 # ifndef __MINGW32__
86 # include "proto/if_perl.pro" 86 # include "proto/if_perl.pro"
87 # include "proto/if_perlsfio.pro" 87 # include "proto/if_perlsfio.pro"
88 #endif 88 # endif
89 #endif 89 #endif
90 90
91 /* Perl compatibility stuff. This should ensure compatibility with older 91 /* Perl compatibility stuff. This should ensure compatibility with older
92 * versions of Perl. 92 * versions of Perl.
93 */ 93 */
94 94
95 #ifndef PERL_VERSION 95 #ifndef PERL_VERSION
96 # include <patchlevel.h> 96 # include <patchlevel.h>
97 # define PERL_REVISION 5 97 # define PERL_REVISION 5
98 # define PERL_VERSION PATCHLEVEL 98 # define PERL_VERSION PATCHLEVEL
99 # define PERL_SUBVERSION SUBVERSION 99 # define PERL_SUBVERSION SUBVERSION
100 #endif 100 #endif
101 101
102 /* 102 /*
103 * Quoting Jan Dubois of Active State: 103 * Quoting Jan Dubois of Active State:
104 * ActivePerl build 822 still identifies itself as 5.8.8 but already 104 * ActivePerl build 822 still identifies itself as 5.8.8 but already
125 (PERL_VERSION == 10) && (PERL_SUBVERSION >= 1)) 125 (PERL_VERSION == 10) && (PERL_SUBVERSION >= 1))
126 # define PERL5101_OR_LATER 126 # define PERL5101_OR_LATER
127 #endif 127 #endif
128 128
129 #ifndef pTHX 129 #ifndef pTHX
130 # define pTHX void 130 # define pTHX void
131 # define pTHX_ 131 # define pTHX_
132 #endif 132 #endif
133 133
134 #ifndef EXTERN_C 134 #ifndef EXTERN_C
135 # define EXTERN_C 135 # define EXTERN_C
136 #endif 136 #endif
145 /* 145 /*
146 * For dynamic linked perl. 146 * For dynamic linked perl.
147 */ 147 */
148 #if defined(DYNAMIC_PERL) || defined(PROTO) 148 #if defined(DYNAMIC_PERL) || defined(PROTO)
149 149
150 #ifndef DYNAMIC_PERL /* just generating prototypes */ 150 # ifndef DYNAMIC_PERL /* just generating prototypes */
151 #ifdef WIN3264 151 # ifdef WIN3264
152 typedef int HANDLE; 152 typedef int HANDLE;
153 #endif 153 # endif
154 typedef int XSINIT_t; 154 typedef int XSINIT_t;
155 typedef int XSUBADDR_t; 155 typedef int XSUBADDR_t;
156 #endif 156 # endif
157 #ifndef USE_ITHREADS 157 # ifndef USE_ITHREADS
158 typedef int perl_key; 158 typedef int perl_key;
159 #endif 159 # endif
160 160
161 #ifndef WIN3264 161 # ifndef WIN3264
162 #include <dlfcn.h> 162 # include <dlfcn.h>
163 #define HANDLE void* 163 # define HANDLE void*
164 #define PERL_PROC void* 164 # define PERL_PROC void*
165 #define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) 165 # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL)
166 #define symbol_from_dll dlsym 166 # define symbol_from_dll dlsym
167 #define close_dll dlclose 167 # define close_dll dlclose
168 #else 168 # else
169 #define PERL_PROC FARPROC 169 # define PERL_PROC FARPROC
170 #define load_dll vimLoadLib 170 # define load_dll vimLoadLib
171 #define symbol_from_dll GetProcAddress 171 # define symbol_from_dll GetProcAddress
172 #define close_dll FreeLibrary 172 # define close_dll FreeLibrary
173 #endif 173 # endif
174 /* 174 /*
175 * Wrapper defines 175 * Wrapper defines
176 */ 176 */
177 # define perl_alloc dll_perl_alloc 177 # define perl_alloc dll_perl_alloc
178 # define perl_construct dll_perl_construct 178 # define perl_construct dll_perl_construct
231 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 231 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
232 # define Perl_sv_catpvn_flags dll_Perl_sv_catpvn_flags 232 # define Perl_sv_catpvn_flags dll_Perl_sv_catpvn_flags
233 # else 233 # else
234 # define Perl_sv_catpvn dll_Perl_sv_catpvn 234 # define Perl_sv_catpvn dll_Perl_sv_catpvn
235 # endif 235 # endif
236 #ifdef PERL589_OR_LATER 236 # ifdef PERL589_OR_LATER
237 # define Perl_sv_2iv_flags dll_Perl_sv_2iv_flags 237 # define Perl_sv_2iv_flags dll_Perl_sv_2iv_flags
238 # define Perl_newXS_flags dll_Perl_newXS_flags 238 # define Perl_newXS_flags dll_Perl_newXS_flags
239 #endif 239 # endif
240 # define Perl_sv_free dll_Perl_sv_free 240 # define Perl_sv_free dll_Perl_sv_free
241 # if (PERL_REVISION == 5) && (PERL_VERSION >= 10) 241 # if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
242 # define Perl_sv_free2 dll_Perl_sv_free2 242 # define Perl_sv_free2 dll_Perl_sv_free2
243 # endif 243 # endif
244 # define Perl_sv_isa dll_Perl_sv_isa 244 # define Perl_sv_isa dll_Perl_sv_isa
320 static void (*perl_free)(PerlInterpreter*); 320 static void (*perl_free)(PerlInterpreter*);
321 static int (*perl_run)(PerlInterpreter*); 321 static int (*perl_run)(PerlInterpreter*);
322 static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**); 322 static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
323 static void* (*Perl_get_context)(void); 323 static void* (*Perl_get_context)(void);
324 static void (*Perl_croak)(pTHX_ const char*, ...) __attribute__noreturn__; 324 static void (*Perl_croak)(pTHX_ const char*, ...) __attribute__noreturn__;
325 #ifdef PERL5101_OR_LATER 325 # ifdef PERL5101_OR_LATER
326 /* Perl-5.18 has a different Perl_croak_xs_usage signature. */ 326 /* Perl-5.18 has a different Perl_croak_xs_usage signature. */
327 # if (PERL_REVISION == 5) && (PERL_VERSION >= 18) 327 # if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
328 static void (*Perl_croak_xs_usage)(const CV *const, const char *const params) 328 static void (*Perl_croak_xs_usage)(const CV *const, const char *const params)
329 __attribute__noreturn__; 329 __attribute__noreturn__;
330 # else 330 # else
331 static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params) 331 static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params)
332 __attribute__noreturn__; 332 __attribute__noreturn__;
333 # endif 333 # endif
334 #endif 334 # endif
335 static void (*Perl_croak_nocontext)(const char*, ...) __attribute__noreturn__; 335 static void (*Perl_croak_nocontext)(const char*, ...) __attribute__noreturn__;
336 static I32 (*Perl_dowantarray)(pTHX); 336 static I32 (*Perl_dowantarray)(pTHX);
337 static void (*Perl_free_tmps)(pTHX); 337 static void (*Perl_free_tmps)(pTHX);
338 static HV* (*Perl_gv_stashpv)(pTHX_ const char*, I32); 338 static HV* (*Perl_gv_stashpv)(pTHX_ const char*, I32);
339 #if (PERL_REVISION == 5) && (PERL_VERSION >= 22) 339 # if (PERL_REVISION == 5) && (PERL_VERSION >= 22)
340 static I32* (*Perl_markstack_grow)(pTHX); 340 static I32* (*Perl_markstack_grow)(pTHX);
341 #else 341 # else
342 static void (*Perl_markstack_grow)(pTHX); 342 static void (*Perl_markstack_grow)(pTHX);
343 #endif 343 # endif
344 static MAGIC* (*Perl_mg_find)(pTHX_ SV*, int); 344 static MAGIC* (*Perl_mg_find)(pTHX_ SV*, int);
345 static CV* (*Perl_newXS)(pTHX_ char*, XSUBADDR_t, char*); 345 static CV* (*Perl_newXS)(pTHX_ char*, XSUBADDR_t, char*);
346 static SV* (*Perl_newSV)(pTHX_ STRLEN); 346 static SV* (*Perl_newSV)(pTHX_ STRLEN);
347 static SV* (*Perl_newSViv)(pTHX_ IV); 347 static SV* (*Perl_newSViv)(pTHX_ IV);
348 static SV* (*Perl_newSVpv)(pTHX_ const char*, STRLEN); 348 static SV* (*Perl_newSVpv)(pTHX_ const char*, STRLEN);
353 static SV* (*Perl_eval_pv)(pTHX_ const char*, I32); 353 static SV* (*Perl_eval_pv)(pTHX_ const char*, I32);
354 static SV* (*Perl_call_method)(pTHX_ const char*, I32); 354 static SV* (*Perl_call_method)(pTHX_ const char*, I32);
355 static void (*Perl_pop_scope)(pTHX); 355 static void (*Perl_pop_scope)(pTHX);
356 static void (*Perl_push_scope)(pTHX); 356 static void (*Perl_push_scope)(pTHX);
357 static void (*Perl_save_int)(pTHX_ int*); 357 static void (*Perl_save_int)(pTHX_ int*);
358 #if (PERL_REVISION == 5) && (PERL_VERSION >= 20) 358 # if (PERL_REVISION == 5) && (PERL_VERSION >= 20)
359 static void (*Perl_save_strlen)(pTHX_ STRLEN* ptr); 359 static void (*Perl_save_strlen)(pTHX_ STRLEN* ptr);
360 #endif 360 # endif
361 static SV** (*Perl_stack_grow)(pTHX_ SV**, SV**p, int); 361 static SV** (*Perl_stack_grow)(pTHX_ SV**, SV**p, int);
362 static SV** (*Perl_set_context)(void*); 362 static SV** (*Perl_set_context)(void*);
363 #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) 363 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
364 static bool (*Perl_sv_2bool_flags)(pTHX_ SV*, I32); 364 static bool (*Perl_sv_2bool_flags)(pTHX_ SV*, I32);
365 # if (PERL_REVISION == 5) && (PERL_VERSION < 22) 365 # if (PERL_REVISION == 5) && (PERL_VERSION < 22)
366 static void (*Perl_xs_apiversion_bootcheck)(pTHX_ SV *module, const char *api_p, STRLEN api_len); 366 static void (*Perl_xs_apiversion_bootcheck)(pTHX_ SV *module, const char *api_p, STRLEN api_len);
367 # endif 367 # endif
368 #else 368 # else
369 static bool (*Perl_sv_2bool)(pTHX_ SV*); 369 static bool (*Perl_sv_2bool)(pTHX_ SV*);
370 #endif 370 # endif
371 static IV (*Perl_sv_2iv)(pTHX_ SV*); 371 static IV (*Perl_sv_2iv)(pTHX_ SV*);
372 static SV* (*Perl_sv_2mortal)(pTHX_ SV*); 372 static SV* (*Perl_sv_2mortal)(pTHX_ SV*);
373 #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 373 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
374 static char* (*Perl_sv_2pv_flags)(pTHX_ SV*, STRLEN*, I32); 374 static char* (*Perl_sv_2pv_flags)(pTHX_ SV*, STRLEN*, I32);
375 static char* (*Perl_sv_2pv_nolen)(pTHX_ SV*); 375 static char* (*Perl_sv_2pv_nolen)(pTHX_ SV*);
376 #else 376 # else
377 static char* (*Perl_sv_2pv)(pTHX_ SV*, STRLEN*); 377 static char* (*Perl_sv_2pv)(pTHX_ SV*, STRLEN*);
378 #endif 378 # endif
379 static SV* (*Perl_sv_bless)(pTHX_ SV*, HV*); 379 static SV* (*Perl_sv_bless)(pTHX_ SV*, HV*);
380 #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 380 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
381 static void (*Perl_sv_catpvn_flags)(pTHX_ SV* , const char*, STRLEN, I32); 381 static void (*Perl_sv_catpvn_flags)(pTHX_ SV* , const char*, STRLEN, I32);
382 #else 382 # else
383 static void (*Perl_sv_catpvn)(pTHX_ SV*, const char*, STRLEN); 383 static void (*Perl_sv_catpvn)(pTHX_ SV*, const char*, STRLEN);
384 #endif 384 # endif
385 #ifdef PERL589_OR_LATER 385 # ifdef PERL589_OR_LATER
386 static IV (*Perl_sv_2iv_flags)(pTHX_ SV* sv, I32 flags); 386 static IV (*Perl_sv_2iv_flags)(pTHX_ SV* sv, I32 flags);
387 static CV * (*Perl_newXS_flags)(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags); 387 static CV * (*Perl_newXS_flags)(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags);
388 #endif 388 # endif
389 static void (*Perl_sv_free)(pTHX_ SV*); 389 static void (*Perl_sv_free)(pTHX_ SV*);
390 static int (*Perl_sv_isa)(pTHX_ SV*, const char*); 390 static int (*Perl_sv_isa)(pTHX_ SV*, const char*);
391 static void (*Perl_sv_magic)(pTHX_ SV*, SV*, int, const char*, I32); 391 static void (*Perl_sv_magic)(pTHX_ SV*, SV*, int, const char*, I32);
392 static void (*Perl_sv_setiv)(pTHX_ SV*, IV); 392 static void (*Perl_sv_setiv)(pTHX_ SV*, IV);
393 static void (*Perl_sv_setpv)(pTHX_ SV*, const char*); 393 static void (*Perl_sv_setpv)(pTHX_ SV*, const char*);
394 static void (*Perl_sv_setpvn)(pTHX_ SV*, const char*, STRLEN); 394 static void (*Perl_sv_setpvn)(pTHX_ SV*, const char*, STRLEN);
395 #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 395 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
396 static void (*Perl_sv_setsv_flags)(pTHX_ SV*, SV*, I32); 396 static void (*Perl_sv_setsv_flags)(pTHX_ SV*, SV*, I32);
397 #else 397 # else
398 static void (*Perl_sv_setsv)(pTHX_ SV*, SV*); 398 static void (*Perl_sv_setsv)(pTHX_ SV*, SV*);
399 #endif 399 # endif
400 static bool (*Perl_sv_upgrade)(pTHX_ SV*, U32); 400 static bool (*Perl_sv_upgrade)(pTHX_ SV*, U32);
401 #if (PERL_REVISION == 5) && (PERL_VERSION < 10) 401 # if (PERL_REVISION == 5) && (PERL_VERSION < 10)
402 static SV*** (*Perl_Tstack_sp_ptr)(register PerlInterpreter*); 402 static SV*** (*Perl_Tstack_sp_ptr)(register PerlInterpreter*);
403 static OP** (*Perl_Top_ptr)(register PerlInterpreter*); 403 static OP** (*Perl_Top_ptr)(register PerlInterpreter*);
404 static SV*** (*Perl_Tstack_base_ptr)(register PerlInterpreter*); 404 static SV*** (*Perl_Tstack_base_ptr)(register PerlInterpreter*);
405 static SV*** (*Perl_Tstack_max_ptr)(register PerlInterpreter*); 405 static SV*** (*Perl_Tstack_max_ptr)(register PerlInterpreter*);
406 static I32* (*Perl_Ttmps_ix_ptr)(register PerlInterpreter*); 406 static I32* (*Perl_Ttmps_ix_ptr)(register PerlInterpreter*);
408 static I32** (*Perl_Tmarkstack_ptr_ptr)(register PerlInterpreter*); 408 static I32** (*Perl_Tmarkstack_ptr_ptr)(register PerlInterpreter*);
409 static I32** (*Perl_Tmarkstack_max_ptr)(register PerlInterpreter*); 409 static I32** (*Perl_Tmarkstack_max_ptr)(register PerlInterpreter*);
410 static SV** (*Perl_TSv_ptr)(register PerlInterpreter*); 410 static SV** (*Perl_TSv_ptr)(register PerlInterpreter*);
411 static XPV** (*Perl_TXpv_ptr)(register PerlInterpreter*); 411 static XPV** (*Perl_TXpv_ptr)(register PerlInterpreter*);
412 static STRLEN* (*Perl_Tna_ptr)(register PerlInterpreter*); 412 static STRLEN* (*Perl_Tna_ptr)(register PerlInterpreter*);
413 #else 413 # else
414 /* Perl-5.18 has a different Perl_sv_free2 signature. */ 414 /* Perl-5.18 has a different Perl_sv_free2 signature. */
415 # if (PERL_REVISION == 5) && (PERL_VERSION >= 18) 415 # if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
416 static void (*Perl_sv_free2)(pTHX_ SV*, const U32); 416 static void (*Perl_sv_free2)(pTHX_ SV*, const U32);
417 # else 417 # else
418 static void (*Perl_sv_free2)(pTHX_ SV*); 418 static void (*Perl_sv_free2)(pTHX_ SV*);
419 # endif 419 # endif
420 static void (*Perl_sys_init)(int* argc, char*** argv); 420 static void (*Perl_sys_init)(int* argc, char*** argv);
421 static void (*Perl_sys_term)(void); 421 static void (*Perl_sys_term)(void);
422 static void (*Perl_call_list)(pTHX_ I32, AV*); 422 static void (*Perl_call_list)(pTHX_ I32, AV*);
423 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) 423 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
424 # else 424 # else
425 static SV** (*Perl_ISv_ptr)(register PerlInterpreter*); 425 static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
426 static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*); 426 static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
427 static SV*** (*Perl_Istack_base_ptr)(register PerlInterpreter*); 427 static SV*** (*Perl_Istack_base_ptr)(register PerlInterpreter*);
428 static XPV** (*Perl_IXpv_ptr)(register PerlInterpreter*); 428 static XPV** (*Perl_IXpv_ptr)(register PerlInterpreter*);
429 static I32* (*Perl_Itmps_ix_ptr)(register PerlInterpreter*); 429 static I32* (*Perl_Itmps_ix_ptr)(register PerlInterpreter*);
433 static I32** (*Perl_Imarkstack_max_ptr)(register PerlInterpreter*); 433 static I32** (*Perl_Imarkstack_max_ptr)(register PerlInterpreter*);
434 static SV*** (*Perl_Istack_sp_ptr)(register PerlInterpreter*); 434 static SV*** (*Perl_Istack_sp_ptr)(register PerlInterpreter*);
435 static OP** (*Perl_Iop_ptr)(register PerlInterpreter*); 435 static OP** (*Perl_Iop_ptr)(register PerlInterpreter*);
436 static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*); 436 static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*);
437 static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*); 437 static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*);
438 # endif 438 # endif
439 #endif 439 # endif
440 #if (PERL_REVISION == 5) && (PERL_VERSION >= 22) 440 # if (PERL_REVISION == 5) && (PERL_VERSION >= 22)
441 static I32 (*Perl_xs_handshake)(const U32, void *, const char *, ...); 441 static I32 (*Perl_xs_handshake)(const U32, void *, const char *, ...);
442 static void (*Perl_xs_boot_epilog)(pTHX_ const U32); 442 static void (*Perl_xs_boot_epilog)(pTHX_ const U32);
443 #endif 443 # endif
444 444
445 #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) 445 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
446 # ifdef USE_ITHREADS 446 # ifdef USE_ITHREADS
447 static perl_key* dll_PL_thr_key; 447 static perl_key* dll_PL_thr_key;
448 # endif 448 # endif
449 #else 449 # else
450 static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); 450 static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*);
451 static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*); 451 static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*);
452 static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*); 452 static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*);
453 static perl_key* (*Perl_Gthr_key_ptr)_((pTHX)); 453 static perl_key* (*Perl_Gthr_key_ptr)_((pTHX));
454 #endif 454 # endif
455 static void (*boot_DynaLoader)_((pTHX_ CV*)); 455 static void (*boot_DynaLoader)_((pTHX_ CV*));
456 static HE * (*Perl_hv_iternext_flags)(pTHX_ HV *, I32); 456 static HE * (*Perl_hv_iternext_flags)(pTHX_ HV *, I32);
457 static I32 (*Perl_hv_iterinit)(pTHX_ HV *); 457 static I32 (*Perl_hv_iterinit)(pTHX_ HV *);
458 static char * (*Perl_hv_iterkey)(pTHX_ HE *, I32 *); 458 static char * (*Perl_hv_iterkey)(pTHX_ HE *, I32 *);
459 static SV * (*Perl_hv_iterval)(pTHX_ HV *, HE *); 459 static SV * (*Perl_hv_iterval)(pTHX_ HV *, HE *);
460 static SV** (*Perl_av_fetch)(pTHX_ AV *, SSize_t, I32); 460 static SV** (*Perl_av_fetch)(pTHX_ AV *, SSize_t, I32);
461 static SSize_t (*Perl_av_len)(pTHX_ AV *); 461 static SSize_t (*Perl_av_len)(pTHX_ AV *);
462 static NV (*Perl_sv_2nv_flags)(pTHX_ SV *const, const I32); 462 static NV (*Perl_sv_2nv_flags)(pTHX_ SV *const, const I32);
463 #if defined(PERLIO_LAYERS) && !defined(USE_SFIO) 463 # if defined(PERLIO_LAYERS) && !defined(USE_SFIO)
464 static IV (*PerlIOBase_pushed)(pTHX_ PerlIO *, const char *, SV *, PerlIO_funcs *); 464 static IV (*PerlIOBase_pushed)(pTHX_ PerlIO *, const char *, SV *, PerlIO_funcs *);
465 static void (*PerlIO_define_layer)(pTHX_ PerlIO_funcs *); 465 static void (*PerlIO_define_layer)(pTHX_ PerlIO_funcs *);
466 #endif 466 # endif
467 #if (PERL_REVISION == 5) && (PERL_VERSION >= 24) 467 # if (PERL_REVISION == 5) && (PERL_VERSION >= 24)
468 static void (*Perl_savetmps)(pTHX); 468 static void (*Perl_savetmps)(pTHX);
469 #endif 469 # endif
470 470
471 /* 471 /*
472 * Table of name to function pointer of perl. 472 * Table of name to function pointer of perl.
473 */ 473 */
474 static struct { 474 static struct {
481 {"perl_free", (PERL_PROC*)&perl_free}, 481 {"perl_free", (PERL_PROC*)&perl_free},
482 {"perl_run", (PERL_PROC*)&perl_run}, 482 {"perl_run", (PERL_PROC*)&perl_run},
483 {"perl_parse", (PERL_PROC*)&perl_parse}, 483 {"perl_parse", (PERL_PROC*)&perl_parse},
484 {"Perl_get_context", (PERL_PROC*)&Perl_get_context}, 484 {"Perl_get_context", (PERL_PROC*)&Perl_get_context},
485 {"Perl_croak", (PERL_PROC*)&Perl_croak}, 485 {"Perl_croak", (PERL_PROC*)&Perl_croak},
486 #ifdef PERL5101_OR_LATER 486 # ifdef PERL5101_OR_LATER
487 {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage}, 487 {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage},
488 #endif 488 # endif
489 #ifdef PERL_IMPLICIT_CONTEXT 489 # ifdef PERL_IMPLICIT_CONTEXT
490 {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext}, 490 {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext},
491 #endif 491 # endif
492 {"Perl_dowantarray", (PERL_PROC*)&Perl_dowantarray}, 492 {"Perl_dowantarray", (PERL_PROC*)&Perl_dowantarray},
493 {"Perl_free_tmps", (PERL_PROC*)&Perl_free_tmps}, 493 {"Perl_free_tmps", (PERL_PROC*)&Perl_free_tmps},
494 {"Perl_gv_stashpv", (PERL_PROC*)&Perl_gv_stashpv}, 494 {"Perl_gv_stashpv", (PERL_PROC*)&Perl_gv_stashpv},
495 {"Perl_markstack_grow", (PERL_PROC*)&Perl_markstack_grow}, 495 {"Perl_markstack_grow", (PERL_PROC*)&Perl_markstack_grow},
496 {"Perl_mg_find", (PERL_PROC*)&Perl_mg_find}, 496 {"Perl_mg_find", (PERL_PROC*)&Perl_mg_find},
505 {"Perl_eval_pv", (PERL_PROC*)&Perl_eval_pv}, 505 {"Perl_eval_pv", (PERL_PROC*)&Perl_eval_pv},
506 {"Perl_call_method", (PERL_PROC*)&Perl_call_method}, 506 {"Perl_call_method", (PERL_PROC*)&Perl_call_method},
507 {"Perl_pop_scope", (PERL_PROC*)&Perl_pop_scope}, 507 {"Perl_pop_scope", (PERL_PROC*)&Perl_pop_scope},
508 {"Perl_push_scope", (PERL_PROC*)&Perl_push_scope}, 508 {"Perl_push_scope", (PERL_PROC*)&Perl_push_scope},
509 {"Perl_save_int", (PERL_PROC*)&Perl_save_int}, 509 {"Perl_save_int", (PERL_PROC*)&Perl_save_int},
510 #if (PERL_REVISION == 5) && (PERL_VERSION >= 20) 510 # if (PERL_REVISION == 5) && (PERL_VERSION >= 20)
511 {"Perl_save_strlen", (PERL_PROC*)&Perl_save_strlen}, 511 {"Perl_save_strlen", (PERL_PROC*)&Perl_save_strlen},
512 #endif 512 # endif
513 {"Perl_stack_grow", (PERL_PROC*)&Perl_stack_grow}, 513 {"Perl_stack_grow", (PERL_PROC*)&Perl_stack_grow},
514 {"Perl_set_context", (PERL_PROC*)&Perl_set_context}, 514 {"Perl_set_context", (PERL_PROC*)&Perl_set_context},
515 #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) 515 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
516 {"Perl_sv_2bool_flags", (PERL_PROC*)&Perl_sv_2bool_flags}, 516 {"Perl_sv_2bool_flags", (PERL_PROC*)&Perl_sv_2bool_flags},
517 # if (PERL_REVISION == 5) && (PERL_VERSION < 22) 517 # if (PERL_REVISION == 5) && (PERL_VERSION < 22)
518 {"Perl_xs_apiversion_bootcheck",(PERL_PROC*)&Perl_xs_apiversion_bootcheck}, 518 {"Perl_xs_apiversion_bootcheck",(PERL_PROC*)&Perl_xs_apiversion_bootcheck},
519 # endif 519 # endif
520 #else 520 # else
521 {"Perl_sv_2bool", (PERL_PROC*)&Perl_sv_2bool}, 521 {"Perl_sv_2bool", (PERL_PROC*)&Perl_sv_2bool},
522 #endif 522 # endif
523 {"Perl_sv_2iv", (PERL_PROC*)&Perl_sv_2iv}, 523 {"Perl_sv_2iv", (PERL_PROC*)&Perl_sv_2iv},
524 {"Perl_sv_2mortal", (PERL_PROC*)&Perl_sv_2mortal}, 524 {"Perl_sv_2mortal", (PERL_PROC*)&Perl_sv_2mortal},
525 #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 525 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
526 {"Perl_sv_2pv_flags", (PERL_PROC*)&Perl_sv_2pv_flags}, 526 {"Perl_sv_2pv_flags", (PERL_PROC*)&Perl_sv_2pv_flags},
527 {"Perl_sv_2pv_nolen", (PERL_PROC*)&Perl_sv_2pv_nolen}, 527 {"Perl_sv_2pv_nolen", (PERL_PROC*)&Perl_sv_2pv_nolen},
528 #else 528 # else
529 {"Perl_sv_2pv", (PERL_PROC*)&Perl_sv_2pv}, 529 {"Perl_sv_2pv", (PERL_PROC*)&Perl_sv_2pv},
530 #endif 530 # endif
531 #ifdef PERL589_OR_LATER 531 # ifdef PERL589_OR_LATER
532 {"Perl_sv_2iv_flags", (PERL_PROC*)&Perl_sv_2iv_flags}, 532 {"Perl_sv_2iv_flags", (PERL_PROC*)&Perl_sv_2iv_flags},
533 {"Perl_newXS_flags", (PERL_PROC*)&Perl_newXS_flags}, 533 {"Perl_newXS_flags", (PERL_PROC*)&Perl_newXS_flags},
534 #endif 534 # endif
535 {"Perl_sv_bless", (PERL_PROC*)&Perl_sv_bless}, 535 {"Perl_sv_bless", (PERL_PROC*)&Perl_sv_bless},
536 #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 536 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
537 {"Perl_sv_catpvn_flags", (PERL_PROC*)&Perl_sv_catpvn_flags}, 537 {"Perl_sv_catpvn_flags", (PERL_PROC*)&Perl_sv_catpvn_flags},
538 #else 538 # else
539 {"Perl_sv_catpvn", (PERL_PROC*)&Perl_sv_catpvn}, 539 {"Perl_sv_catpvn", (PERL_PROC*)&Perl_sv_catpvn},
540 #endif 540 # endif
541 {"Perl_sv_free", (PERL_PROC*)&Perl_sv_free}, 541 {"Perl_sv_free", (PERL_PROC*)&Perl_sv_free},
542 {"Perl_sv_isa", (PERL_PROC*)&Perl_sv_isa}, 542 {"Perl_sv_isa", (PERL_PROC*)&Perl_sv_isa},
543 {"Perl_sv_magic", (PERL_PROC*)&Perl_sv_magic}, 543 {"Perl_sv_magic", (PERL_PROC*)&Perl_sv_magic},
544 {"Perl_sv_setiv", (PERL_PROC*)&Perl_sv_setiv}, 544 {"Perl_sv_setiv", (PERL_PROC*)&Perl_sv_setiv},
545 {"Perl_sv_setpv", (PERL_PROC*)&Perl_sv_setpv}, 545 {"Perl_sv_setpv", (PERL_PROC*)&Perl_sv_setpv},
546 {"Perl_sv_setpvn", (PERL_PROC*)&Perl_sv_setpvn}, 546 {"Perl_sv_setpvn", (PERL_PROC*)&Perl_sv_setpvn},
547 #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 547 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
548 {"Perl_sv_setsv_flags", (PERL_PROC*)&Perl_sv_setsv_flags}, 548 {"Perl_sv_setsv_flags", (PERL_PROC*)&Perl_sv_setsv_flags},
549 #else 549 # else
550 {"Perl_sv_setsv", (PERL_PROC*)&Perl_sv_setsv}, 550 {"Perl_sv_setsv", (PERL_PROC*)&Perl_sv_setsv},
551 #endif 551 # endif
552 {"Perl_sv_upgrade", (PERL_PROC*)&Perl_sv_upgrade}, 552 {"Perl_sv_upgrade", (PERL_PROC*)&Perl_sv_upgrade},
553 #if (PERL_REVISION == 5) && (PERL_VERSION < 10) 553 # if (PERL_REVISION == 5) && (PERL_VERSION < 10)
554 {"Perl_Tstack_sp_ptr", (PERL_PROC*)&Perl_Tstack_sp_ptr}, 554 {"Perl_Tstack_sp_ptr", (PERL_PROC*)&Perl_Tstack_sp_ptr},
555 {"Perl_Top_ptr", (PERL_PROC*)&Perl_Top_ptr}, 555 {"Perl_Top_ptr", (PERL_PROC*)&Perl_Top_ptr},
556 {"Perl_Tstack_base_ptr", (PERL_PROC*)&Perl_Tstack_base_ptr}, 556 {"Perl_Tstack_base_ptr", (PERL_PROC*)&Perl_Tstack_base_ptr},
557 {"Perl_Tstack_max_ptr", (PERL_PROC*)&Perl_Tstack_max_ptr}, 557 {"Perl_Tstack_max_ptr", (PERL_PROC*)&Perl_Tstack_max_ptr},
558 {"Perl_Ttmps_ix_ptr", (PERL_PROC*)&Perl_Ttmps_ix_ptr}, 558 {"Perl_Ttmps_ix_ptr", (PERL_PROC*)&Perl_Ttmps_ix_ptr},
560 {"Perl_Tmarkstack_ptr_ptr", (PERL_PROC*)&Perl_Tmarkstack_ptr_ptr}, 560 {"Perl_Tmarkstack_ptr_ptr", (PERL_PROC*)&Perl_Tmarkstack_ptr_ptr},
561 {"Perl_Tmarkstack_max_ptr", (PERL_PROC*)&Perl_Tmarkstack_max_ptr}, 561 {"Perl_Tmarkstack_max_ptr", (PERL_PROC*)&Perl_Tmarkstack_max_ptr},
562 {"Perl_TSv_ptr", (PERL_PROC*)&Perl_TSv_ptr}, 562 {"Perl_TSv_ptr", (PERL_PROC*)&Perl_TSv_ptr},
563 {"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr}, 563 {"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr},
564 {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr}, 564 {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
565 #else 565 # else
566 {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2}, 566 {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
567 {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init}, 567 {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init},
568 {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term}, 568 {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
569 {"Perl_call_list", (PERL_PROC*)&Perl_call_list}, 569 {"Perl_call_list", (PERL_PROC*)&Perl_call_list},
570 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14) 570 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
571 # else 571 # else
572 {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr}, 572 {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
573 {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr}, 573 {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr},
574 {"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr}, 574 {"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr},
575 {"Perl_IXpv_ptr", (PERL_PROC*)&Perl_IXpv_ptr}, 575 {"Perl_IXpv_ptr", (PERL_PROC*)&Perl_IXpv_ptr},
576 {"Perl_Itmps_ix_ptr", (PERL_PROC*)&Perl_Itmps_ix_ptr}, 576 {"Perl_Itmps_ix_ptr", (PERL_PROC*)&Perl_Itmps_ix_ptr},
580 {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr}, 580 {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr},
581 {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr}, 581 {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
582 {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr}, 582 {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr},
583 {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr}, 583 {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr},
584 {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr}, 584 {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr},
585 # endif 585 # endif
586 #endif 586 # endif
587 #if (PERL_REVISION == 5) && (PERL_VERSION >= 22) 587 # if (PERL_REVISION == 5) && (PERL_VERSION >= 22)
588 {"Perl_xs_handshake", (PERL_PROC*)&Perl_xs_handshake}, 588 {"Perl_xs_handshake", (PERL_PROC*)&Perl_xs_handshake},
589 {"Perl_xs_boot_epilog", (PERL_PROC*)&Perl_xs_boot_epilog}, 589 {"Perl_xs_boot_epilog", (PERL_PROC*)&Perl_xs_boot_epilog},
590 #endif 590 # endif
591 #if (PERL_REVISION == 5) && (PERL_VERSION >= 14) 591 # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
592 # ifdef USE_ITHREADS 592 # ifdef USE_ITHREADS
593 {"PL_thr_key", (PERL_PROC*)&dll_PL_thr_key}, 593 {"PL_thr_key", (PERL_PROC*)&dll_PL_thr_key},
594 # endif 594 # endif
595 #else 595 # else
596 {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, 596 {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr},
597 {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, 597 {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr},
598 {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr}, 598 {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr},
599 {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr}, 599 {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr},
600 #endif 600 # endif
601 {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader}, 601 {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader},
602 {"Perl_hv_iternext_flags", (PERL_PROC*)&Perl_hv_iternext_flags}, 602 {"Perl_hv_iternext_flags", (PERL_PROC*)&Perl_hv_iternext_flags},
603 {"Perl_hv_iterinit", (PERL_PROC*)&Perl_hv_iterinit}, 603 {"Perl_hv_iterinit", (PERL_PROC*)&Perl_hv_iterinit},
604 {"Perl_hv_iterkey", (PERL_PROC*)&Perl_hv_iterkey}, 604 {"Perl_hv_iterkey", (PERL_PROC*)&Perl_hv_iterkey},
605 {"Perl_hv_iterval", (PERL_PROC*)&Perl_hv_iterval}, 605 {"Perl_hv_iterval", (PERL_PROC*)&Perl_hv_iterval},
606 {"Perl_av_fetch", (PERL_PROC*)&Perl_av_fetch}, 606 {"Perl_av_fetch", (PERL_PROC*)&Perl_av_fetch},
607 {"Perl_av_len", (PERL_PROC*)&Perl_av_len}, 607 {"Perl_av_len", (PERL_PROC*)&Perl_av_len},
608 {"Perl_sv_2nv_flags", (PERL_PROC*)&Perl_sv_2nv_flags}, 608 {"Perl_sv_2nv_flags", (PERL_PROC*)&Perl_sv_2nv_flags},
609 #if defined(PERLIO_LAYERS) && !defined(USE_SFIO) 609 # if defined(PERLIO_LAYERS) && !defined(USE_SFIO)
610 {"PerlIOBase_pushed", (PERL_PROC*)&PerlIOBase_pushed}, 610 {"PerlIOBase_pushed", (PERL_PROC*)&PerlIOBase_pushed},
611 {"PerlIO_define_layer", (PERL_PROC*)&PerlIO_define_layer}, 611 {"PerlIO_define_layer", (PERL_PROC*)&PerlIO_define_layer},
612 #endif 612 # endif
613 #if (PERL_REVISION == 5) && (PERL_VERSION >= 24) 613 # if (PERL_REVISION == 5) && (PERL_VERSION >= 24)
614 {"Perl_savetmps", (PERL_PROC*)&Perl_savetmps}, 614 {"Perl_savetmps", (PERL_PROC*)&Perl_savetmps},
615 #endif 615 # endif
616 {"", NULL}, 616 {"", NULL},
617 }; 617 };
618 618
619 /* Work around for perl-5.18. 619 /* Work around for perl-5.18.
620 * For now, only the definitions of S_SvREFCNT_dec are needed in 620 * For now, only the definitions of S_SvREFCNT_dec are needed in
621 * "perl\lib\CORE\inline.h". */ 621 * "perl\lib\CORE\inline.h". */
622 #if (PERL_REVISION == 5) && (PERL_VERSION >= 18) 622 # if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
623 static void 623 static void
624 S_SvREFCNT_dec(pTHX_ SV *sv) 624 S_SvREFCNT_dec(pTHX_ SV *sv)
625 { 625 {
626 if (LIKELY(sv != NULL)) { 626 if (LIKELY(sv != NULL)) {
627 U32 rc = SvREFCNT(sv); 627 U32 rc = SvREFCNT(sv);
629 SvREFCNT(sv) = rc - 1; 629 SvREFCNT(sv) = rc - 1;
630 else 630 else
631 Perl_sv_free2(aTHX_ sv, rc); 631 Perl_sv_free2(aTHX_ sv, rc);
632 } 632 }
633 } 633 }
634 #endif 634 # endif
635 635
636 /* 636 /*
637 * Make all runtime-links of perl. 637 * Make all runtime-links of perl.
638 * 638 *
639 * 1. Get module handle using dlopen() or vimLoadLib(). 639 * 1. Get module handle using dlopen() or vimLoadLib().
844 #ifndef PROTO 844 #ifndef PROTO
845 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8) 845 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
846 I32 cur_val(pTHX_ IV iv, SV *sv); 846 I32 cur_val(pTHX_ IV iv, SV *sv);
847 # else 847 # else
848 I32 cur_val(IV iv, SV *sv); 848 I32 cur_val(IV iv, SV *sv);
849 #endif 849 # endif
850 850
851 /* 851 /*
852 * Handler for the magic variables $main::curwin and $main::curbuf. 852 * Handler for the magic variables $main::curwin and $main::curbuf.
853 * The handler is put into the magic vtbl for these variables. 853 * The handler is put into the magic vtbl for these variables.
854 * (This is effectively a C-level equivalent of a tied variable). 854 * (This is effectively a C-level equivalent of a tied variable).