/* macros to define bit-fields in structs. */
#ifndef PERL_BITFIELD8
-# define PERL_BITFIELD8 unsigned
+# define PERL_BITFIELD8 U8
#endif
#ifndef PERL_BITFIELD16
-# define PERL_BITFIELD16 unsigned
+# define PERL_BITFIELD16 U16
#endif
#ifndef PERL_BITFIELD32
-# define PERL_BITFIELD32 unsigned
+# define PERL_BITFIELD32 U32
#endif
#include "sv.h"
INIT("Can't localize through a reference");
EXTCONST char PL_memory_wrap[]
INIT("panic: memory wrap");
-
+EXTCONST char PL_extended_cp_format[]
+ INIT("Code point 0x%" UVXf " is not Unicode, requires a Perl extension,"
+ " and so is not portable");
EXTCONST char PL_Yes[]
INIT("1");
EXTCONST char PL_No[]
#endif
#if defined(HAS_FLOCK) && !defined(HAS_FLOCK_PROTO)
-int flock(int fd, int op);
+EXTERN_C int flock(int fd, int op);
#endif
#ifndef O_RDONLY
*/
#define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send)
-/* Input flags: */
+/* Number scan flags. All are used for input, the ones used for output are so
+ * marked */
#define PERL_SCAN_ALLOW_UNDERSCORES 0x01 /* grok_??? accept _ in numbers */
#define PERL_SCAN_DISALLOW_PREFIX 0x02 /* grok_??? reject 0x in hex etc */
-#define PERL_SCAN_SILENT_ILLDIGIT 0x04 /* grok_??? not warn about illegal digits */
-#define PERL_SCAN_SILENT_NON_PORTABLE 0x08 /* grok_??? not warn about very large
- numbers which are <= UV_MAX */
+
+/* grok_??? input: ignored; output: found overflow */
+#define PERL_SCAN_GREATER_THAN_UV_MAX 0x04
+
+/* grok_??? don't warn about illegal digits. To preserve total backcompat,
+ * this isn't set on output if one is found. Instead, see
+ * PERL_SCAN_NOTIFY_ILLDIGIT. */
+#define PERL_SCAN_SILENT_ILLDIGIT 0x08
+
#define PERL_SCAN_TRAILING 0x10 /* grok_number_flags() allow trailing
and set IS_NUMBER_TRAILING */
-/* Output flags: */
-#define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 /* should this merge with above? */
+/* These are considered experimental, so not exposed publicly */
+#if defined(PERL_CORE) || defined(PERL_EXT)
+/* grok_??? don't warn about very large numbers which are <= UV_MAX;
+ * output: found such a number */
+# define PERL_SCAN_SILENT_NON_PORTABLE 0x20
+
+/* If this is set on input, and no illegal digit is found, it will be cleared
+ * on output; otherwise unchanged */
+# define PERL_SCAN_NOTIFY_ILLDIGIT 0x40
+
+/* Don't warn on overflow; output flag still set */
+# define PERL_SCAN_SILENT_OVERFLOW 0x80
+
+/* Forbid a leading underscore, which the other one doesn't */
+# define PERL_SCAN_ALLOW_MEDIAL_UNDERSCORES (0x100|PERL_SCAN_ALLOW_UNDERSCORES)
+#endif
+
/* to let user control profiling */
#ifdef PERL_GPROF_CONTROL