# define UV_MAX PERL_UQUAD_MAX
# define UV_MIN PERL_UQUAD_MIN
# endif
+# define IV_SIZEOF 8
+# define UV_SIZEOF 8
+# define IV_IS_QUAD
+# define UV_IS_QUAD
#else
typedef long IV;
typedef unsigned long UV;
# define UV_MAX PERL_ULONG_MAX
# define UV_MIN PERL_ULONG_MIN
# endif
+# define UV_SIZEOF LONGSIZE
+# define IV_SIZEOF LONGSIZE
+# if LONGSIZE == 8
+# define IV_IS_QUAD
+# define UV_IS_QUAD
+# else
+# undef IV_IS_QUAD
+# undef UV_IS_QUAD
+# endif
+# define UV_SIZEOF LONGSIZE
+# define IV_SIZEOF LONGSIZE
#endif
#ifdef USE_LONG_DOUBLE
# define Perl_atan2 atan2l
# define Perl_pow powl
# define Perl_floor floorl
-# define Perl_atof atof
# define Perl_fmod fmodl
#else
typedef double NV;
# define Perl_atan2 atan2
# define Perl_pow pow
# define Perl_floor floor
-# define Perl_atof atof /* At some point there may be an atolf */
# define Perl_fmod fmod
#endif
+#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_ATOLF)
+# define Perl_atof atolf
+#else
+# define Perl_atof atof
+#endif
+
/* Previously these definitions used hardcoded figures.
* It is hoped these formula are more portable, although
* no data one way or another is presently known to me.
# endif
#endif
+#if defined(OS2)
+# include "iperlsys.h"
+#endif
+
#if defined(__OPEN_VM)
# include "vmesa/vmesaish.h"
#endif
#define FILTER_DATA(idx) (AvARRAY(PL_rsfp_filters)[idx])
#define FILTER_ISREADER(idx) (idx >= AvFILLp(PL_rsfp_filters))
-#include "iperlsys.h"
+#if !defined(OS2)
+# include "iperlsys.h"
+#endif
#include "regexp.h"
#include "sv.h"
#include "util.h"
typedef struct magic_state MGS; /* struct magic_state defined in mg.c */
-/* Length of a variant. */
-
-typedef struct {
- I32 len_min;
- I32 len_delta;
- I32 pos_min;
- I32 pos_delta;
- SV *last_found;
- I32 last_end; /* min value, <0 unless valid. */
- I32 last_start_min;
- I32 last_start_max;
- SV **longest; /* Either &l_fixed, or &l_float. */
- SV *longest_fixed;
- I32 offset_fixed;
- SV *longest_float;
- I32 offset_float_min;
- I32 offset_float_max;
- I32 flags;
-} scan_data_t;
+struct scan_data_t; /* Used in S_* functions in regcomp.c */
typedef I32 CHECKPOINT;
#endif /* !USE_LOCALE_NUMERIC */
+#if defined(USE_LONG_LONG) && defined(HAS_LONG_LONG) && defined(HAS_ATOLL)
+#define Atol atoll
+#else
+#define Atol atol
+#endif
+
+#if defined(USE_LONG_LONG) && defined(HAS_LONG_LONG) && defined(HAS_STRTOULL)
+#define Strtoul strtoull
+#else
+#define Strtoul strtoul
+#endif
+
#if !defined(PERLIO_IS_STDIO) && defined(HASATTRIBUTE)
/*
* Now we have __attribute__ out of the way