This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make UNIVERSAL::can treats str and num the same way
[perl5.git]
/
perl.h
diff --git
a/perl.h
b/perl.h
index
30bee51
..
798e7b7
100644
(file)
--- a/
perl.h
+++ b/
perl.h
@@
-359,7
+359,11
@@
/* Rats: if dTHR is just blank then the subsequent ";" throws an error */
/* Declaring a *function*, instead of a variable, ensures that we don't rely
on being able to suppress "unused" warnings. */
/* Rats: if dTHR is just blank then the subsequent ";" throws an error */
/* Declaring a *function*, instead of a variable, ensures that we don't rely
on being able to suppress "unused" warnings. */
+#ifdef __cplusplus
+#define dNOOP (void)0
+#else
#define dNOOP extern int Perl___notused(void)
#define dNOOP extern int Perl___notused(void)
+#endif
#ifndef pTHX
/* Don't bother defining tTHX and sTHX; using them outside
#ifndef pTHX
/* Don't bother defining tTHX and sTHX; using them outside
@@
-491,9
+495,6
@@
register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
# endif
#endif
# endif
#endif
-#define WITH_THX(s) STMT_START { dTHX; s; } STMT_END
-#define WITH_THR(s) WITH_THX(s)
-
#ifndef BYTEORDER /* Should never happen -- byteorder is in config.h */
# define BYTEORDER 0x1234
#endif
#ifndef BYTEORDER /* Should never happen -- byteorder is in config.h */
# define BYTEORDER 0x1234
#endif
@@
-977,17
+978,6
@@
EXTERN_C int usleep(unsigned int);
#define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
#endif
#define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
#endif
-/* Cannot include embed.h here on Win32 as win32.h has not
- yet been included and defines some config variables e.g. HAVE_INTERP_INTERN
- */
-#if !defined(PERL_FOR_X2P) && !(defined(WIN32)||defined(VMS))
-# include "embed.h"
-# ifndef PERL_MAD
-# undef op_getmad
-# define op_getmad(arg,pegop,slot) NOOP
-# endif
-#endif
-
#define MEM_SIZE Size_t
/* Round all values passed to malloc up, by default to a multiple of
#define MEM_SIZE Size_t
/* Round all values passed to malloc up, by default to a multiple of
@@
-1243,7
+1233,7
@@
EXTERN_C int usleep(unsigned int);
# define _SOCKADDR_LEN
#endif
# define _SOCKADDR_LEN
#endif
-#if defined(HAS_SOCKET) && !defined(
VMS) && !defined(WIN32) /* VMS/WIN32 handle sockets via vmsish.h/
win32.h */
+#if defined(HAS_SOCKET) && !defined(
WIN32) /* WIN32 handles sockets via
win32.h */
# include <sys/socket.h>
# if defined(USE_SOCKS) && defined(I_SOCKS)
# if !defined(INCLUDE_PROTOTYPES)
# include <sys/socket.h>
# if defined(USE_SOCKS) && defined(I_SOCKS)
# if !defined(INCLUDE_PROTOTYPES)
@@
-1369,11
+1359,20
@@
EXTERN_C char *crypt(const char *, const char *);
#ifdef PERL_CORE
# define DEFSV (0 + GvSVn(PL_defgv))
#ifdef PERL_CORE
# define DEFSV (0 + GvSVn(PL_defgv))
+# define DEFSV_set(sv) \
+ (SvREFCNT_dec(GvSV(PL_defgv)), GvSV(PL_defgv) = SvREFCNT_inc(sv))
+# define SAVE_DEFSV \
+ ( \
+ save_gp(PL_defgv, 0), \
+ GvINTRO_off(PL_defgv), \
+ SAVEGENERICSV(GvSV(PL_defgv)), \
+ GvSV(PL_defgv) = NULL \
+ )
#else
# define DEFSV GvSVn(PL_defgv)
#else
# define DEFSV GvSVn(PL_defgv)
+# define DEFSV_set(sv) (GvSV(PL_defgv) = (sv))
+# define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))
#endif
#endif
-#define DEFSV_set(sv) (GvSV(PL_defgv) = (sv))
-#define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))
#define ERRHV GvHV(PL_errgv) /* XXX unused, here for compatibility */
#define ERRHV GvHV(PL_errgv) /* XXX unused, here for compatibility */
@@
-1386,13
+1385,13
@@
EXTERN_C char *crypt(const char *, const char *);
#endif
#ifdef HAS_STRERROR
#endif
#ifdef HAS_STRERROR
+#ifndef DONT_DECLARE_STD
# ifdef VMS
char *strerror (int,...);
# else
# ifdef VMS
char *strerror (int,...);
# else
-#ifndef DONT_DECLARE_STD
char *strerror (int);
char *strerror (int);
-#endif
# endif
# endif
+#endif
# ifndef Strerror
# define Strerror strerror
# endif
# ifndef Strerror
# define Strerror strerror
# endif
@@
-2584,11
+2583,6
@@
typedef struct clone_params CLONE_PARAMS;
#if defined(VMS)
# include "vmsish.h"
#if defined(VMS)
# include "vmsish.h"
-# include "embed.h"
-# ifndef PERL_MAD
-# undef op_getmad
-# define op_getmad(arg,pegop,slot) NOOP
-# endif
# define ISHISH "vms"
#endif
# define ISHISH "vms"
#endif
@@
-2618,11
+2612,6
@@
typedef struct clone_params CLONE_PARAMS;
#ifdef __SYMBIAN32__
# include "symbian/symbianish.h"
#ifdef __SYMBIAN32__
# include "symbian/symbianish.h"
-# include "embed.h"
-# ifndef PERL_MAD
-# undef op_getmad
-# define op_getmad(arg,pegop,slot) NOOP
-# endif
# define ISHISH "symbian"
#endif
# define ISHISH "symbian"
#endif
@@
-2779,11
+2768,7
@@
freeing any remaining Perl interpreters.
# define MAXPATHLEN (PATH_MAX+1)
# endif
# else
# define MAXPATHLEN (PATH_MAX+1)
# endif
# else
-# ifdef _POSIX_PATH_MAX
-# define MAXPATHLEN _POSIX_PATH_MAX
-# else
-# define MAXPATHLEN 1024 /* Err on the large side. */
-# endif
+# define MAXPATHLEN 1024 /* Err on the large side. */
# endif
#endif
# endif
#endif
@@
-3211,6
+3196,18
@@
typedef pthread_key_t perl_key;
#define SVfARG(p) ((void*)(p))
#define SVfARG(p) ((void*)(p))
+#ifndef HEKf
+# define HEKf "2p"
+#endif
+
+/* Not ideal, but we cannot easily include a number in an already-numeric
+ * format sequence. */
+#ifndef HEKf256
+# define HEKf256 "3p"
+#endif
+
+#define HEKfARG(p) ((void*)(p))
+
#ifdef PERL_CORE
/* not used; but needed for backward compatibility with XS code? - RMB */
# undef VDf
#ifdef PERL_CORE
/* not used; but needed for backward compatibility with XS code? - RMB */
# undef VDf
@@
-4218,6
+4215,8
@@
START_EXTERN_C
/* handy constants */
EXTCONST char PL_warn_uninit[]
INIT("Use of uninitialized value%s%s%s");
/* handy constants */
EXTCONST char PL_warn_uninit[]
INIT("Use of uninitialized value%s%s%s");
+EXTCONST char PL_warn_uninit_sv[]
+ INIT("Use of uninitialized value%"SVf"%s%s");
EXTCONST char PL_warn_nosemi[]
INIT("Semicolon seems to be missing");
EXTCONST char PL_warn_reserved[]
EXTCONST char PL_warn_nosemi[]
INIT("Semicolon seems to be missing");
EXTCONST char PL_warn_reserved[]
@@
-4694,9
+4693,6
@@
EXTCONST char PL_bincompat_options[] =
# ifdef PL_OP_SLAB_ALLOC
" PL_OP_SLAB_ALLOC"
# endif
# ifdef PL_OP_SLAB_ALLOC
" PL_OP_SLAB_ALLOC"
# endif
-# ifdef THREADS_HAVE_PIDS
- " THREADS_HAVE_PIDS"
-# endif
# ifdef USE_64_BIT_ALL
" USE_64_BIT_ALL"
# endif
# ifdef USE_64_BIT_ALL
" USE_64_BIT_ALL"
# endif
@@
-4784,6
+4780,8
@@
EXTCONST char *const PL_phase_names[];
* instead of using the newer PL_phase, which provides everything PL_dirty
* provided, and more. */
# define PL_dirty (PL_phase == PERL_PHASE_DESTRUCT)
* instead of using the newer PL_phase, which provides everything PL_dirty
* provided, and more. */
# define PL_dirty (PL_phase == PERL_PHASE_DESTRUCT)
+
+# define PL_amagic_generation PL_na
#endif /* !PERL_CORE */
END_EXTERN_C
#endif /* !PERL_CORE */
END_EXTERN_C
@@
-4825,9
+4823,11
@@
typedef enum {
#define HINT_STRICT_REFS 0x00000002 /* strict pragma */
#define HINT_LOCALE 0x00000004 /* locale pragma */
#define HINT_BYTES 0x00000008 /* bytes pragma */
#define HINT_STRICT_REFS 0x00000002 /* strict pragma */
#define HINT_LOCALE 0x00000004 /* locale pragma */
#define HINT_BYTES 0x00000008 /* bytes pragma */
-#define HINT_ARYBASE 0x00000010 /* $[ is non-zero */
- /* Note: 20,40,80 used for NATIVE_HINTS */
- /* currently defined by vms/vmsish.h */
+#define HINT_LOCALE_NOT_CHARS 0x00000010 /* locale ':not_characters' pragma */
+
+#define HINT_EXPLICIT_STRICT_REFS 0x00000020 /* strict.pm */
+#define HINT_EXPLICIT_STRICT_SUBS 0x00000040 /* strict.pm */
+#define HINT_EXPLICIT_STRICT_VARS 0x00000080 /* strict.pm */
#define HINT_BLOCK_SCOPE 0x00000100
#define HINT_STRICT_SUBS 0x00000200 /* strict pragma */
#define HINT_BLOCK_SCOPE 0x00000100
#define HINT_STRICT_SUBS 0x00000200 /* strict pragma */
@@
-4854,6
+4854,14
@@
typedef enum {
#define HINT_RE_FLAGS 0x02000000 /* re '/xism' pragma */
#define HINT_RE_FLAGS 0x02000000 /* re '/xism' pragma */
+#define HINT_FEATURE_MASK 0x1c000000 /* 3 bits for feature bundles */
+
+ /* Note: Used for NATIVE_HINTS, currently
+ defined by vms/vmsish.h:
+ 0x40000000
+ 0x80000000
+ */
+
/* The following are stored in $^H{sort}, not in PL_hints */
#define HINT_SORT_SORT_BITS 0x000000FF /* allow 256 different ones */
#define HINT_SORT_QUICKSORT 0x00000001
/* The following are stored in $^H{sort}, not in PL_hints */
#define HINT_SORT_SORT_BITS 0x000000FF /* allow 256 different ones */
#define HINT_SORT_QUICKSORT 0x00000001
@@
-4908,6
+4916,8
@@
typedef void(*Perl_ophook_t)(pTHX_ OP*);
typedef int (*Perl_keyword_plugin_t)(pTHX_ char*, STRLEN, OP**);
typedef void(*Perl_cpeep_t)(pTHX_ OP *, OP *);
typedef int (*Perl_keyword_plugin_t)(pTHX_ char*, STRLEN, OP**);
typedef void(*Perl_cpeep_t)(pTHX_ OP *, OP *);
+typedef void(*globhook_t)(pTHX);
+
#define KEYWORD_PLUGIN_DECLINE 0
#define KEYWORD_PLUGIN_STMT 1
#define KEYWORD_PLUGIN_EXPR 2
#define KEYWORD_PLUGIN_DECLINE 0
#define KEYWORD_PLUGIN_STMT 1
#define KEYWORD_PLUGIN_EXPR 2
@@
-5061,13
+5071,13
@@
END_EXTERN_C
# undef PL_na
#endif
# undef PL_na
#endif
-#if defined(WIN32)
-/* Now all the config stuff is setup we can include embed.h */
-# include "embed.h"
-#
ifndef PERL_MAD
-#
undef op_getmad
-#
define op_getmad(arg,pegop,slot) NOOP
-#
endif
+/* Now all the config stuff is setup we can include embed.h
+ In particular, need the relevant *ish file included already, as it may
+ define HAVE_INTERP_INTERN */
+#
include "embed.h"
+#
ifndef PERL_MAD
+#
undef op_getmad
+#
define op_getmad(arg,pegop,slot) NOOP
#endif
#ifndef PERL_GLOBAL_STRUCT
#endif
#ifndef PERL_GLOBAL_STRUCT
@@
-5160,7
+5170,6
@@
struct am_table {
U8 fallback;
U16 spare;
U32 was_ok_sub;
U8 fallback;
U16 spare;
U32 was_ok_sub;
- long was_ok_am;
CV* table[NofAMmeth];
};
struct am_table_short {
CV* table[NofAMmeth];
};
struct am_table_short {
@@
-5168,7
+5177,6
@@
struct am_table_short {
U8 fallback;
U16 spare;
U32 was_ok_sub;
U8 fallback;
U16 spare;
U32 was_ok_sub;
- long was_ok_am;
};
typedef struct am_table AMT;
typedef struct am_table_short AMTS;
};
typedef struct am_table AMT;
typedef struct am_table_short AMTS;
@@
-5262,11
+5270,23
@@
typedef struct am_table_short AMTS;
#define SET_NUMERIC_LOCAL() \
set_numeric_local();
#define SET_NUMERIC_LOCAL() \
set_numeric_local();
+/* Returns non-zero If the plain locale pragma without a parameter is in effect
+ */
#define IN_LOCALE_RUNTIME (CopHINTS_get(PL_curcop) & HINT_LOCALE)
#define IN_LOCALE_RUNTIME (CopHINTS_get(PL_curcop) & HINT_LOCALE)
+
+/* Returns non-zero If either form of the locale pragma is in effect */
+#define IN_SOME_LOCALE_FORM_RUNTIME \
+ (CopHINTS_get(PL_curcop) & (HINT_LOCALE|HINT_LOCALE_NOT_CHARS))
+
#define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE)
#define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE)
+#define IN_SOME_LOCALE_FORM_COMPILETIME \
+ (PL_hints & (HINT_LOCALE|HINT_LOCALE_NOT_CHARS))
#define IN_LOCALE \
(IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME)
#define IN_LOCALE \
(IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME)
+#define IN_SOME_LOCALE_FORM \
+ (IN_PERL_COMPILETIME ? IN_SOME_LOCALE_FORM_COMPILETIME \
+ : IN_SOME_LOCALE_FORM_RUNTIME)
#define STORE_NUMERIC_LOCAL_SET_STANDARD() \
bool was_local = PL_numeric_local && IN_LOCALE; \
#define STORE_NUMERIC_LOCAL_SET_STANDARD() \
bool was_local = PL_numeric_local && IN_LOCALE; \
@@
-5486,10
+5506,12
@@
typedef struct am_table_short AMTS;
* the interpreter goes away.) */
# define MY_CXT_INIT \
my_cxt_t *my_cxtp = \
* the interpreter goes away.) */
# define MY_CXT_INIT \
my_cxt_t *my_cxtp = \
- (my_cxt_t*)Perl_my_cxt_init(aTHX_ MY_CXT_INIT_ARG, sizeof(my_cxt_t))
+ (my_cxt_t*)Perl_my_cxt_init(aTHX_ MY_CXT_INIT_ARG, sizeof(my_cxt_t)); \
+ PERL_UNUSED_VAR(my_cxtp)
# define MY_CXT_INIT_INTERP(my_perl) \
my_cxt_t *my_cxtp = \
# define MY_CXT_INIT_INTERP(my_perl) \
my_cxt_t *my_cxtp = \
- (my_cxt_t*)Perl_my_cxt_init(my_perl, MY_CXT_INIT_ARG, sizeof(my_cxt_t))
+ (my_cxt_t*)Perl_my_cxt_init(my_perl, MY_CXT_INIT_ARG, sizeof(my_cxt_t)); \
+ PERL_UNUSED_VAR(my_cxtp)
/* This declaration should be used within all functions that use the
* interpreter-local data. */
/* This declaration should be used within all functions that use the
* interpreter-local data. */
@@
-5506,7
+5528,7
@@
typedef struct am_table_short AMTS;
/* This macro must be used to access members of the my_cxt_t structure.
/* This macro must be used to access members of the my_cxt_t structure.
- * e.g. MYCXT.some_data */
+ * e.g. MY
_
CXT.some_data */
# define MY_CXT (*my_cxtp)
/* Judicious use of these macros can reduce the number of times dMY_CXT
# define MY_CXT (*my_cxtp)
/* Judicious use of these macros can reduce the number of times dMY_CXT
@@
-5754,14
+5776,6
@@
extern void moncontrol(int);
#define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
#define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII
#define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
#define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII
-#ifdef PERL_CORE
-# define FEATURE_IS_ENABLED(name) \
- ((0 != (PL_hints & HINT_LOCALIZE_HH)) \
- && Perl_feature_is_enabled(aTHX_ STR_WITH_LEN(name)))
-/* The longest string we pass in. */
-# define MAX_FEATURE_LEN (sizeof("unicode_strings")-1)
-#endif
-
/*
(KEEP THIS LAST IN perl.h!)
/*
(KEEP THIS LAST IN perl.h!)
@@
-5818,8
+5832,8
@@
extern void moncontrol(int);
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode:
t
+ * indent-tabs-mode:
nil
* End:
*
* End:
*
- * ex: set ts=8 sts=4 sw=4
no
et:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
*/