ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Compress-LZF/LZF.xs
(Generate patch)

Comparing Compress-LZF/LZF.xs (file contents):
Revision 1.14 by root, Thu Sep 5 04:44:55 2002 UTC vs.
Revision 1.18 by pcg, Tue Aug 3 15:04:05 2004 UTC

12#endif 12#endif
13#if PATCHLEVEL < 6 13#if PATCHLEVEL < 6
14# define call_sv perl_call_sv 14# define call_sv perl_call_sv
15#endif 15#endif
16 16
17#define HLOG 15
18#define ULTRA_FAST 0
19
17#include "lzf_c.c" 20#include "lzf_c.c"
18#include "lzf_d.c" 21#include "lzf_d.c"
19 22
20/* we re-use the storable header for our purposes */ 23/* we re-use the storable header for our purposes */
21#define MAGIC_LO 0 24#define MAGIC_LO 0
255 XPUSHs (sv_2mortal (newSVpvn ("\02", 1))); /* 02 == MAGIC_undef */ 258 XPUSHs (sv_2mortal (newSVpvn ("\02", 1))); /* 02 == MAGIC_undef */
256 else if (SvROK (sv) 259 else if (SvROK (sv)
257 || (SvTYPE(sv) != SVt_IV 260 || (SvTYPE(sv) != SVt_IV
258 && SvTYPE(sv) != SVt_NV 261 && SvTYPE(sv) != SVt_NV
259 && SvTYPE(sv) != SVt_PV 262 && SvTYPE(sv) != SVt_PV
263 && SvTYPE(sv) != SVt_PVIV
264 && SvTYPE(sv) != SVt_PVNV
260 && SvTYPE(sv) != SVt_PVMG)) /* mstore */ 265 && SvTYPE(sv) != SVt_PVMG)) /* mstore */
261 { 266 {
262 int deref = !SvROK (sv); 267 int deref = !SvROK (sv);
263 268
264 if (!storable_mstore) 269 if (!storable_mstore)
291 } 296 }
292 else if (SvPOKp (sv) && IN_RANGE (SvPVX (sv)[0], MAGIC_LO, MAGIC_HI)) 297 else if (SvPOKp (sv) && IN_RANGE (SvPVX (sv)[0], MAGIC_LO, MAGIC_HI))
293 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, MAGIC_U))); /* need to prefix only */ 298 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, MAGIC_U))); /* need to prefix only */
294 else if (ix == 2) /* compress always */ 299 else if (ix == 2) /* compress always */
295 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, -1))); 300 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, -1)));
301 else if (SvNIOK (sv)) /* don't compress */
302 {
303 STRLEN len;
304 char *s = SvPV (sv, len);
305 XPUSHs (sv_2mortal (newSVpvn (s, len)));
306 }
296 else /* don't compress */ 307 else /* don't compress */
297 XPUSHs (sv_2mortal (SvREFCNT_inc (sv))); 308 XPUSHs (sv_2mortal (newSVsv (sv)));
298 309
299void 310void
300sthaw(sv) 311sthaw(sv)
301 SV * sv 312 SV * sv
302 PROTOTYPE: $ 313 PROTOTYPE: $
356 367
357 if (SvPVX (sv)[0] == MAGIC_R) 368 if (SvPVX (sv)[0] == MAGIC_R)
358 SvPVX (sv)[0] = MAGIC_R_deref; 369 SvPVX (sv)[0] = MAGIC_R_deref;
359 } 370 }
360 else 371 else
361 XPUSHs (POPs); /* this is a nop, hopefully */ 372 SETs (sv_2mortal (newSVsv (TOPs)));
362 373
363 break; 374 break;
364 375
365 default: 376 default:
366 croak ("Compress::LZF::sthaw(): invalid data, maybe you need a newer version of Compress::LZF?"); 377 croak ("Compress::LZF::sthaw(): invalid data, maybe you need a newer version of Compress::LZF?");
367 } 378 }
368 } 379 }
369 else 380 else
370 XPUSHs (sv_2mortal (newSVsv (sv))); 381 XPUSHs (sv_2mortal (newSVsv (sv)));
382

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines