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

Comparing JSON-XS/XS.xs (file contents):
Revision 1.77 by root, Tue Mar 25 06:37:38 2008 UTC vs.
Revision 1.82 by root, Wed Mar 26 02:35:45 2008 UTC

438 438
439static void 439static void
440encode_hv (enc_t *enc, HV *hv) 440encode_hv (enc_t *enc, HV *hv)
441{ 441{
442 HE *he; 442 HE *he;
443 int count;
444 443
445 if (enc->indent >= enc->maxdepth) 444 if (enc->indent >= enc->maxdepth)
446 croak ("data structure too deep (hit recursion limit)"); 445 croak ("data structure too deep (hit recursion limit)");
447 446
448 encode_ch (enc, '{'); 447 encode_ch (enc, '{');
1799 if (GIMME_V != G_VOID) 1798 if (GIMME_V != G_VOID)
1800 do 1799 do
1801 { 1800 {
1802 STRLEN offset; 1801 STRLEN offset;
1803 1802
1804 incr_parse (self);
1805
1806 if (!INCR_DONE (self)) 1803 if (!INCR_DONE (self))
1804 {
1805 incr_parse (self);
1806 if (!INCR_DONE (self))
1807 break; 1807 break;
1808 }
1808 1809
1809 XPUSHs (decode_json (self->incr_text, self, &offset)); 1810 XPUSHs (decode_json (self->incr_text, self, &offset));
1810 1811
1811 sv_chop (self->incr_text, SvPV_nolen (self->incr_text) + offset); 1812 sv_chop (self->incr_text, SvPV_nolen (self->incr_text) + offset);
1812 self->incr_pos -= offset; 1813 self->incr_pos -= offset;
1819SV *incr_text (JSON *self) 1820SV *incr_text (JSON *self)
1820 ATTRS: lvalue 1821 ATTRS: lvalue
1821 CODE: 1822 CODE:
1822{ 1823{
1823 if (self->incr_pos) 1824 if (self->incr_pos)
1824 croak ("incr_text can only be called after a successful incr_parse call in scalar context %d", self->incr_pos);//D 1825 croak ("incr_text can not be called when the incremental parser already started parsing");
1825 1826
1826 RETVAL = self->incr_text ? SvREFCNT_inc (self->incr_text) : &PL_sv_undef; 1827 RETVAL = self->incr_text ? SvREFCNT_inc (self->incr_text) : &PL_sv_undef;
1827} 1828}
1828 OUTPUT: 1829 OUTPUT:
1829 RETVAL 1830 RETVAL
1831
1832void incr_skip (JSON *self)
1833 CODE:
1834{
1835 if (self->incr_pos)
1836 {
1837 sv_chop (self->incr_text, SvPV_nolen (self->incr_text) + self->incr_pos);
1838 self->incr_pos = 0;
1839 self->incr_nest = 0;
1840 self->incr_mode = 0;
1841 }
1842}
1830 1843
1831void DESTROY (JSON *self) 1844void DESTROY (JSON *self)
1832 CODE: 1845 CODE:
1833 SvREFCNT_dec (self->cb_sk_object); 1846 SvREFCNT_dec (self->cb_sk_object);
1834 SvREFCNT_dec (self->cb_object); 1847 SvREFCNT_dec (self->cb_object);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines