# define U64_CONST(x) ((U64)x##UL)
# elif QUADKIND == QUAD_IS_LONG_LONG
# define U64_CONST(x) ((U64)x##ULL)
+# elif QUADKIND == QUAD_IS___INT64
+# define U64_CONST(x) ((U64)x##UI64)
# else /* best guess we can make */
# define U64_CONST(x) ((U64)x##UL)
# endif
# define S_IFIFO _S_IFIFO
#endif
-/* The stat macros for Amdahl UTS, Unisoft System V/88 (and derivatives
+/* The stat macros for Unisoft System V/88 (and derivatives
like UTekV) are broken, sometimes giving false positives. Undefine
them here and let the code below set them to proper values.
This header file bug is corrected in gcc-2.5.8 and later versions.
--Kaveh Ghazi (ghazi@noc.rutgers.edu) 10/3/94. */
-#if defined(uts) || (defined(m88k) && defined(ghs))
+#if defined(m88k) && defined(ghs)
# undef S_ISDIR
# undef S_ISCHR
# undef S_ISBLK
#undef UV
#endif
-#ifdef SPRINTF_E_BUG
-# define sprintf UTS_sprintf_wrap
-#endif
-
/* For the times when you want the return value of sprintf, and you want it
to be the length. Can't have a thread variable passed in, because C89 has
no varargs macros.
# define my_strlcpy Perl_my_strlcpy
#endif
-/* Configure gets this right but the UTS compiler gets it wrong.
- -- Hal Morris <hom00@utsglobal.com> */
-#ifdef UTS
-# undef UVTYPE
-# define UVTYPE unsigned
-#endif
-
/*
The IV type is supposed to be long enough to hold any integral
value or a pointer.
# undef PERL_NEED_MY_BETOH64
#endif
-#if defined(uts) || defined(UTS)
-# undef UV_MAX
-# define UV_MAX (4294967295u)
-#endif
-
#define IV_DIG (BIT_DIGITS(IVSIZE * 8))
#define UV_DIG (BIT_DIGITS(UVSIZE * 8))
typedef struct interpreter PerlInterpreter;
-/* Amdahl's <ksync.h> has struct sv */
/* SGI's <sys/sema.h> has struct sv */
-#if defined(UTS) || defined(__sgi)
+#if defined(__sgi)
# define STRUCT_SV perl_sv
#else
# define STRUCT_SV sv
typedef struct ptr_tbl PTR_TBL_t;
typedef struct clone_params CLONE_PARAMS;
+/* a pad or name pad is currently just an AV; but that might change,
+ * so hide the type. */
+typedef struct padlist PADLIST;
+typedef AV PAD;
+typedef AV PADNAMELIST;
+typedef SV PADNAME;
+
#include "handy.h"
#if defined(USE_LARGE_FILES) && !defined(NO_64_BIT_RAWIO)
U16 sub_inwhat; /* "lex_inwhat" to use */
OP *sub_op; /* "lex_op" to use */
char *super_bufptr; /* PL_parser->bufptr that was */
- char *super_bufend; /* PL_parser->bufend that was */
char *re_eval_start;/* start of "(?{..." text */
+ SV *re_eval_str; /* "(?{...})" text */
+ SV *repl; /* replacement of s/// or y/// */
};
#include "parser.h"
#ifndef assert
# define assert(what) Perl_assert(what)
#endif
+#ifdef DEBUGGING
+# define assert_(what) assert(what),
+#else
+# define assert_(what)
+#endif
struct ufuncs {
I32 (*uf_val)(pTHX_ IV, SV*);
#endif
+/* Static inline funcs that depend on includes and declarations above */
+#include "inline.h"
#include "overload.h"
#endif /* !USE_LOCALE_NUMERIC */
-#if !defined(Strtol) && defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && QUADKIND == QUAD_IS_LONG_LONG
+#if !defined(Strtol) && defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && \
+ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
# ifdef __hpux
# define strtoll __strtoll /* secret handshake */
# endif
/* It would be more fashionable to use Strtol() to define atol()
* (as is done for Atoul(), see below) but for backward compatibility
* we just assume atol(). */
-# if defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && QUADKIND == QUAD_IS_LONG_LONG && defined(HAS_ATOLL)
+# if defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && defined(HAS_ATOLL) && \
+ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
# ifdef WIN64
# define atoll _atoi64 /* secret handshake */
# endif
# endif
#endif
-#if !defined(Strtoul) && defined(USE_64_BIT_INT) && defined(UV_IS_QUAD) && QUADKIND == QUAD_IS_LONG_LONG
+#if !defined(Strtoul) && defined(USE_64_BIT_INT) && defined(UV_IS_QUAD) && \
+ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
# ifdef __hpux
# define strtoull __strtoull /* secret handshake */
# endif