blob: e0a910e4273a7d48b7c4edffd043b0eafc5f15b6 [file] [log] [blame]
ctypedef fused ReaderRef:
ReaderUCSRef
ReaderCallbackRef
cdef boolean _reader_enter(ReaderRef self) except False:
if self.base.maxdepth == 0:
_raise_nesting(_reader_tell(self))
Py_EnterRecursiveCall(' while decoding nested JSON5 object')
self.base.maxdepth -= 1
return True
cdef void _reader_leave(ReaderRef self):
Py_LeaveRecursiveCall()
self.base.maxdepth += 1
cdef inline Py_ssize_t _reader_tell(ReaderRef self):
return self.base.position
cdef inline uint32_t _reader_get(ReaderRef self):
cdef uint32_t c0
if ReaderRef is ReaderUTF8Ref:
c0 = _reader_utf8_get(self)
elif ReaderRef in ReaderUCSRef:
c0 = _reader_ucs_get(self)
elif ReaderRef is ReaderCallbackRef:
c0 = _reader_Callback_get(self)
return c0
cdef int32_t _reader_good(ReaderRef self) except -1:
if ReaderRef in ReaderUCSRef:
return _reader_ucs_good(self)
elif ReaderRef is ReaderCallbackRef:
return _reader_Callback_good(self)