/* perl.h
*
* Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
- * 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others
+ * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
# define MALLOC_CHECK_TAINT(argc,argv,env)
#endif /* MYMALLOC */
+/* diag_listed_as: "-T" is on the #! line, it must also be used on the command line */
#define TOO_LATE_FOR_(ch,what) Perl_croak(aTHX_ "\"-%c\" is on the #! line, it must also be used on the command line%s", (char)(ch), what)
#define TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, "")
#define MALLOC_TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, " with $ENV{PERL_MALLOC_OPT}")
# endif
#endif
+#if !defined(PERL_CORE) && !defined(PERL_NO_SHORT_NAMES)
+# if defined(PERL_IMPLICIT_CONTEXT)
+# define pmflag(a,b) Perl_pmflag(aTHX_ a,b)
+# else
+# define pmflag Perl_pmflag
+# endif
+#endif
+
#ifdef HASATTRIBUTE_DEPRECATED
# define __attribute__deprecated__ __attribute__((deprecated))
#endif
#include "utf8.h"
/* defined in sv.c, but also used in [ach]v.c */
-#undef _XPV_ALLOCATED_HEAD
#undef _XPV_HEAD
#undef _XPVMG_HEAD
#undef _XPVCV_COMMON
#define DEBUG_C_FLAG 0x00200000 /*2097152 */
#define DEBUG_A_FLAG 0x00400000 /*4194304 */
#define DEBUG_q_FLAG 0x00800000 /*8388608 */
-#define DEBUG_MASK 0x00FEEFFF /* mask of all the standard flags */
+#define DEBUG_M_FLAG 0x01000000 /*16777216*/
+#define DEBUG_B_FLAG 0x02000000 /*33554432*/
+#define DEBUG_MASK 0x03FEEFFF /* mask of all the standard flags */
#define DEBUG_DB_RECURSE_FLAG 0x40000000
#define DEBUG_TOP_FLAG 0x80000000 /* XXX what's this for ??? Signal
# define DEBUG_C_TEST_ (PL_debug & DEBUG_C_FLAG)
# define DEBUG_A_TEST_ (PL_debug & DEBUG_A_FLAG)
# define DEBUG_q_TEST_ (PL_debug & DEBUG_q_FLAG)
+# define DEBUG_M_TEST_ (PL_debug & DEBUG_M_FLAG)
+# define DEBUG_B_TEST_ (PL_debug & DEBUG_B_FLAG)
# define DEBUG_Xv_TEST_ (DEBUG_X_TEST_ && DEBUG_v_TEST_)
# define DEBUG_Uv_TEST_ (DEBUG_U_TEST_ && DEBUG_v_TEST_)
# define DEBUG_C_TEST DEBUG_C_TEST_
# define DEBUG_A_TEST DEBUG_A_TEST_
# define DEBUG_q_TEST DEBUG_q_TEST_
+# define DEBUG_M_TEST DEBUG_M_TEST_
+# define DEBUG_B_TEST DEBUG_B_TEST_
# define DEBUG_Xv_TEST DEBUG_Xv_TEST_
# define DEBUG_Uv_TEST DEBUG_Uv_TEST_
# define DEBUG_C(a) DEBUG__(DEBUG_C_TEST, a)
# define DEBUG_A(a) DEBUG__(DEBUG_A_TEST, a)
# define DEBUG_q(a) DEBUG__(DEBUG_q_TEST, a)
+# define DEBUG_M(a) DEBUG__(DEBUG_M_TEST, a)
+# define DEBUG_B(a) DEBUG__(DEBUG_B_TEST, a)
#else /* DEBUGGING */
# define DEBUG_C_TEST (0)
# define DEBUG_A_TEST (0)
# define DEBUG_q_TEST (0)
+# define DEBUG_M_TEST (0)
+# define DEBUG_B_TEST (0)
# define DEBUG_Xv_TEST (0)
# define DEBUG_Uv_TEST (0)
# define DEBUG_C(a)
# define DEBUG_A(a)
# define DEBUG_q(a)
+# define DEBUG_M(a)
+# define DEBUG_B(a)
# define DEBUG_Xv(a)
# define DEBUG_Uv(a)
#endif /* DEBUGGING */
EXTCONST char PL_no_wrongref[]
INIT("Can't use %s ref as %s ref");
EXTCONST char PL_no_symref[]
- INIT("Can't use string (\"%.32s\") as %s ref while \"strict refs\" in use");
+ INIT("Can't use string (\"%.32s\"%s) as %s ref while \"strict refs\" in use");
EXTCONST char PL_no_symref_sv[]
- INIT("Can't use string (\"%" SVf32 "\") as %s ref while \"strict refs\" in use");
+ INIT("Can't use string (\"%" SVf32 "\"%s) as %s ref while \"strict refs\" in use");
EXTCONST char PL_no_usym[]
INIT("Can't use an undefined value as %s reference");
EXTCONST char PL_no_aelem[]
want_vtbl_utf8,
want_vtbl_symtab,
want_vtbl_arylen_p,
- want_vtbl_hintselem
+ want_vtbl_hintselem,
+ want_vtbl_hints
};
#define HINT_BLOCK_SCOPE 0x00000100
#define HINT_STRICT_SUBS 0x00000200 /* strict pragma */
#define HINT_STRICT_VARS 0x00000400 /* strict pragma */
+#define HINT_UNI_8_BIT 0x00000800 /* unicode8bit pragma */
/* The HINT_NEW_* constants are used by the overload pragma */
#define HINT_NEW_INTEGER 0x00001000
typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX);
typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
+typedef void(CPERLscope(*Perl_ophook_t))(pTHX_ OP*);
+typedef int (CPERLscope(*Perl_keyword_plugin_t))(pTHX_ char*, STRLEN, OP**);
+
+#define KEYWORD_PLUGIN_DECLINE 0
+#define KEYWORD_PLUGIN_STMT 1
+#define KEYWORD_PLUGIN_EXPR 2
/* Interpreter exitlist entry */
typedef struct exitlistentry {
0
);
-/* For now, hints magic will also use vtbl_sig, because it is all 0 */
MGVTBL_SET(
PL_vtbl_sig,
0,
0
);
+MGVTBL_SET(
+ PL_vtbl_hints,
+ 0,
+ 0,
+ 0,
+ MEMBER_TO_FPTR(Perl_magic_clearhints),
+ 0,
+ 0,
+ 0,
+ 0
+);
+
#include "overload.h"
END_EXTERN_C