/* This file is part of the "version" CPAN distribution. Please avoid
editing it in the perl core. */
+#ifndef PERL_CORE
+# include "EXTERN.h"
+# include "perl.h"
+# include "XSUB.h"
+# define NEED_my_snprintf
+# define NEED_newRV_noinc
+# define NEED_vnewSVpvf
+# define NEED_newSVpvn_flags_GLOBAL
+# define NEED_warner
+# include "ppport.h"
+#endif
+#include "vutil.h"
+
#define VERSION_MAX 0x7FFFFFFF
/*
=cut
*/
const char *
+#if VUTIL_REPLACE_CORE
+Perl_prescan_version2(pTHX_ const char *s, bool strict,
+#else
Perl_prescan_version(pTHX_ const char *s, bool strict,
+#endif
const char **errstr,
bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha) {
bool qv = (sqv ? *sqv : FALSE);
*/
const char *
+#if VUTIL_REPLACE_CORE
+Perl_scan_version2(pTHX_ const char *s, SV *rv, bool qv)
+#else
Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv)
+#endif
{
const char *start = s;
const char *pos;
while (isSPACE(*s)) /* leading whitespace is OK */
s++;
- last = prescan_version(s, FALSE, &errstr, &qv, &saw_decimal, &width, &alpha);
+ last = PRESCAN_VERSION(s, FALSE, &errstr, &qv, &saw_decimal, &width, &alpha);
if (errstr) {
/* "undef" is a special case and not an error */
if ( ! ( *s == 'u' && strEQ(s,"undef")) ) {
*/
SV *
+#if VUTIL_REPLACE_CORE
+Perl_new_version2(pTHX_ SV *ver)
+#else
Perl_new_version(pTHX_ SV *ver)
+#endif
{
dVAR;
SV * const rv = newSV(0);
PERL_ARGS_ASSERT_NEW_VERSION;
- if ( sv_isobject(ver) && sv_derived_from(ver, "version") )
- /* can just copy directly */
+ if ( ISA_CLASS_OBJ(ver,"version") ) /* can just copy directly */
{
SSize_t key;
AV * const av = newAV();
}
}
#endif
- return upg_version(rv, FALSE);
+ return UPG_VERSION(rv, FALSE);
}
/*
*/
SV *
+#if VUTIL_REPLACE_CORE
+Perl_upg_version2(pTHX_ SV *ver, bool qv)
+#else
Perl_upg_version(pTHX_ SV *ver, bool qv)
+#endif
{
const char *version, *s;
#ifdef SvVOK
#endif
}
- s = scan_version(version, ver, qv);
+ s = SCAN_VERSION(version, ver, qv);
if ( *s != '\0' )
Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
"Version string '%s' contains invalid data; "
*/
SV *
+#if VUTIL_REPLACE_CORE
+Perl_vverify2(pTHX_ SV *vs)
+#else
Perl_vverify(pTHX_ SV *vs)
+#endif
{
SV *sv;
*/
SV *
+#if VUTIL_REPLACE_CORE
+Perl_vnumify2(pTHX_ SV *vs)
+#else
Perl_vnumify(pTHX_ SV *vs)
+#endif
{
SSize_t i, len;
I32 digit;
PERL_ARGS_ASSERT_VNUMIFY;
/* extract the HV from the object */
- vs = vverify(vs);
+ vs = VVERIFY(vs);
if ( ! vs )
Perl_croak(aTHX_ "Invalid version object");
*/
SV *
+#if VUTIL_REPLACE_CORE
+Perl_vnormal2(pTHX_ SV *vs)
+#else
Perl_vnormal(pTHX_ SV *vs)
+#endif
{
I32 i, len, digit;
bool alpha = FALSE;
PERL_ARGS_ASSERT_VNORMAL;
/* extract the HV from the object */
- vs = vverify(vs);
+ vs = VVERIFY(vs);
if ( ! vs )
Perl_croak(aTHX_ "Invalid version object");
*/
SV *
+#if VUTIL_REPLACE_CORE
+Perl_vstringify2(pTHX_ SV *vs)
+#else
Perl_vstringify(pTHX_ SV *vs)
+#endif
{
PERL_ARGS_ASSERT_VSTRINGIFY;
/* extract the HV from the object */
- vs = vverify(vs);
+ vs = VVERIFY(vs);
if ( ! vs )
Perl_croak(aTHX_ "Invalid version object");
}
else {
if ( hv_exists(MUTABLE_HV(vs), "qv", 2) )
- return vnormal(vs);
+ return VNORMAL(vs);
else
- return vnumify(vs);
+ return VNUMIFY(vs);
}
}
*/
int
+#if VUTIL_REPLACE_CORE
+Perl_vcmp2(pTHX_ SV *lhv, SV *rhv)
+#else
Perl_vcmp(pTHX_ SV *lhv, SV *rhv)
+#endif
{
SSize_t i,l,m,r;
I32 retval;
PERL_ARGS_ASSERT_VCMP;
/* extract the HVs from the objects */
- lhv = vverify(lhv);
- rhv = vverify(rhv);
+ lhv = VVERIFY(lhv);
+ rhv = VVERIFY(rhv);
if ( ! ( lhv && rhv ) )
Perl_croak(aTHX_ "Invalid version object");
-#include "ppport.h"
+/* This file is part of the "version" CPAN distribution. Please avoid
+ editing it in the perl core. */
+
+#ifndef PERL_CORE
+# include "ppport.h"
+#endif
/* The MUTABLE_*() macros cast pointers to the types shown, in such a way
* (compiler permitting) that casting away const-ness will give a warning;
#define ISA_CLASS_OBJ(v,c) (sv_isobject(v) && sv_derived_from(v,c))
-#if PERL_VERSION_GE(5,9,0)
+#if PERL_VERSION_GE(5,9,0) && !defined(PERL_CORE)
# define VUTIL_REPLACE_CORE 1
# define VCMP(a,b) Perl_vcmp(aTHX_ a,b)
# define PRESCAN_VERSION(a,b,c,d,e,f,g) Perl_prescan_version(aTHX_ a,b,c,d,e,f,g)
-# define is_LAX_VERSION(a,b) \
+# ifndef is_LAX_VERSION
+# define is_LAX_VERSION(a,b) \
(a != Perl_prescan_version(aTHX_ a, FALSE, b, NULL, NULL, NULL, NULL))
-# define is_STRICT_VERSION(a,b) \
+# endif
+# ifndef is_STRICT_VERSION
+# define is_STRICT_VERSION(a,b) \
(a != Perl_prescan_version(aTHX_ a, TRUE, b, NULL, NULL, NULL, NULL))
+# endif
#endif