… | |
… | |
1798 | if (GIMME_V != G_VOID) |
1798 | if (GIMME_V != G_VOID) |
1799 | do |
1799 | do |
1800 | { |
1800 | { |
1801 | STRLEN offset; |
1801 | STRLEN offset; |
1802 | |
1802 | |
1803 | incr_parse (self); |
|
|
1804 | |
|
|
1805 | if (!INCR_DONE (self)) |
1803 | if (!INCR_DONE (self)) |
|
|
1804 | { |
|
|
1805 | incr_parse (self); |
|
|
1806 | if (!INCR_DONE (self)) |
1806 | break; |
1807 | break; |
|
|
1808 | } |
1807 | |
1809 | |
1808 | XPUSHs (decode_json (self->incr_text, self, &offset)); |
1810 | XPUSHs (decode_json (self->incr_text, self, &offset)); |
1809 | |
1811 | |
1810 | sv_chop (self->incr_text, SvPV_nolen (self->incr_text) + offset); |
1812 | sv_chop (self->incr_text, SvPV_nolen (self->incr_text) + offset); |
1811 | self->incr_pos -= offset; |
1813 | self->incr_pos -= offset; |
… | |
… | |
1818 | SV *incr_text (JSON *self) |
1820 | SV *incr_text (JSON *self) |
1819 | ATTRS: lvalue |
1821 | ATTRS: lvalue |
1820 | CODE: |
1822 | CODE: |
1821 | { |
1823 | { |
1822 | if (self->incr_pos) |
1824 | if (self->incr_pos) |
1823 | croak ("incr_text can only be called after a successful incr_parse call in scalar context"); |
1825 | croak ("incr_text can not be called when the incremental parser already started parsing"); |
1824 | |
1826 | |
1825 | 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; |
1826 | } |
1828 | } |
1827 | OUTPUT: |
1829 | OUTPUT: |
1828 | RETVAL |
1830 | RETVAL |