|
46 | 46 | {VXS_CLASS "::(0+", VXSp(version_numify), VXSXSDP(NULL)}, |
47 | 47 | {VXS_CLASS "::numify", VXSp(version_numify), VXSXSDP(NULL)}, |
48 | 48 | {VXS_CLASS "::normal", VXSp(version_normal), VXSXSDP(NULL)}, |
| 49 | + {VXS_CLASS "::to_decimal", VXSp(version_to_decimal), VXSXSDP(NULL)}, |
| 50 | + {VXS_CLASS "::to_dotted_decimal", VXSp(version_to_dotted_decimal), VXSXSDP(NULL)}, |
49 | 51 | {VXS_CLASS "::(cmp", VXSp(version_vcmp), VXSXSDP(NULL)}, |
50 | 52 | {VXS_CLASS "::(<=>", VXSp(version_vcmp), VXSXSDP(NULL)}, |
51 | 53 | # ifdef PERL_CORE |
@@ -296,6 +298,37 @@ VXS(version_normal) |
296 | 298 | } |
297 | 299 | } |
298 | 300 |
|
| 301 | +VXS(version_to_decimal) |
| 302 | +{ |
| 303 | + dXSARGS; |
| 304 | + SV* self = ST(0); |
| 305 | + if (items < 1) |
| 306 | + croak_xs_usage(cv, "lobj, ..."); |
| 307 | + SP -= items; |
| 308 | + { |
| 309 | + SV *lobj, *rv; |
| 310 | + VTYPECHECK(lobj, self, "lobj"); |
| 311 | + rv = NEW_VERSION(VNUMIFY(lobj)); |
| 312 | + VXS_RETURN_M_SV(sv_bless(rv, SvSTASH(SvRV(self)))); |
| 313 | + } |
| 314 | +} |
| 315 | + |
| 316 | +VXS(version_to_dotted_decimal) |
| 317 | +{ |
| 318 | + dXSARGS; |
| 319 | + SV* self = ST(0); |
| 320 | + if (items != 1) |
| 321 | + croak_xs_usage(cv, "ver"); |
| 322 | + SP -= items; |
| 323 | + { |
| 324 | + SV *lobj, *rv; |
| 325 | + VTYPECHECK(lobj, self, "lobj"); |
| 326 | + rv = NEW_VERSION(VNORMAL(lobj)); |
| 327 | + sv_bless(rv, SvSTASH(SvRV(self))); |
| 328 | + VXS_RETURN_M_SV(sv_bless(rv, SvSTASH(SvRV(self)))); |
| 329 | + } |
| 330 | +} |
| 331 | + |
299 | 332 | VXS(version_vcmp) |
300 | 333 | { |
301 | 334 | dXSARGS; |
|
0 commit comments