Generated by Cython 0.29.28
Yellow lines hint at Python interaction.
Click on a line that starts with a "+
" to see the C code that Cython generated for it.
Raw output: c.c
+00001: # cython: language_level = 3
__pyx_t_7 = __Pyx_PyDict_NewPresized(63); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_collapse_blocks_line_74, __pyx_kp_u_Collapses_a_generic_sequence_of) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory___delitem___line_6252, __pyx_kp_u_Deletes_data_Arguments_key_slice) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory___eq___line_6310, __pyx_kp_u_Equality_comparison_Arguments_ot) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory___getitem___line_6354, __pyx_kp_u_Gets_data_Arguments_key_slice_or) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory___setitem___line_6492, __pyx_kp_u_Sets_data_Arguments_key_slice_or) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory___str___line_6567, __pyx_kp_u_String_representation_If_attr_co) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory__block_index_at_line_6620, __pyx_kp_u_Locates_the_block_enclosing_an_a) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory__block_index_endex_line_6, __pyx_kp_u_Locates_the_last_block_before_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory__block_index_start_line_6, __pyx_kp_u_Locates_the_first_block_inside_o) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_append_line_6852, __pyx_kp_u_Appends_a_single_item_Arguments) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_block_span_line_6912, __pyx_kp_u_Span_of_block_data_It_searches_f) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_blocks_line_7005, __pyx_kp_u_Iterates_over_blocks_Iterates_ov) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_bound_line_7084, __pyx_kp_u_Bounds_addresses_It_bounds_the_g) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_clear_line_7156, __pyx_kp_u_Clears_an_address_range_Argument) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_endex___get___lin, __pyx_kp_u_int_Exclusive_content_end_addres) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_endin___get___lin, __pyx_kp_u_int_Inclusive_content_end_addres) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_items_line_7345, __pyx_kp_u_Iterates_over_content_address_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_keys_line_7423, __pyx_kp_u_Iterates_over_content_addresses) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_parts___get___lin, __pyx_kp_u_Number_of_blocks_Returns_int_The) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_size___get___line, __pyx_kp_u_Actual_content_size_Returns_int) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_span___get___line, __pyx_kp_u_tuple_of_int_Memory_content_addr) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_start___get___lin, __pyx_kp_u_int_Inclusive_content_start_addr) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_content_values_line_7671, __pyx_kp_u_Iterates_over_content_values_Arg) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_count_line_7777, __pyx_kp_u_Counts_items_Arguments_item_item) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_crop_line_7816, __pyx_kp_u_Keeps_data_within_an_address_ran) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_delete_line_7956, __pyx_kp_u_Deletes_an_address_range_Argumen) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_endex___get___line_8052, __pyx_kp_u_int_Exclusive_end_address_This_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_endin___get___line_8099, __pyx_kp_u_int_Inclusive_end_address_This_p) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_equal_span_line_8145, __pyx_kp_u_Span_of_homogeneous_data_It_sear) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_extract_line_8325, __pyx_kp_u_Selects_items_from_a_range_Argum) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_fill_line_8391, __pyx_kp_u_Overwrites_a_range_with_a_patter) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_flood_line_8522, __pyx_kp_u_Fills_emptiness_between_non_touc) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_from_blocks_line_8627, __pyx_kp_u_Creates_a_virtual_memory_from_bl) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_from_bytes_line_8703, __pyx_kp_u_Creates_a_virtual_memory_from_a) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_from_items_line_8771, __pyx_kp_u_Creates_a_virtual_memory_from_a_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_from_memory_line_8844, __pyx_kp_u_Creates_a_virtual_memory_from_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_from_values_line_8920, __pyx_kp_u_Creates_a_virtual_memory_from_a_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_fromhex_line_8983, __pyx_kp_u_Creates_a_virtual_memory_from_an_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_gaps_line_9014, __pyx_kp_u_Iterates_over_block_gaps_Iterate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_get_line_9104, __pyx_kp_u_Gets_the_item_at_an_address_Retu) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_hex_line_9156, __pyx_kp_u_Converts_into_an_hexadecimal_str) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_insert_line_9234, __pyx_kp_u_Inserts_data_Inserts_data_moving) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_intervals_line_9341, __pyx_kp_u_Iterates_over_block_intervals_It) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_items_line_9411, __pyx_kp_u_Iterates_over_address_and_value) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_keys_line_9514, __pyx_kp_u_Iterates_over_addresses_Iterates) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_peek_line_9615, __pyx_kp_u_Gets_the_item_at_an_address_Retu_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_poke_line_9650, __pyx_kp_u_Sets_the_item_at_an_address_Argu) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_pop_line_9733, __pyx_kp_u_Takes_a_value_away_Arguments_add) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_popitem_line_9829, __pyx_kp_u_Pops_the_last_item_Return_int_in) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_remove_line_9929, __pyx_kp_u_Removes_an_item_Searches_and_del) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_reserve_line_10053, __pyx_kp_u_Inserts_emptiness_Reserves_empti) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_reverse_line_10168, __pyx_kp_u_Reverses_the_memory_in_place_Dat) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_rvalues_line_10290, __pyx_kp_u_Iterates_over_values_reversed_or) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_setdefault_line_10406, __pyx_kp_u_Defaults_a_value_Arguments_addre) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_shift_line_10519, __pyx_kp_u_Shifts_the_items_Arguments_offse) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_span___get___line_10618, __pyx_kp_u_tuple_of_int_Memory_address_span) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_start___get___line_10649, __pyx_kp_u_int_Inclusive_start_address_This) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_to_blocks_line_10695, __pyx_kp_u_Exports_into_blocks_Exports_data) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_to_bytes_line_10778, __pyx_kp_u_Exports_into_bytes_Exports_data) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_update_line_10895, __pyx_kp_u_Updates_data_Arguments_data_iter) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_values_line_11035, __pyx_kp_u_Iterates_over_values_Iterates_ov) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_view_line_11148, __pyx_kp_u_Creates_a_view_over_a_range_Crea) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_Memory_write_line_11203, __pyx_kp_u_Writes_data_Arguments_address_in) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_7) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
00002: # cython: embedsignature = True
00003: # cython: binding = True
00004:
00005: # Copyright (c) 2020-2022, Andrea Zoppi.
00006: # All rights reserved.
00007: #
00008: # Redistribution and use in source and binary forms, with or without
00009: # modification, are permitted provided that the following conditions are met:
00010: #
00011: # 1. Redistributions of source code must retain the above copyright notice,
00012: # this list of conditions and the following disclaimer.
00013: #
00014: # 2. Redistributions in binary form must reproduce the above copyright
00015: # notice, this list of conditions and the following disclaimer in the
00016: # documentation and/or other materials provided with the distribution.
00017: #
00018: # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00019: # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020: # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021: # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
00022: # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00023: # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00024: # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025: # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00026: # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00027: # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00028: # POSSIBILITY OF SUCH DAMAGE.
00029:
00030: r"""Cython implementation."""
00031:
00032: cimport cython
00033: from cpython.bytearray cimport PyByteArray_FromStringAndSize
00034: from cpython.bytes cimport PyBytes_FromStringAndSize
00035:
+00036: from itertools import count as _count
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_count); __Pyx_GIVEREF(__pyx_n_s_count); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_count); __pyx_t_2 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_count_2, __pyx_t_1) < 0) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00037: from itertools import islice as _islice
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_islice); __Pyx_GIVEREF(__pyx_n_s_islice); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_islice); __pyx_t_1 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_islice); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_islice_2, __pyx_t_2) < 0) __PYX_ERR(0, 37, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00038: from itertools import repeat as _repeat
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_repeat); __Pyx_GIVEREF(__pyx_n_s_repeat); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_repeat); __pyx_t_2 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_repeat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_repeat_2, __pyx_t_1) < 0) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00039: from itertools import zip_longest as _zip_longest
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_zip_longest); __Pyx_GIVEREF(__pyx_n_s_zip_longest); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_zip_longest); __pyx_t_1 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_zip_longest); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_zip_longest_2, __pyx_t_2) < 0) __PYX_ERR(0, 39, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00040: from typing import Any
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Any); __Pyx_GIVEREF(__pyx_n_s_Any); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Any); __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_1) < 0) __PYX_ERR(0, 40, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00041: from typing import ByteString
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_ByteString); __Pyx_GIVEREF(__pyx_n_s_ByteString); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ByteString); __pyx_t_1 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ByteString); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ByteString, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00042: from typing import Iterable
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Iterable); __Pyx_GIVEREF(__pyx_n_s_Iterable); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Iterable); __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Iterable, __pyx_t_1) < 0) __PYX_ERR(0, 42, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00043: from typing import Iterator
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_Iterator); __Pyx_GIVEREF(__pyx_n_s_Iterator); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Iterator); __pyx_t_1 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Iterator, __pyx_t_2) < 0) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00044: from typing import List
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_List); __Pyx_GIVEREF(__pyx_n_s_List); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_List); __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_List); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_List, __pyx_t_1) < 0) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00045: from typing import Mapping
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_Mapping); __Pyx_GIVEREF(__pyx_n_s_Mapping); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Mapping); __pyx_t_1 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Mapping, __pyx_t_2) < 0) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00046: from typing import Optional
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Optional); __Pyx_GIVEREF(__pyx_n_s_Optional); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Optional); __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Optional, __pyx_t_1) < 0) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00047: from typing import Sequence
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_Sequence); __Pyx_GIVEREF(__pyx_n_s_Sequence); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Sequence); __pyx_t_1 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Sequence, __pyx_t_2) < 0) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00048: from typing import Tuple
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Tuple); __Pyx_GIVEREF(__pyx_n_s_Tuple); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Tuple); __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Tuple, __pyx_t_1) < 0) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00049: from typing import Type
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_Type); __Pyx_GIVEREF(__pyx_n_s_Type); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Type); __pyx_t_1 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Type, __pyx_t_2) < 0) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00050: from typing import Union
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Union); __Pyx_GIVEREF(__pyx_n_s_Union); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Union); __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Union, __pyx_t_1) < 0) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
00051:
+00052: from bytesparse.base import STR_MAX_CONTENT_SIZE
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_STR_MAX_CONTENT_SIZE); __Pyx_GIVEREF(__pyx_n_s_STR_MAX_CONTENT_SIZE); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_STR_MAX_CONTENT_SIZE); __pyx_t_1 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_STR_MAX_CONTENT_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_STR_MAX_CONTENT_SIZE, __pyx_t_2) < 0) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00053: from bytesparse.base import Address
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Address); __Pyx_GIVEREF(__pyx_n_s_Address); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Address); __pyx_t_2 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Address, __pyx_t_1) < 0) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00054: from bytesparse.base import AddressValueMapping
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_AddressValueMapping); __Pyx_GIVEREF(__pyx_n_s_AddressValueMapping); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_AddressValueMapping); __pyx_t_1 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_AddressValueMapping); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_AddressValueMapping, __pyx_t_2) < 0) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00055: from bytesparse.base import AnyBytes
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_AnyBytes); __Pyx_GIVEREF(__pyx_n_s_AnyBytes); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_AnyBytes); __pyx_t_2 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_AnyBytes, __pyx_t_1) < 0) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00056: from bytesparse.base import BlockIndex
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_BlockIndex); __Pyx_GIVEREF(__pyx_n_s_BlockIndex); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_BlockIndex); __pyx_t_1 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_BlockIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BlockIndex, __pyx_t_2) < 0) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00057: from bytesparse.base import BlockIterable
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_BlockIterable); __Pyx_GIVEREF(__pyx_n_s_BlockIterable); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_BlockIterable); __pyx_t_2 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_BlockIterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BlockIterable, __pyx_t_1) < 0) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00058: from bytesparse.base import BlockList
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_BlockList); __Pyx_GIVEREF(__pyx_n_s_BlockList); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_BlockList); __pyx_t_1 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_BlockList); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BlockList, __pyx_t_2) < 0) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00059: from bytesparse.base import BlockSequence
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_BlockSequence); __Pyx_GIVEREF(__pyx_n_s_BlockSequence); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_BlockSequence); __pyx_t_2 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_BlockSequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BlockSequence, __pyx_t_1) < 0) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00060: from bytesparse.base import ClosedInterval
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_ClosedInterval); __Pyx_GIVEREF(__pyx_n_s_ClosedInterval); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ClosedInterval); __pyx_t_1 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ClosedInterval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ClosedInterval, __pyx_t_2) < 0) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00061: from bytesparse.base import EllipsisType
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_EllipsisType); __Pyx_GIVEREF(__pyx_n_s_EllipsisType); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_EllipsisType); __pyx_t_2 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_EllipsisType, __pyx_t_1) < 0) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00062: from bytesparse.base import ImmutableMemory
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_ImmutableMemory); __Pyx_GIVEREF(__pyx_n_s_ImmutableMemory); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ImmutableMemory); __pyx_t_1 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ImmutableMemory, __pyx_t_2) < 0) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00063: from bytesparse.base import MutableMemory
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_MutableMemory); __Pyx_GIVEREF(__pyx_n_s_MutableMemory); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_MutableMemory); __pyx_t_2 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_MutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_MutableMemory, __pyx_t_1) < 0) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00064: from bytesparse.base import OpenInterval
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_OpenInterval); __Pyx_GIVEREF(__pyx_n_s_OpenInterval); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_OpenInterval); __pyx_t_1 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_OpenInterval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_OpenInterval, __pyx_t_2) < 0) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00065: from bytesparse.base import Value
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Value); __Pyx_GIVEREF(__pyx_n_s_Value); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Value); __pyx_t_2 = __Pyx_Import(__pyx_n_s_bytesparse_base, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Value, __pyx_t_1) < 0) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
00066:
00067: # Allocate an empty block, so that an empty view can be returned statically
00068: cdef:
+00069: Block_* _empty_block = Block_Acquire(Block_Alloc(0, 0, False))
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Alloc(0, 0, 0); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 69, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 69, __pyx_L1_error) __pyx_v_11cbytesparse_1c__empty_block = __pyx_t_4;
00070:
00071:
00072: # =====================================================================================================================
00073:
+00074: def collapse_blocks(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_1collapse_blocks(PyObject *__pyx_self, PyObject *__pyx_v_blocks); /*proto*/ static char __pyx_doc_11cbytesparse_1c_collapse_blocks[] = "collapse_blocks(blocks: BlockIterable) -> BlockList\nCollapses a generic sequence of blocks.\n\n Given a generic sequence of blocks, writes them in the same order,\n generating a new sequence of non-contiguous blocks, sorted by address.\n\n Arguments:\n blocks (sequence of blocks):\n Sequence of blocks to collapse.\n\n Returns:\n list of blocks: Collapsed block list.\n\n Examples:\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n |[0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9]|\n +---+---+---+---+---+---+---+---+---+---+\n |[A | B | C | D]| | | | | | |\n +---+---+---+---+---+---+---+---+---+---+\n | | | |[E | F]| | | | | |\n +---+---+---+---+---+---+---+---+---+---+\n |[$]| | | | | | | | | |\n +---+---+---+---+---+---+---+---+---+---+\n | | | | | | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n |[$ | B | C | E | F | 5 | x | y | z | 9]|\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> blocks = [\n ... [0, b'0123456789'],\n ... [0, b'ABCD'],\n ... [3, b'EF'],\n ... [0, b'$'],\n ... [6, b'xyz'],\n ... ]\n >>> collapse_blocks(blocks)\n [[0, b'$BCEF5xyz9']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n |[0 | 1 | 2]| | | | | | | |\n +---+---+---+---+---+---+---+---+---+---+\n | | | | |[A | B]| | | | |\n +---+---+---+---+---+---+---+---+---+---+\n | | | | | | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | |[$]| | | | | | | | |\n +---+---+---""+---+---+---+---+---+---+---+\n |[0 | $ | 2]| |[A | B | x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> blocks = [\n ... [0, b'012'],\n ... [4, b'AB'],\n ... [6, b'xyz'],\n ... [1, b'$'],\n ... ]\n >>> collapse_blocks(blocks)\n [[0, b'0$2'], [4, b'ABxyz']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_1collapse_blocks = {"collapse_blocks", (PyCFunction)__pyx_pw_11cbytesparse_1c_1collapse_blocks, METH_O, __pyx_doc_11cbytesparse_1c_collapse_blocks}; static PyObject *__pyx_pw_11cbytesparse_1c_1collapse_blocks(PyObject *__pyx_self, PyObject *__pyx_v_blocks) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("collapse_blocks (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_collapse_blocks(__pyx_self, ((PyObject *)__pyx_v_blocks)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_collapse_blocks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks) { Memory_ *__pyx_v_memory; PyObject *__pyx_v_collapsed = 0; size_t __pyx_v_block_index; Rack_ const *__pyx_v_blocks2; Block_ const *__pyx_v_block; PyObject *__pyx_v_block_start = NULL; PyObject *__pyx_v_block_data = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("collapse_blocks", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cbytesparse.c.collapse_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_collapsed); __Pyx_XDECREF(__pyx_v_block_start); __Pyx_XDECREF(__pyx_v_block_data); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__79 = PyTuple_Pack(8, __pyx_n_s_blocks, __pyx_n_s_memory, __pyx_n_s_collapsed, __pyx_n_s_block_index, __pyx_n_s_blocks2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_data); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__79); __Pyx_GIVEREF(__pyx_tuple__79); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_1collapse_blocks, 0, __pyx_n_s_collapse_blocks, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_collapse_blocks, __pyx_t_1) < 0) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_collapse_blocks, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 74, __pyx_L1_error)
+00075: blocks: BlockIterable,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_BlockIterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_blocks, __pyx_t_1) < 0) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+00076: ) -> BlockList:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_BlockList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
00077: r"""Collapses a generic sequence of blocks.
00078:
00079: Given a generic sequence of blocks, writes them in the same order,
00080: generating a new sequence of non-contiguous blocks, sorted by address.
00081:
00082: Arguments:
00083: blocks (sequence of blocks):
00084: Sequence of blocks to collapse.
00085:
00086: Returns:
00087: list of blocks: Collapsed block list.
00088:
00089: Examples:
00090: +---+---+---+---+---+---+---+---+---+---+
00091: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
00092: +===+===+===+===+===+===+===+===+===+===+
00093: |[0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9]|
00094: +---+---+---+---+---+---+---+---+---+---+
00095: |[A | B | C | D]| | | | | | |
00096: +---+---+---+---+---+---+---+---+---+---+
00097: | | | |[E | F]| | | | | |
00098: +---+---+---+---+---+---+---+---+---+---+
00099: |[$]| | | | | | | | | |
00100: +---+---+---+---+---+---+---+---+---+---+
00101: | | | | | | |[x | y | z]| |
00102: +---+---+---+---+---+---+---+---+---+---+
00103: |[$ | B | C | E | F | 5 | x | y | z | 9]|
00104: +---+---+---+---+---+---+---+---+---+---+
00105:
00106: >>> blocks = [
00107: ... [0, b'0123456789'],
00108: ... [0, b'ABCD'],
00109: ... [3, b'EF'],
00110: ... [0, b'$'],
00111: ... [6, b'xyz'],
00112: ... ]
00113: >>> collapse_blocks(blocks)
00114: [[0, b'$BCEF5xyz9']]
00115:
00116: ~~~
00117:
00118: +---+---+---+---+---+---+---+---+---+---+
00119: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
00120: +===+===+===+===+===+===+===+===+===+===+
00121: |[0 | 1 | 2]| | | | | | | |
00122: +---+---+---+---+---+---+---+---+---+---+
00123: | | | | |[A | B]| | | | |
00124: +---+---+---+---+---+---+---+---+---+---+
00125: | | | | | | |[x | y | z]| |
00126: +---+---+---+---+---+---+---+---+---+---+
00127: | |[$]| | | | | | | | |
00128: +---+---+---+---+---+---+---+---+---+---+
00129: |[0 | $ | 2]| |[A | B | x | y | z]| |
00130: +---+---+---+---+---+---+---+---+---+---+
00131:
00132: >>> blocks = [
00133: ... [0, b'012'],
00134: ... [4, b'AB'],
00135: ... [6, b'xyz'],
00136: ... [1, b'$'],
00137: ... ]
00138: >>> collapse_blocks(blocks)
00139: [[0, b'0$2'], [4, b'ABxyz']]
00140: """
00141:
00142: cdef:
+00143: Memory_* memory = Memory_Alloc()
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Alloc(); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 143, __pyx_L1_error)
__pyx_v_memory = __pyx_t_1;
+00144: list collapsed = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_collapsed = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
00145: size_t block_index
00146: const Rack_* blocks2
00147: const Block_* block
00148:
+00149: try:
/*try:*/ {
+00150: for block_start, block_data in blocks:
if (likely(PyList_CheckExact(__pyx_v_blocks)) || PyTuple_CheckExact(__pyx_v_blocks)) { __pyx_t_2 = __pyx_v_blocks; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L4_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 150, __pyx_L4_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 150, __pyx_L4_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 150, __pyx_L4_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 150, __pyx_L4_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 150, __pyx_L4_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 150, __pyx_L4_error) __pyx_L9_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_block_start, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_block_data, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+00151: Memory_Write(memory, block_start, block_data, True)
__pyx_t_10 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_v_block_start, __pyx_v_block_data, 1); if (unlikely(__pyx_t_10 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 151, __pyx_L4_error)
+00152: blocks2 = memory.blocks
__pyx_t_11 = __pyx_v_memory->blocks; __pyx_v_blocks2 = __pyx_t_11;
00153:
+00154: for block_index in range(Rack_Length(blocks2)):
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks2); __pyx_t_13 = __pyx_t_12; for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_block_index = __pyx_t_14;
+00155: block = Rack_Get__(blocks2, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks2, __pyx_v_block_index);
+00156: collapsed.append([Block_Start(block), Block_Bytes(block)])
__pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 156, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_Bytes(__pyx_v_block); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 156, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 156, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_2); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_collapsed, __pyx_t_7); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 156, __pyx_L4_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } }
00157: finally:
+00158: Memory_Free(memory)
/*finally:*/ { /*normal exit:*/{ __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L1_error) goto __pyx_L5; } __pyx_L4_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L13_error) } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); } __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L1_error; __pyx_L13_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); } __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; goto __pyx_L1_error; } __pyx_L5:; }
00159:
+00160: return collapsed
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_collapsed); __pyx_r = __pyx_v_collapsed; goto __pyx_L0;
00161:
00162:
00163: # =====================================================================================================================
00164:
00165: # FIXME: Not yet provided by the current Cython (0.29.x)
+00166: cdef void* PyMem_Calloc(size_t nelem, size_t elsize):
static void *__pyx_f_11cbytesparse_1c_PyMem_Calloc(size_t __pyx_v_nelem, size_t __pyx_v_elsize) { void *__pyx_v_ptr; size_t __pyx_v_total; void *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("PyMem_Calloc", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
00167: cdef:
00168: void* ptr
00169: size_t total
00170:
+00171: if CannotMulSizeU(nelem, elsize):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotMulSizeU(__pyx_v_nelem, __pyx_v_elsize) != 0); if (__pyx_t_1) { /* … */ }
+00172: return NULL # overflow
__pyx_r = NULL; goto __pyx_L0;
+00173: total = nelem * elsize
__pyx_v_total = (__pyx_v_nelem * __pyx_v_elsize);
00174:
+00175: ptr = PyMem_Malloc(total)
__pyx_v_ptr = PyMem_Malloc(__pyx_v_total);
+00176: if ptr:
__pyx_t_1 = (__pyx_v_ptr != 0); if (__pyx_t_1) { /* … */ }
+00177: memset(ptr, 0, total)
(void)(memset(__pyx_v_ptr, 0, __pyx_v_total));
+00178: return ptr
__pyx_r = __pyx_v_ptr; goto __pyx_L0;
00179:
00180:
00181: # =====================================================================================================================
00182:
+00183: cdef size_t Downsize(size_t allocated, size_t requested) nogil:
static size_t __pyx_f_11cbytesparse_1c_Downsize(size_t __pyx_v_allocated, size_t __pyx_v_requested) { size_t __pyx_v_resized; size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00184: # Note: free margin will be either before and after allocated data
00185: cdef size_t resized
00186:
+00187: if requested < allocated >> 1:
__pyx_t_1 = ((__pyx_v_requested < (__pyx_v_allocated >> 1)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
00188: # Major downsize; allocate as per request
+00189: resized = requested
__pyx_v_resized = __pyx_v_requested;
00190:
00191: # Align to next MARGIN; always gives some additional MARGIN
00192: with cython.cdivision(True):
+00193: resized += (2 * MARGIN) - (resized % MARGIN)
__pyx_v_resized = (__pyx_v_resized + ((2 * MARGIN) - (__pyx_v_resized % MARGIN)));
00194: else:
00195: # Do not require reallocation
+00196: resized = allocated
/*else*/ { __pyx_v_resized = __pyx_v_allocated;
00197:
00198: # Align to next MARGIN; always gives some additional MARGIN
+00199: if resized < 2 * MARGIN:
__pyx_t_1 = ((__pyx_v_resized < (2 * MARGIN)) != 0); if (__pyx_t_1) { /* … */ } } __pyx_L3:;
+00200: resized = 2 * MARGIN
__pyx_v_resized = (2 * MARGIN);
00201:
+00202: return resized
__pyx_r = __pyx_v_resized; goto __pyx_L0;
00203:
00204:
+00205: cdef size_t Upsize(size_t allocated, size_t requested) nogil:
static size_t __pyx_f_11cbytesparse_1c_Upsize(size_t __pyx_v_allocated, size_t __pyx_v_requested) { size_t __pyx_v_resized; size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00206: # Note: free margin will be either before and after allocated data
+00207: cdef size_t resized = requested
__pyx_v_resized = __pyx_v_requested;
00208:
00209: # Moderate upsize; overallocate proportionally
+00210: if resized <= allocated + (allocated >> 3):
__pyx_t_1 = ((__pyx_v_resized <= (__pyx_v_allocated + (__pyx_v_allocated >> 3))) != 0); if (__pyx_t_1) { /* … */ }
+00211: resized += resized >> 3
__pyx_v_resized = (__pyx_v_resized + (__pyx_v_resized >> 3));
00212:
00213: # Align to next MARGIN; always gives some additional MARGIN
00214: with cython.cdivision(True):
+00215: resized += (2 * MARGIN) - (resized % MARGIN)
__pyx_v_resized = (__pyx_v_resized + ((2 * MARGIN) - (__pyx_v_resized % MARGIN)));
+00216: return resized
__pyx_r = __pyx_v_resized; goto __pyx_L0;
00217:
00218:
00219: # ---------------------------------------------------------------------------------------------------------------------
00220:
+00221: cdef void Reverse(byte_t* buffer, size_t start, size_t endin) nogil:
static void __pyx_f_11cbytesparse_1c_Reverse(byte_t *__pyx_v_buffer, size_t __pyx_v_start, size_t __pyx_v_endin) { byte_t __pyx_v_t; /* … */ /* function exit code */ }
00222: cdef:
00223: byte_t t
00224:
+00225: while start < endin:
while (1) { __pyx_t_1 = ((__pyx_v_start < __pyx_v_endin) != 0); if (!__pyx_t_1) break;
+00226: t = buffer[start]
__pyx_v_t = (__pyx_v_buffer[__pyx_v_start]);
+00227: buffer[start] = buffer[endin]
(__pyx_v_buffer[__pyx_v_start]) = (__pyx_v_buffer[__pyx_v_endin]);
+00228: buffer[endin] = t
(__pyx_v_buffer[__pyx_v_endin]) = __pyx_v_t;
+00229: start += 1
__pyx_v_start = (__pyx_v_start + 1);
+00230: endin -= 1
__pyx_v_endin = (__pyx_v_endin - 1); }
00231:
00232:
+00233: cdef bint IsSequence(object obj) except -1:
static int __pyx_f_11cbytesparse_1c_IsSequence(PyObject *__pyx_v_obj) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("IsSequence", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cbytesparse.c.IsSequence", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00234: try:
{ /*try:*/ { /* … */ } __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L7_try_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L0; __pyx_L6_except_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L0; }
+00235: len(obj)
__pyx_t_4 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 235, __pyx_L3_error)
+00236: obj[0:0]
__pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_obj, 0, 0, NULL, NULL, &__pyx_slice_, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 236, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ __pyx_slice_ = PySlice_New(__pyx_int_0, __pyx_int_0, Py_None); if (unlikely(!__pyx_slice_)) __PYX_ERR(0, 236, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice_); __Pyx_GIVEREF(__pyx_slice_);
+00237: return True
__pyx_r = 1; goto __pyx_L7_try_return;
+00238: except TypeError:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_6) { __Pyx_AddTraceback("cbytesparse.c.IsSequence", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 238, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8);
+00239: return False
__pyx_r = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_except_return; } goto __pyx_L5_except_error; __pyx_L5_except_error:;
00240:
00241:
00242: # =====================================================================================================================
00243:
+00244: cdef bint CannotAddSizeU(size_t a, size_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotAddSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00245: return SIZE_MAX - a < b
__pyx_r = ((SIZE_MAX - __pyx_v_a) < __pyx_v_b); goto __pyx_L0;
00246:
00247:
+00248: cdef vint CheckAddSizeU(size_t a, size_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckAddSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckAddSizeU", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckAddSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00249: if CannotAddSizeU(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddSizeU(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00250: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 250, __pyx_L1_error)
00251:
00252:
+00253: cdef size_t AddSizeU(size_t a, size_t b) except? 0xDEAD:
static size_t __pyx_f_11cbytesparse_1c_AddSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { size_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("AddSizeU", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.AddSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00254: CheckAddSizeU(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 254, __pyx_L1_error)
+00255: return a + b
__pyx_r = (__pyx_v_a + __pyx_v_b); goto __pyx_L0;
00256:
00257:
+00258: cdef bint CannotSubSizeU(size_t a, size_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotSubSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00259: return a < b
__pyx_r = (__pyx_v_a < __pyx_v_b); goto __pyx_L0;
00260:
00261:
+00262: cdef vint CheckSubSizeU(size_t a, size_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckSubSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckSubSizeU", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckSubSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00263: if CannotSubSizeU(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotSubSizeU(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00264: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 264, __pyx_L1_error)
00265:
00266:
+00267: cdef size_t SubSizeU(size_t a, size_t b) except? 0xDEAD:
static size_t __pyx_f_11cbytesparse_1c_SubSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { size_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("SubSizeU", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.SubSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00268: CheckSubSizeU(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckSubSizeU(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 268, __pyx_L1_error)
+00269: return a - b
__pyx_r = (__pyx_v_a - __pyx_v_b); goto __pyx_L0;
00270:
00271:
+00272: cdef bint CannotMulSizeU(size_t a, size_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotMulSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { size_t __pyx_v_r; int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00273: cdef:
+00274: size_t r = a * b
__pyx_v_r = (__pyx_v_a * __pyx_v_b);
+00275: return a and b and (r < a or r < b)
__pyx_t_2 = (__pyx_v_a != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = (__pyx_v_b != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_r < __pyx_v_a) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_r < __pyx_v_b) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
00276:
00277:
+00278: cdef vint CheckMulSizeU(size_t a, size_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckMulSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckMulSizeU", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckMulSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00279: if CannotMulSizeU(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotMulSizeU(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00280: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 280, __pyx_L1_error)
00281:
00282:
+00283: cdef size_t MulSizeU(size_t a, size_t b) except? 0xDEAD:
static size_t __pyx_f_11cbytesparse_1c_MulSizeU(size_t __pyx_v_a, size_t __pyx_v_b) { size_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("MulSizeU", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.MulSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00284: CheckMulSizeU(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckMulSizeU(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 284, __pyx_L1_error)
+00285: return a * b
__pyx_r = (__pyx_v_a * __pyx_v_b); goto __pyx_L0;
00286:
00287:
00288: # ---------------------------------------------------------------------------------------------------------------------
00289:
+00290: cdef bint CannotAddSizeS(ssize_t a, ssize_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotAddSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00291: return ((b > 0 and a > SSIZE_MAX - b) or
__pyx_t_2 = ((__pyx_v_b > 0) != 0); if (!__pyx_t_2) { goto __pyx_L4_next_or; } else { } __pyx_t_2 = ((__pyx_v_a > (SSIZE_MAX - __pyx_v_b)) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_L4_next_or:;
+00292: (b < 0 and a < SSIZE_MIN - b))
__pyx_t_2 = ((__pyx_v_b < 0) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_a < (SSIZE_MIN - __pyx_v_b)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
00293:
00294:
+00295: cdef vint CheckAddSizeS(ssize_t a, ssize_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckAddSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckAddSizeS", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckAddSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00296: if CannotAddSizeS(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddSizeS(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00297: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 297, __pyx_L1_error)
00298:
00299:
+00300: cdef ssize_t AddSizeS(ssize_t a, ssize_t b) except? 0xDEAD:
static Py_ssize_t __pyx_f_11cbytesparse_1c_AddSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("AddSizeS", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.AddSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00301: CheckAddSizeS(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeS(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 301, __pyx_L1_error)
+00302: return a + b
__pyx_r = (__pyx_v_a + __pyx_v_b); goto __pyx_L0;
00303:
00304:
+00305: cdef bint CannotSubSizeS(ssize_t a, ssize_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotSubSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00306: return ((b > 0 and a < SSIZE_MIN + b) or
__pyx_t_2 = ((__pyx_v_b > 0) != 0); if (!__pyx_t_2) { goto __pyx_L4_next_or; } else { } __pyx_t_2 = ((__pyx_v_a < (SSIZE_MIN + __pyx_v_b)) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_L4_next_or:;
+00307: (b < 0 and a > SSIZE_MAX + b))
__pyx_t_2 = ((__pyx_v_b < 0) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_a > (SSIZE_MAX + __pyx_v_b)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
00308:
00309:
+00310: cdef vint CheckSubSizeS(ssize_t a, ssize_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckSubSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckSubSizeS", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckSubSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00311: if CannotSubSizeS(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotSubSizeS(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00312: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 312, __pyx_L1_error)
00313:
00314:
+00315: cdef ssize_t SubSizeS(ssize_t a, ssize_t b) except? 0xDEAD:
static Py_ssize_t __pyx_f_11cbytesparse_1c_SubSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("SubSizeS", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.SubSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00316: CheckSubSizeS(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckSubSizeS(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 316, __pyx_L1_error)
+00317: return a - b
__pyx_r = (__pyx_v_a - __pyx_v_b); goto __pyx_L0;
00318:
00319:
+00320: cdef bint CannotMulSizeS(ssize_t a, ssize_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotMulSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00321: with cython.cdivision(True):
+00322: if a > 0:
__pyx_t_1 = ((__pyx_v_a > 0) != 0); if (__pyx_t_1) { /* … */ }
+00323: if b > 0:
__pyx_t_1 = ((__pyx_v_b > 0) != 0); if (__pyx_t_1) { /* … */ }
+00324: return a > (SSIZE_MAX // b)
__pyx_r = (__pyx_v_a > (SSIZE_MAX / __pyx_v_b)); goto __pyx_L0;
00325: else:
+00326: return b < (SSIZE_MIN // a)
/*else*/ { __pyx_r = (__pyx_v_b < (SSIZE_MIN / __pyx_v_a)); goto __pyx_L0; }
00327: else:
+00328: if b > 0:
/*else*/ { __pyx_t_1 = ((__pyx_v_b > 0) != 0); if (__pyx_t_1) { /* … */ }
+00329: return a < (SSIZE_MIN // b)
__pyx_r = (__pyx_v_a < (SSIZE_MIN / __pyx_v_b)); goto __pyx_L0;
00330: else:
+00331: return a and b < (SSIZE_MAX // a)
/*else*/ { __pyx_t_2 = (__pyx_v_a != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = ((__pyx_v_b < (SSIZE_MAX / __pyx_v_a)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0; } }
00332:
00333:
+00334: cdef vint CheckMulSizeS(ssize_t a, ssize_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckMulSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckMulSizeS", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckMulSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00335: if CannotMulSizeS(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotMulSizeS(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00336: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 336, __pyx_L1_error)
00337:
00338:
+00339: cdef ssize_t MulSizeS(ssize_t a, ssize_t b) except? 0xDEAD:
static Py_ssize_t __pyx_f_11cbytesparse_1c_MulSizeS(Py_ssize_t __pyx_v_a, Py_ssize_t __pyx_v_b) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("MulSizeS", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.MulSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00340: CheckMulSizeS(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckMulSizeS(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 340, __pyx_L1_error)
+00341: return a * b
__pyx_r = (__pyx_v_a * __pyx_v_b); goto __pyx_L0;
00342:
00343:
00344: # =====================================================================================================================
00345:
+00346: cdef bint CannotAddAddrU(addr_t a, addr_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotAddAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00347: return ADDR_MAX - a < b
__pyx_r = ((ADDR_MAX - __pyx_v_a) < __pyx_v_b); goto __pyx_L0;
00348:
00349:
+00350: cdef vint CheckAddAddrU(addr_t a, addr_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckAddAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckAddAddrU", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckAddAddrU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00351: if CannotAddAddrU(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddAddrU(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00352: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 352, __pyx_L1_error)
00353:
00354:
+00355: cdef addr_t AddAddrU(addr_t a, addr_t b) except? 0xDEAD:
static addr_t __pyx_f_11cbytesparse_1c_AddAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("AddAddrU", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.AddAddrU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00356: CheckAddAddrU(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 356, __pyx_L1_error)
+00357: return a + b
__pyx_r = (__pyx_v_a + __pyx_v_b); goto __pyx_L0;
00358:
00359:
+00360: cdef bint CannotSubAddrU(addr_t a, addr_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotSubAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00361: return a < b
__pyx_r = (__pyx_v_a < __pyx_v_b); goto __pyx_L0;
00362:
00363:
+00364: cdef vint CheckSubAddrU(addr_t a, addr_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckSubAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckSubAddrU", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckSubAddrU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00365: if CannotSubAddrU(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotSubAddrU(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00366: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 366, __pyx_L1_error)
00367:
00368:
+00369: cdef addr_t SubAddrU(addr_t a, addr_t b) except? 0xDEAD:
static addr_t __pyx_f_11cbytesparse_1c_SubAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("SubAddrU", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.SubAddrU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00370: CheckSubAddrU(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 370, __pyx_L1_error)
+00371: return a - b
__pyx_r = (__pyx_v_a - __pyx_v_b); goto __pyx_L0;
00372:
00373:
+00374: cdef bint CannotMulAddrU(addr_t a, addr_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotMulAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { addr_t __pyx_v_r; int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00375: cdef:
+00376: addr_t r = a * b
__pyx_v_r = (__pyx_v_a * __pyx_v_b);
+00377: return a and b and (r < a or r < b)
__pyx_t_2 = (__pyx_v_a != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = (__pyx_v_b != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_r < __pyx_v_a) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_r < __pyx_v_b) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
00378:
00379:
+00380: cdef vint CheckMulAddrU(addr_t a, addr_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckMulAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckMulAddrU", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckMulAddrU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00381: if CannotMulAddrU(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotMulAddrU(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00382: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 382, __pyx_L1_error)
00383:
00384:
+00385: cdef addr_t MulAddrU(addr_t a, addr_t b) except? 0xDEAD:
static addr_t __pyx_f_11cbytesparse_1c_MulAddrU(addr_t __pyx_v_a, addr_t __pyx_v_b) { addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("MulAddrU", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.MulAddrU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00386: CheckMulAddrU(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckMulAddrU(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 386, __pyx_L1_error)
+00387: return a * b
__pyx_r = (__pyx_v_a * __pyx_v_b); goto __pyx_L0;
00388:
00389:
+00390: cdef bint CannotAddrToSizeU(addr_t a) nogil:
static int __pyx_f_11cbytesparse_1c_CannotAddrToSizeU(addr_t __pyx_v_a) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00391: return a > <addr_t>SIZE_MAX
__pyx_r = (__pyx_v_a > ((addr_t)SIZE_MAX)); goto __pyx_L0;
00392:
00393:
+00394: cdef vint CheckAddrToSizeU(addr_t a) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(addr_t __pyx_v_a) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckAddrToSizeU", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckAddrToSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00395: if CannotAddrToSizeU(a):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddrToSizeU(__pyx_v_a) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00396: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 396, __pyx_L1_error)
00397:
00398:
+00399: cdef size_t AddrToSizeU(addr_t a) except? 0xDEAD:
static size_t __pyx_f_11cbytesparse_1c_AddrToSizeU(addr_t __pyx_v_a) { size_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("AddrToSizeU", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.AddrToSizeU", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00400: CheckAddrToSizeU(a)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_a); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 400, __pyx_L1_error)
+00401: return <size_t>a
__pyx_r = ((size_t)__pyx_v_a); goto __pyx_L0;
00402:
00403:
00404: # ---------------------------------------------------------------------------------------------------------------------
00405:
+00406: cdef bint CannotAddAddrS(saddr_t a, saddr_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotAddAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00407: return ((b > 0 and a > SADDR_MAX - b) or
__pyx_t_2 = ((__pyx_v_b > 0) != 0); if (!__pyx_t_2) { goto __pyx_L4_next_or; } else { } __pyx_t_2 = ((__pyx_v_a > (SADDR_MAX - __pyx_v_b)) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_L4_next_or:;
+00408: (b < 0 and a < SADDR_MIN - b))
__pyx_t_2 = ((__pyx_v_b < 0) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_a < (SADDR_MIN - __pyx_v_b)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
00409:
00410:
+00411: cdef vint CheckAddAddrS(saddr_t a, saddr_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckAddAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckAddAddrS", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckAddAddrS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00412: if CannotAddAddrS(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddAddrS(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00413: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 413, __pyx_L1_error)
00414:
00415:
+00416: cdef saddr_t AddAddrS(saddr_t a, saddr_t b) except? 0xDEAD:
static saddr_t __pyx_f_11cbytesparse_1c_AddAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { saddr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("AddAddrS", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.AddAddrS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00417: CheckAddAddrS(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddAddrS(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 417, __pyx_L1_error)
+00418: return a + b
__pyx_r = (__pyx_v_a + __pyx_v_b); goto __pyx_L0;
00419:
00420:
+00421: cdef bint CannotSubAddrS(saddr_t a, saddr_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotSubAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00422: return ((b > 0 and a < SADDR_MIN + b) or
__pyx_t_2 = ((__pyx_v_b > 0) != 0); if (!__pyx_t_2) { goto __pyx_L4_next_or; } else { } __pyx_t_2 = ((__pyx_v_a < (SADDR_MIN + __pyx_v_b)) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_L4_next_or:;
+00423: (b < 0 and a > SADDR_MAX + b))
__pyx_t_2 = ((__pyx_v_b < 0) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_a > (SADDR_MAX + __pyx_v_b)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
00424:
00425:
+00426: cdef vint CheckSubAddrS(saddr_t a, saddr_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckSubAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckSubAddrS", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckSubAddrS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00427: if CannotSubAddrS(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotSubAddrS(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00428: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 428, __pyx_L1_error)
00429:
00430:
+00431: cdef saddr_t SubAddrS(saddr_t a, saddr_t b) except? 0xDEAD:
static saddr_t __pyx_f_11cbytesparse_1c_SubAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { saddr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("SubAddrS", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.SubAddrS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00432: CheckSubAddrS(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckSubAddrS(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 432, __pyx_L1_error)
+00433: return a - b
__pyx_r = (__pyx_v_a - __pyx_v_b); goto __pyx_L0;
00434:
00435:
+00436: cdef bint CannotMulAddrS(saddr_t a, saddr_t b) nogil:
static int __pyx_f_11cbytesparse_1c_CannotMulAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00437: with cython.cdivision(True):
+00438: if a > 0:
__pyx_t_1 = ((__pyx_v_a > 0) != 0); if (__pyx_t_1) { /* … */ }
+00439: if b > 0:
__pyx_t_1 = ((__pyx_v_b > 0) != 0); if (__pyx_t_1) { /* … */ }
+00440: return a > (SADDR_MAX // b)
__pyx_r = (__pyx_v_a > (SADDR_MAX / __pyx_v_b)); goto __pyx_L0;
00441: else:
+00442: return b < (SADDR_MIN // a)
/*else*/ { __pyx_r = (__pyx_v_b < (SADDR_MIN / __pyx_v_a)); goto __pyx_L0; }
00443: else:
+00444: if b > 0:
/*else*/ { __pyx_t_1 = ((__pyx_v_b > 0) != 0); if (__pyx_t_1) { /* … */ }
+00445: return a < (SADDR_MIN // b)
__pyx_r = (__pyx_v_a < (SADDR_MIN / __pyx_v_b)); goto __pyx_L0;
00446: else:
+00447: return a and b < (SADDR_MAX // a)
/*else*/ { __pyx_t_2 = (__pyx_v_a != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = ((__pyx_v_b < (SADDR_MAX / __pyx_v_a)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0; } }
00448:
00449:
+00450: cdef vint CheckMulAddrS(saddr_t a, saddr_t b) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckMulAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckMulAddrS", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckMulAddrS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00451: if CannotMulAddrS(a, b):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotMulAddrS(__pyx_v_a, __pyx_v_b) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00452: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 452, __pyx_L1_error)
00453:
00454:
+00455: cdef saddr_t MulAddrS(saddr_t a, saddr_t b) except? 0xDEAD:
static saddr_t __pyx_f_11cbytesparse_1c_MulAddrS(saddr_t __pyx_v_a, saddr_t __pyx_v_b) { saddr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("MulAddrS", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.MulAddrS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00456: CheckMulAddrS(a, b)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckMulAddrS(__pyx_v_a, __pyx_v_b); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 456, __pyx_L1_error)
+00457: return a * b
__pyx_r = (__pyx_v_a * __pyx_v_b); goto __pyx_L0;
00458:
00459:
+00460: cdef bint CannotAddrToSizeS(saddr_t a) nogil:
static int __pyx_f_11cbytesparse_1c_CannotAddrToSizeS(saddr_t __pyx_v_a) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00461: return a < <saddr_t>SSIZE_MIN or a > <saddr_t>SSIZE_MAX
__pyx_t_2 = ((__pyx_v_a < ((saddr_t)SSIZE_MIN)) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = ((__pyx_v_a > ((saddr_t)SSIZE_MAX)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
00462:
00463:
+00464: cdef vint CheckAddrToSizeS(saddr_t a) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_CheckAddrToSizeS(saddr_t __pyx_v_a) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("CheckAddrToSizeS", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.CheckAddrToSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00465: if CannotAddrToSizeS(a):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddrToSizeS(__pyx_v_a) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00466: raise OverflowError()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 466, __pyx_L1_error)
00467:
00468:
+00469: cdef ssize_t AddrToSizeS(saddr_t a) except? 0xDEAD:
static Py_ssize_t __pyx_f_11cbytesparse_1c_AddrToSizeS(saddr_t __pyx_v_a) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("AddrToSizeS", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.AddrToSizeS", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0xDEAD; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00470: CheckAddrToSizeS(a)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeS(__pyx_v_a); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 470, __pyx_L1_error)
+00471: return <ssize_t>a
__pyx_r = ((Py_ssize_t)__pyx_v_a); goto __pyx_L0;
00472:
00473:
00474: # =====================================================================================================================
00475:
+00476: cdef Block_* Block_Alloc(addr_t address, size_t size, bint zero) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Alloc(addr_t __pyx_v_address, size_t __pyx_v_size, int __pyx_v_zero) { Block_ *__pyx_v_that; size_t __pyx_v_allocated; size_t __pyx_v_actual; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Alloc", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_Alloc", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
00477: cdef:
+00478: Block_* that = NULL
__pyx_v_that = NULL;
00479: size_t allocated
00480: size_t actual
00481:
+00482: if size > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_size > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00483: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 483, __pyx_L1_error) /* … */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_size_overflow); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2);
00484:
00485: # Allocate as per request
+00486: allocated = Upsize(0, size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Upsize(0, __pyx_v_size);
+00487: if allocated > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00488: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 488, __pyx_L1_error)
00489:
+00490: actual = Block_HEADING + (allocated * sizeof(byte_t))
__pyx_v_actual = (Block_HEADING + (__pyx_v_allocated * (sizeof(byte_t))));
+00491: if zero:
__pyx_t_1 = (__pyx_v_zero != 0); if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+00492: that = <Block_*>PyMem_Calloc(actual, 1)
__pyx_v_that = ((Block_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(__pyx_v_actual, 1));
00493: else:
+00494: that = <Block_*>PyMem_Malloc(actual)
/*else*/ {
__pyx_v_that = ((Block_ *)PyMem_Malloc(__pyx_v_actual));
}
__pyx_L5:;
+00495: if that == NULL:
__pyx_t_1 = ((__pyx_v_that == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00496: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 496, __pyx_L1_error)
00497:
+00498: that.address = address
__pyx_v_that->address = __pyx_v_address;
+00499: that.references = 1 # acquired by default
__pyx_v_that->references = 1;
+00500: that.allocated = allocated
__pyx_v_that->allocated = __pyx_v_allocated;
+00501: that.start = MARGIN # leave some initial room
__pyx_v_that->start = MARGIN;
+00502: that.endex = that.start + size
__pyx_v_that->endex = (__pyx_v_that->start + __pyx_v_size);
+00503: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
00504:
00505:
+00506: cdef Block_* Block_Free(Block_* that):
static Block_ *__pyx_f_11cbytesparse_1c_Block_Free(Block_ *__pyx_v_that) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Free", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00507: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (__pyx_t_1) { /* … */ }
+00508: PyMem_Free(that)
PyMem_Free(__pyx_v_that);
+00509: return NULL
__pyx_r = NULL; goto __pyx_L0;
00510:
00511:
+00512: cdef Block_* Block_Create(addr_t address, size_t size, const byte_t* buffer) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Create(addr_t __pyx_v_address, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Block_ *__pyx_v_that; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Create", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Block_Create", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00513: if not size or buffer:
__pyx_t_2 = ((!(__pyx_v_size != 0)) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } __pyx_t_2 = (__pyx_v_buffer != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (likely(__pyx_t_1)) { /* … */ }
+00514: that = Block_Alloc(address, size, False)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Alloc(__pyx_v_address, __pyx_v_size, 0); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 514, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+00515: memcpy(&that.data[that.start], buffer, size * sizeof(byte_t))
(void)(memcpy((&(__pyx_v_that->data[__pyx_v_that->start])), __pyx_v_buffer, (__pyx_v_size * (sizeof(byte_t)))));
+00516: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
00517: else:
+00518: raise ValueError('null pointer')
/*else*/ { __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 518, __pyx_L1_error) } /* … */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_null_pointer); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 518, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3);
00519:
00520:
+00521: cdef Block_* Block_Copy(const Block_* that) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Copy(Block_ const *__pyx_v_that) { Block_ *__pyx_v_ptr; size_t __pyx_v_size; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Copy", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_Copy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
00522: cdef:
00523: Block_* ptr
00524: size_t size
00525:
+00526: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (likely(__pyx_t_1)) { /* … */ }
+00527: size = Block_HEADING + (that.allocated * sizeof(byte_t))
__pyx_v_size = (Block_HEADING + (__pyx_v_that->allocated * (sizeof(byte_t))));
+00528: ptr = <Block_*>PyMem_Malloc(size)
__pyx_v_ptr = ((Block_ *)PyMem_Malloc(__pyx_v_size));
+00529: if ptr == NULL:
__pyx_t_1 = ((__pyx_v_ptr == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00530: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 530, __pyx_L1_error)
00531:
+00532: memcpy(ptr, that, size)
(void)(memcpy(__pyx_v_ptr, __pyx_v_that, __pyx_v_size));
+00533: ptr.references = 1 # acquired by default
__pyx_v_ptr->references = 1;
+00534: return ptr
__pyx_r = __pyx_v_ptr; goto __pyx_L0;
00535: else:
+00536: raise ValueError('null pointer')
/*else*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 536, __pyx_L1_error) }
00537:
00538:
+00539: cdef Block_* Block_FromObject(addr_t address, object obj, bint nonnull) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_FromObject(addr_t __pyx_v_address, PyObject *__pyx_v_obj, int __pyx_v_nonnull) { byte_t __pyx_v_value; __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } }; size_t __pyx_v_size; byte_t const *__pyx_v_ptr; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_FromObject", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("cbytesparse.c.Block_FromObject", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; }
00540: cdef:
00541: byte_t value
00542: const byte_t[:] view
00543: size_t size
00544: const byte_t* ptr
00545:
+00546: if isinstance(obj, int):
__pyx_t_1 = PyInt_Check(__pyx_v_obj);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
+00547: value = <byte_t>obj
__pyx_t_3 = __Pyx_PyInt_As_byte_t(__pyx_v_obj); if (unlikely((__pyx_t_3 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) __pyx_v_value = ((byte_t)__pyx_t_3);
+00548: return Block_Create(address, 1, &value)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_Create(__pyx_v_address, 1, (&__pyx_v_value)); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 548, __pyx_L1_error)
__pyx_r = __pyx_t_4;
goto __pyx_L0;
00549: else:
+00550: try:
/*else*/ { { /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L5_exception_handled:; __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_L9_try_end:; }
+00551: view = obj
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_obj, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 551, __pyx_L4_error) __pyx_v_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+00552: except TypeError:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("cbytesparse.c.Block_FromObject", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 552, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12);
+00553: view = bytes(obj)
__pyx_t_13 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_obj); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 553, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_t_13, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 553, __pyx_L6_except_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1); __pyx_v_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error; __pyx_L6_except_error:;
+00554: size = len(view)
__pyx_t_14 = __Pyx_MemoryView_Len(__pyx_v_view);
__pyx_v_size = __pyx_t_14;
+00555: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
00556: with cython.boundscheck(False):
+00557: ptr = &view[0]
__pyx_t_15 = 0; if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_v_view.shape[0]; __pyx_v_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_view.data + __pyx_t_15 * __pyx_v_view.strides[0]) ))));
+00558: return Block_Create(address, size, ptr)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_Create(__pyx_v_address, __pyx_v_size, __pyx_v_ptr); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 558, __pyx_L1_error)
__pyx_r = __pyx_t_4;
goto __pyx_L0;
00559: else:
+00560: if nonnull:
/*else*/ { __pyx_t_2 = (__pyx_v_nonnull != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+00561: raise ValueError('invalid block data size')
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_Raise(__pyx_t_12, 0, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(0, 561, __pyx_L1_error) /* … */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_invalid_block_data_size); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 561, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4);
00562: else:
+00563: return Block_Alloc(address, 0, False)
/*else*/ {
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_Alloc(__pyx_v_address, 0, 0); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 563, __pyx_L1_error)
__pyx_r = __pyx_t_4;
goto __pyx_L0;
}
}
}
00564:
00565:
+00566: cdef void Block_Reverse(Block_* that) nogil:
static void __pyx_f_11cbytesparse_1c_Block_Reverse(Block_ *__pyx_v_that) { size_t __pyx_v_start; size_t __pyx_v_endex; size_t __pyx_v_endin; byte_t __pyx_v_temp; /* … */ /* function exit code */ }
00567: cdef:
+00568: size_t start = that.start
__pyx_t_1 = __pyx_v_that->start; __pyx_v_start = __pyx_t_1;
+00569: size_t endex = that.endex
__pyx_t_1 = __pyx_v_that->endex; __pyx_v_endex = __pyx_t_1;
00570: size_t endin
00571: byte_t temp
00572:
+00573: while start < endex:
while (1) { __pyx_t_2 = ((__pyx_v_start < __pyx_v_endex) != 0); if (!__pyx_t_2) break;
+00574: endin = endex - 1
__pyx_v_endin = (__pyx_v_endex - 1);
+00575: temp = that.data[start]
__pyx_v_temp = (__pyx_v_that->data[__pyx_v_start]);
+00576: that.data[start] = that.data[endin]
(__pyx_v_that->data[__pyx_v_start]) = (__pyx_v_that->data[__pyx_v_endin]);
+00577: that.data[endin] = temp
(__pyx_v_that->data[__pyx_v_endin]) = __pyx_v_temp;
+00578: endex = endin
__pyx_v_endex = __pyx_v_endin;
+00579: start += 1
__pyx_v_start = (__pyx_v_start + 1); }
00580:
00581:
+00582: cdef Block_* Block_Acquire(Block_* that) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Acquire(Block_ *__pyx_v_that) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Acquire", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_Acquire", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00583: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (likely(__pyx_t_1)) { /* … */ }
+00584: if that.references < SIZE_MAX:
__pyx_t_1 = ((__pyx_v_that->references < SIZE_MAX) != 0); if (likely(__pyx_t_1)) { /* … */ }
+00585: that.references += 1
__pyx_v_that->references = (__pyx_v_that->references + 1);
+00586: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
00587: else:
+00588: raise OverflowError()
/*else*/ { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 588, __pyx_L1_error) }
00589: else:
+00590: raise RuntimeError('null pointer')
/*else*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 590, __pyx_L1_error) }
00591:
00592:
+00593: cdef Block_* Block_Release_(Block_* that):
static Block_ *__pyx_f_11cbytesparse_1c_Block_Release_(Block_ *__pyx_v_that) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Release_", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00594: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (__pyx_t_1) { /* … */ }
+00595: if that.references:
__pyx_t_1 = (__pyx_v_that->references != 0); if (__pyx_t_1) { /* … */ }
+00596: that.references -= 1
__pyx_v_that->references = (__pyx_v_that->references - 1);
00597:
+00598: if that.references:
__pyx_t_1 = (__pyx_v_that->references != 0); if (__pyx_t_1) { /* … */ }
+00599: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
00600: else:
+00601: PyMem_Free(that)
/*else*/ {
PyMem_Free(__pyx_v_that);
}
00602:
+00603: return NULL
__pyx_r = NULL; goto __pyx_L0;
00604:
00605:
+00606: cdef Block_* Block_Release(Block_* that):
static Block_ *__pyx_f_11cbytesparse_1c_Block_Release(Block_ *__pyx_v_that) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Release", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00607: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (__pyx_t_1) { /* … */ }
+00608: if that.references:
__pyx_t_1 = (__pyx_v_that->references != 0); if (__pyx_t_1) { /* … */ }
+00609: that.references -= 1
__pyx_v_that->references = (__pyx_v_that->references - 1);
00610:
+00611: if not that.references:
__pyx_t_1 = ((!(__pyx_v_that->references != 0)) != 0); if (__pyx_t_1) { /* … */ }
+00612: PyMem_Free(that)
PyMem_Free(__pyx_v_that);
00613:
+00614: return NULL
__pyx_r = NULL; goto __pyx_L0;
00615:
00616:
+00617: cdef bint Block_Bool(const Block_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Block_Bool(Block_ const *__pyx_v_that) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00618: return that.start < that.endex
__pyx_r = (__pyx_v_that->start < __pyx_v_that->endex); goto __pyx_L0;
00619:
00620:
+00621: cdef size_t Block_Length(const Block_* that) nogil:
static size_t __pyx_f_11cbytesparse_1c_Block_Length(Block_ const *__pyx_v_that) { size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00622: return that.endex - that.start
__pyx_r = (__pyx_v_that->endex - __pyx_v_that->start); goto __pyx_L0;
00623:
00624:
+00625: cdef addr_t Block_Start(const Block_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Block_Start(Block_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00626: return that.address
__pyx_r = __pyx_v_that->address; goto __pyx_L0;
00627:
00628:
+00629: cdef addr_t Block_Endex(const Block_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Block_Endex(Block_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00630: return that.address + (that.endex - that.start)
__pyx_r = (__pyx_v_that->address + (__pyx_v_that->endex - __pyx_v_that->start)); goto __pyx_L0;
00631:
00632:
+00633: cdef addr_t Block_Endin(const Block_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Block_Endin(Block_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00634: return that.address + (that.endex - that.start) - 1
__pyx_r = ((__pyx_v_that->address + (__pyx_v_that->endex - __pyx_v_that->start)) - 1); goto __pyx_L0;
00635:
00636:
+00637: cdef addr_t Block_BoundAddress(const Block_* that, addr_t address) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Block_BoundAddress(Block_ const *__pyx_v_that, addr_t __pyx_v_address) { addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00638: cdef:
+00639: addr_t block_start = that.address
__pyx_t_1 = __pyx_v_that->address; __pyx_v_block_start = __pyx_t_1;
+00640: addr_t block_endex = block_start + that.endex - that.start
__pyx_v_block_endex = ((__pyx_v_block_start + __pyx_v_that->endex) - __pyx_v_that->start);
00641:
+00642: if address < block_start:
__pyx_t_2 = ((__pyx_v_address < __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+00643: address = block_start # trim to start
__pyx_v_address = __pyx_v_block_start;
+00644: elif address > block_endex:
__pyx_t_2 = ((__pyx_v_address > __pyx_v_block_endex) != 0); if (__pyx_t_2) { /* … */ } __pyx_L3:;
+00645: address = block_endex # trim to end
__pyx_v_address = __pyx_v_block_endex;
+00646: return address
__pyx_r = __pyx_v_address; goto __pyx_L0;
00647:
00648:
+00649: cdef size_t Block_BoundAddressToOffset(const Block_* that, addr_t address) nogil:
static size_t __pyx_f_11cbytesparse_1c_Block_BoundAddressToOffset(Block_ const *__pyx_v_that, addr_t __pyx_v_address) { addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00650: cdef:
+00651: addr_t block_start = that.address
__pyx_t_1 = __pyx_v_that->address; __pyx_v_block_start = __pyx_t_1;
+00652: addr_t block_endex = block_start + that.endex - that.start
__pyx_v_block_endex = ((__pyx_v_block_start + __pyx_v_that->endex) - __pyx_v_that->start);
00653:
+00654: if address < block_start:
__pyx_t_2 = ((__pyx_v_address < __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+00655: address = block_start # trim to start
__pyx_v_address = __pyx_v_block_start;
+00656: elif address > block_endex:
__pyx_t_2 = ((__pyx_v_address > __pyx_v_block_endex) != 0); if (__pyx_t_2) { /* … */ } __pyx_L3:;
+00657: address = block_endex # trim to end
__pyx_v_address = __pyx_v_block_endex;
+00658: return <size_t>(address - block_start)
__pyx_r = ((size_t)(__pyx_v_address - __pyx_v_block_start)); goto __pyx_L0;
00659:
00660:
+00661: cdef size_t Block_BoundOffset(const Block_* that, size_t offset) nogil:
static size_t __pyx_f_11cbytesparse_1c_Block_BoundOffset(Block_ const *__pyx_v_that, size_t __pyx_v_offset) { size_t __pyx_v_size; size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00662: cdef:
+00663: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
00664:
+00665: if offset > size:
__pyx_t_1 = ((__pyx_v_offset > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00666: offset = size # trim to end
__pyx_v_offset = __pyx_v_size;
+00667: return offset
__pyx_r = __pyx_v_offset; goto __pyx_L0;
00668:
00669:
+00670: cdef (addr_t, addr_t) Block_BoundAddressSlice(const Block_* that, addr_t start, addr_t endex) nogil:
static __pyx_ctuple_addr_t__and_addr_t __pyx_f_11cbytesparse_1c_Block_BoundAddressSlice(Block_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex) { addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; __pyx_ctuple_addr_t__and_addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00671: cdef:
+00672: addr_t block_start = that.address
__pyx_t_1 = __pyx_v_that->address; __pyx_v_block_start = __pyx_t_1;
+00673: addr_t block_endex = block_start + (that.endex - that.start)
__pyx_v_block_endex = (__pyx_v_block_start + (__pyx_v_that->endex - __pyx_v_that->start));
00674:
+00675: if start < block_start:
__pyx_t_2 = ((__pyx_v_start < __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+00676: start = block_start # trim to start
__pyx_v_start = __pyx_v_block_start;
+00677: elif start > block_endex:
__pyx_t_2 = ((__pyx_v_start > __pyx_v_block_endex) != 0); if (__pyx_t_2) { /* … */ } __pyx_L3:;
+00678: start = block_endex # trim to end
__pyx_v_start = __pyx_v_block_endex;
00679:
+00680: if endex < block_start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+00681: endex = block_start # trim to start
__pyx_v_endex = __pyx_v_block_start;
+00682: elif endex > block_endex:
__pyx_t_2 = ((__pyx_v_endex > __pyx_v_block_endex) != 0); if (__pyx_t_2) { /* … */ } __pyx_L4:;
+00683: endex = block_endex # trim to end
__pyx_v_endex = __pyx_v_block_endex;
00684:
+00685: if endex < start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ }
+00686: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00687:
+00688: return start, endex
__pyx_t_3.f0 = __pyx_v_start; __pyx_t_3.f1 = __pyx_v_endex; __pyx_r = __pyx_t_3; goto __pyx_L0;
00689:
00690:
+00691: cdef (size_t, size_t) Block_BoundAddressSliceToOffset(const Block_* that, addr_t start, addr_t endex) nogil:
static __pyx_ctuple_size_t__and_size_t __pyx_f_11cbytesparse_1c_Block_BoundAddressSliceToOffset(Block_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex) { addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; __pyx_ctuple_size_t__and_size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00692: cdef:
+00693: addr_t block_start = that.address
__pyx_t_1 = __pyx_v_that->address; __pyx_v_block_start = __pyx_t_1;
+00694: addr_t block_endex = block_start + (that.endex - that.start)
__pyx_v_block_endex = (__pyx_v_block_start + (__pyx_v_that->endex - __pyx_v_that->start));
00695:
+00696: if start < block_start:
__pyx_t_2 = ((__pyx_v_start < __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+00697: start = block_start # trim to start
__pyx_v_start = __pyx_v_block_start;
+00698: elif start > block_endex:
__pyx_t_2 = ((__pyx_v_start > __pyx_v_block_endex) != 0); if (__pyx_t_2) { /* … */ } __pyx_L3:;
+00699: start = block_endex # trim to end
__pyx_v_start = __pyx_v_block_endex;
00700:
+00701: if endex < block_start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+00702: endex = block_start # trim to start
__pyx_v_endex = __pyx_v_block_start;
+00703: elif endex > block_endex:
__pyx_t_2 = ((__pyx_v_endex > __pyx_v_block_endex) != 0); if (__pyx_t_2) { /* … */ } __pyx_L4:;
+00704: endex = block_endex # trim to end
__pyx_v_endex = __pyx_v_block_endex;
00705:
+00706: if endex < start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ }
+00707: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00708:
+00709: return <size_t>(start - block_start), <size_t>(endex - block_start)
__pyx_t_3.f0 = ((size_t)(__pyx_v_start - __pyx_v_block_start)); __pyx_t_3.f1 = ((size_t)(__pyx_v_endex - __pyx_v_block_start)); __pyx_r = __pyx_t_3; goto __pyx_L0;
00710:
00711:
+00712: cdef (size_t, size_t) Block_BoundOffsetSlice(const Block_* that, size_t start, size_t endex) nogil:
static __pyx_ctuple_size_t__and_size_t __pyx_f_11cbytesparse_1c_Block_BoundOffsetSlice(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex) { size_t __pyx_v_size; __pyx_ctuple_size_t__and_size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00713: cdef:
+00714: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
00715:
+00716: if start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00717: start = size # trim to end
__pyx_v_start = __pyx_v_size;
00718:
+00719: if endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00720: endex = size # trim to end
__pyx_v_endex = __pyx_v_size;
00721:
+00722: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+00723: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00724:
+00725: return start, endex
__pyx_t_2.f0 = __pyx_v_start; __pyx_t_2.f1 = __pyx_v_endex; __pyx_r = __pyx_t_2; goto __pyx_L0;
00726:
00727:
+00728: cdef vint Block_CheckMutable(const Block_* that) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Block_CheckMutable(Block_ const *__pyx_v_that) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_CheckMutable", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_CheckMutable", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+00729: if that.references > 1:
__pyx_t_1 = ((__pyx_v_that->references > 1) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+00730: raise RuntimeError('Existing exports of data: object cannot be re-sized')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 730, __pyx_L1_error) /* … */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Existing_exports_of_data_object); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5);
00731:
00732:
+00733: cdef bint Block_Eq_(const Block_* that, size_t size, const byte_t* buffer) nogil:
static int __pyx_f_11cbytesparse_1c_Block_Eq_(Block_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+00734: if size != that.endex - that.start:
__pyx_t_1 = ((__pyx_v_size != (__pyx_v_that->endex - __pyx_v_that->start)) != 0); if (__pyx_t_1) { /* … */ }
+00735: return False
__pyx_r = 0; goto __pyx_L0;
00736:
+00737: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+00738: if memcmp(&that.data[that.start], buffer, size):
__pyx_t_1 = (memcmp((&(__pyx_v_that->data[__pyx_v_that->start])), __pyx_v_buffer, __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00739: return False
__pyx_r = 0; goto __pyx_L0;
00740:
+00741: return True
__pyx_r = 1; goto __pyx_L0;
00742:
00743:
+00744: cdef bint Block_Eq(const Block_* that, const Block_* other) nogil:
static int __pyx_f_11cbytesparse_1c_Block_Eq(Block_ const *__pyx_v_that, Block_ const *__pyx_v_other) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00745: # if that.address != other.address:
00746: # return False
00747:
+00748: return Block_Eq_(that, other.endex - other.start, &other.data[other.start])
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Eq_(__pyx_v_that, (__pyx_v_other->endex - __pyx_v_other->start), (&(__pyx_v_other->data[__pyx_v_other->start]))); goto __pyx_L0;
00749:
00750:
+00751: cdef int Block_Cmp_(const Block_* that, size_t size, const byte_t* buffer) nogil:
static int __pyx_f_11cbytesparse_1c_Block_Cmp_(Block_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { size_t __pyx_v_size2; size_t __pyx_v_minsize; byte_t const *__pyx_v_buffer2; int __pyx_v_sign; int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00752: cdef:
+00753: size_t size2 = that.endex - that.start
__pyx_v_size2 = (__pyx_v_that->endex - __pyx_v_that->start);
+00754: size_t minsize = size2 if size2 < size else size
if (((__pyx_v_size2 < __pyx_v_size) != 0)) { __pyx_t_1 = __pyx_v_size2; } else { __pyx_t_1 = __pyx_v_size; } __pyx_v_minsize = __pyx_t_1;
+00755: const byte_t* buffer2 = &that.data[that.start]
__pyx_v_buffer2 = (&(__pyx_v_that->data[__pyx_v_that->start]));
+00756: int sign = memcmp(buffer2, buffer, minsize)
__pyx_v_sign = memcmp(__pyx_v_buffer2, __pyx_v_buffer, __pyx_v_minsize);
00757:
+00758: if size2 == size:
__pyx_t_2 = ((__pyx_v_size2 == __pyx_v_size) != 0); if (__pyx_t_2) { /* … */ }
+00759: return sign
__pyx_r = __pyx_v_sign; goto __pyx_L0;
+00760: elif sign:
__pyx_t_2 = (__pyx_v_sign != 0); if (__pyx_t_2) { /* … */ }
+00761: return sign
__pyx_r = __pyx_v_sign; goto __pyx_L0;
00762: else:
+00763: return -1 if size2 < size else +1
/*else*/ { if (((__pyx_v_size2 < __pyx_v_size) != 0)) { __pyx_t_3 = -1; } else { __pyx_t_3 = 1; } __pyx_r = __pyx_t_3; goto __pyx_L0; }
00764:
00765:
+00766: cdef int Block_Cmp(const Block_* that, const Block_* other) nogil:
static int __pyx_f_11cbytesparse_1c_Block_Cmp(Block_ const *__pyx_v_that, Block_ const *__pyx_v_other) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00767: # if that.address != other.address:
00768: # return -1 if that.address < other.address else +1
00769:
+00770: return Block_Cmp_(that, other.endex - other.start, &other.data[other.start])
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Cmp_(__pyx_v_that, (__pyx_v_other->endex - __pyx_v_other->start), (&(__pyx_v_other->data[__pyx_v_other->start]))); goto __pyx_L0;
00771:
00772:
+00773: cdef ssize_t Block_Find__(const Block_* that, size_t start, size_t endex, byte_t value) nogil:
static Py_ssize_t __pyx_f_11cbytesparse_1c_Block_Find__(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, byte_t __pyx_v_value) { size_t __pyx_v_size; byte_t const *__pyx_v_ptr; byte_t const *__pyx_v_end; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00774: cdef:
+00775: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
00776: const byte_t* ptr
00777: const byte_t* end
00778:
+00779: if start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00780: start = size # trim to end
__pyx_v_start = __pyx_v_size;
+00781: if endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00782: endex = size # trim to end
__pyx_v_endex = __pyx_v_size;
+00783: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+00784: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00785:
+00786: ptr = &that.data[that.start + start]
__pyx_v_ptr = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_start)]));
+00787: end = &that.data[that.start + endex]
__pyx_v_end = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_endex)]));
00788:
+00789: while ptr != end:
while (1) { __pyx_t_1 = ((__pyx_v_ptr != __pyx_v_end) != 0); if (!__pyx_t_1) break;
+00790: if ptr[0] == value:
__pyx_t_1 = (((__pyx_v_ptr[0]) == __pyx_v_value) != 0); if (__pyx_t_1) { /* … */ }
+00791: return <ssize_t>(<ptrdiff_t>ptr - <ptrdiff_t>&that.data[that.start])
__pyx_r = ((Py_ssize_t)(((ptrdiff_t)__pyx_v_ptr) - ((ptrdiff_t)(&(__pyx_v_that->data[__pyx_v_that->start]))))); goto __pyx_L0;
+00792: ptr += 1
__pyx_v_ptr = (__pyx_v_ptr + 1); }
+00793: return -1
__pyx_r = -1L; goto __pyx_L0;
00794:
00795:
+00796: cdef ssize_t Block_Find_(const Block_* that, size_t start, size_t endex,
static Py_ssize_t __pyx_f_11cbytesparse_1c_Block_Find_(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { size_t __pyx_v_size2; byte_t const *__pyx_v_ptr; byte_t const *__pyx_v_end; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00797: size_t size, const byte_t* buffer) nogil:
00798: cdef:
00799: size_t size2
00800: const byte_t* ptr
00801: const byte_t* end
00802:
+00803: if size == 1: # faster code for single byte
__pyx_t_1 = ((__pyx_v_size == 1) != 0); if (__pyx_t_1) { /* … */ }
+00804: return Block_Find__(that, start, endex, buffer[0])
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Find__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, (__pyx_v_buffer[0])); goto __pyx_L0;
00805:
+00806: elif size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+00807: size2 = that.endex - that.start
__pyx_v_size2 = (__pyx_v_that->endex - __pyx_v_that->start);
00808:
+00809: if start > size2:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00810: start = size2 # trim to end
__pyx_v_start = __pyx_v_size2;
+00811: if endex > size2:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00812: endex = size2 # trim to end
__pyx_v_endex = __pyx_v_size2;
+00813: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+00814: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00815:
+00816: if size <= size2 and size <= endex - start:
__pyx_t_2 = ((__pyx_v_size <= __pyx_v_size2) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L8_bool_binop_done; } __pyx_t_2 = ((__pyx_v_size <= (__pyx_v_endex - __pyx_v_start)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L8_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+00817: size2 = endex - size + 1
__pyx_v_size2 = ((__pyx_v_endex - __pyx_v_size) + 1);
00818:
+00819: if start > size2:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00820: start = size2 # trim to end
__pyx_v_start = __pyx_v_size2;
+00821: if endex > size2:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00822: endex = size2 # trim to end
__pyx_v_endex = __pyx_v_size2;
00823:
+00824: ptr = &that.data[that.start + start]
__pyx_v_ptr = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_start)]));
+00825: end = &that.data[that.start + endex]
__pyx_v_end = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_endex)]));
00826:
+00827: while ptr != end:
while (1) { __pyx_t_1 = ((__pyx_v_ptr != __pyx_v_end) != 0); if (!__pyx_t_1) break;
+00828: if ptr[0] == buffer[0]: # faster pruning
__pyx_t_1 = (((__pyx_v_ptr[0]) == (__pyx_v_buffer[0])) != 0); if (__pyx_t_1) { /* … */ }
+00829: if not memcmp(ptr, buffer, size):
__pyx_t_1 = ((!(memcmp(__pyx_v_ptr, __pyx_v_buffer, __pyx_v_size) != 0)) != 0); if (__pyx_t_1) { /* … */ }
+00830: return <ssize_t>(<ptrdiff_t>ptr - <ptrdiff_t>&that.data[that.start])
__pyx_r = ((Py_ssize_t)(((ptrdiff_t)__pyx_v_ptr) - ((ptrdiff_t)(&(__pyx_v_that->data[__pyx_v_that->start]))))); goto __pyx_L0;
+00831: ptr += 1
__pyx_v_ptr = (__pyx_v_ptr + 1); }
+00832: return -1
__pyx_r = -1L; goto __pyx_L0;
00833:
00834:
+00835: cdef ssize_t Block_Find(const Block_* that, ssize_t start, ssize_t endex,
static Py_ssize_t __pyx_f_11cbytesparse_1c_Block_Find(Block_ const *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Py_ssize_t __pyx_v_ssize; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00836: size_t size, const byte_t* buffer) nogil:
00837: cdef:
+00838: ssize_t ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
00839:
+00840: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+00841: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+00842: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+00843: start = 0 # trim to start
__pyx_v_start = 0;
00844:
+00845: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+00846: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+00847: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+00848: endex = 0 # trim to start
__pyx_v_endex = 0;
00849:
+00850: return Block_Find_(that, <size_t>start, <size_t>endex, size, buffer)
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Find_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), __pyx_v_size, __pyx_v_buffer); goto __pyx_L0;
00851:
00852:
+00853: cdef ssize_t Block_ReverseFind__(const Block_* that, size_t start, size_t endex, byte_t value) nogil:
static Py_ssize_t __pyx_f_11cbytesparse_1c_Block_ReverseFind__(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, byte_t __pyx_v_value) { size_t __pyx_v_size; byte_t const *__pyx_v_ptr; byte_t const *__pyx_v_end; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00854: cdef:
+00855: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
00856: const byte_t* ptr
00857: const byte_t* end
00858:
+00859: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+00860: if start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00861: start = size # trim to end
__pyx_v_start = __pyx_v_size;
+00862: if endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00863: endex = size # trim to end
__pyx_v_endex = __pyx_v_size;
+00864: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+00865: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00866:
+00867: end = &that.data[that.start + start]
__pyx_v_end = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_start)]));
+00868: ptr = &that.data[that.start + endex]
__pyx_v_ptr = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_endex)]));
00869:
+00870: while ptr != end:
while (1) { __pyx_t_1 = ((__pyx_v_ptr != __pyx_v_end) != 0); if (!__pyx_t_1) break;
+00871: ptr -= 1
__pyx_v_ptr = (__pyx_v_ptr - 1);
+00872: if ptr[0] == value:
__pyx_t_1 = (((__pyx_v_ptr[0]) == __pyx_v_value) != 0); if (__pyx_t_1) { /* … */ } }
+00873: return <ssize_t>(<ptrdiff_t>ptr - <ptrdiff_t>&that.data[that.start])
__pyx_r = ((Py_ssize_t)(((ptrdiff_t)__pyx_v_ptr) - ((ptrdiff_t)(&(__pyx_v_that->data[__pyx_v_that->start]))))); goto __pyx_L0;
+00874: return -1
__pyx_r = -1L; goto __pyx_L0;
00875:
00876:
+00877: cdef ssize_t Block_ReverseFind_(const Block_* that, size_t start, size_t endex,
static Py_ssize_t __pyx_f_11cbytesparse_1c_Block_ReverseFind_(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { size_t __pyx_v_size2; byte_t const *__pyx_v_ptr; byte_t const *__pyx_v_end; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00878: size_t size, const byte_t* buffer) nogil:
00879: cdef:
00880: size_t size2
00881: const byte_t* ptr
00882: const byte_t* end
00883:
+00884: if size == 1: # faster code for single byte
__pyx_t_1 = ((__pyx_v_size == 1) != 0); if (__pyx_t_1) { /* … */ }
+00885: return Block_ReverseFind__(that, start, endex, buffer[0])
__pyx_r = __pyx_f_11cbytesparse_1c_Block_ReverseFind__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, (__pyx_v_buffer[0])); goto __pyx_L0;
00886:
+00887: elif size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+00888: size2 = that.endex - that.start
__pyx_v_size2 = (__pyx_v_that->endex - __pyx_v_that->start);
00889:
+00890: if start > size2:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00891: start = size2 # trim to end
__pyx_v_start = __pyx_v_size2;
+00892: if endex > size2:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00893: endex = size2 # trim to end
__pyx_v_endex = __pyx_v_size2;
+00894: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+00895: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00896:
+00897: if size <= size2 and size <= endex - start:
__pyx_t_2 = ((__pyx_v_size <= __pyx_v_size2) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L8_bool_binop_done; } __pyx_t_2 = ((__pyx_v_size <= (__pyx_v_endex - __pyx_v_start)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L8_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+00898: size2 = endex - size + 1
__pyx_v_size2 = ((__pyx_v_endex - __pyx_v_size) + 1);
00899:
+00900: if start > size2:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00901: start = size2 # trim to end
__pyx_v_start = __pyx_v_size2;
+00902: if endex > size2:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00903: endex = size2 # trim to end
__pyx_v_endex = __pyx_v_size2;
00904:
+00905: end = &that.data[that.start + start]
__pyx_v_end = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_start)]));
+00906: ptr = &that.data[that.start + endex]
__pyx_v_ptr = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_endex)]));
00907:
+00908: while ptr != end:
while (1) { __pyx_t_1 = ((__pyx_v_ptr != __pyx_v_end) != 0); if (!__pyx_t_1) break;
+00909: ptr -= 1
__pyx_v_ptr = (__pyx_v_ptr - 1);
+00910: if ptr[0] == buffer[0]: # faster pruning
__pyx_t_1 = (((__pyx_v_ptr[0]) == (__pyx_v_buffer[0])) != 0); if (__pyx_t_1) { /* … */ } }
+00911: if not memcmp(ptr, buffer, size):
__pyx_t_1 = ((!(memcmp(__pyx_v_ptr, __pyx_v_buffer, __pyx_v_size) != 0)) != 0); if (__pyx_t_1) { /* … */ }
+00912: return <ssize_t>(<ptrdiff_t>ptr - <ptrdiff_t>&that.data[that.start])
__pyx_r = ((Py_ssize_t)(((ptrdiff_t)__pyx_v_ptr) - ((ptrdiff_t)(&(__pyx_v_that->data[__pyx_v_that->start]))))); goto __pyx_L0;
+00913: return -1
__pyx_r = -1L; goto __pyx_L0;
00914:
00915:
+00916: cdef ssize_t Block_ReverseFind(const Block_* that, ssize_t start, ssize_t endex,
static Py_ssize_t __pyx_f_11cbytesparse_1c_Block_ReverseFind(Block_ const *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Py_ssize_t __pyx_v_ssize; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00917: size_t size, const byte_t* buffer) nogil:
00918: cdef:
+00919: ssize_t ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
00920:
+00921: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+00922: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+00923: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+00924: start = 0 # trim to start
__pyx_v_start = 0;
00925:
+00926: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+00927: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+00928: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+00929: endex = 0 # trim to start
__pyx_v_endex = 0;
00930:
+00931: return Block_ReverseFind_(that, <size_t>start, <size_t>endex, size, buffer)
__pyx_r = __pyx_f_11cbytesparse_1c_Block_ReverseFind_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), __pyx_v_size, __pyx_v_buffer); goto __pyx_L0;
00932:
00933:
+00934: cdef size_t Block_Count__(const Block_* that, size_t start, size_t endex, byte_t value) nogil:
static size_t __pyx_f_11cbytesparse_1c_Block_Count__(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, byte_t __pyx_v_value) { size_t __pyx_v_count; size_t __pyx_v_size; byte_t const *__pyx_v_ptr; byte_t const *__pyx_v_end; size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00935: cdef:
+00936: size_t count = 0
__pyx_v_count = 0;
+00937: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
00938: const byte_t* ptr
00939: const byte_t* end
00940:
+00941: if start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00942: start = size # trim to end
__pyx_v_start = __pyx_v_size;
+00943: if endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+00944: endex = size # trim to end
__pyx_v_endex = __pyx_v_size;
+00945: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+00946: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00947:
+00948: ptr = &that.data[that.start + start]
__pyx_v_ptr = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_start)]));
+00949: end = &that.data[that.start + endex]
__pyx_v_end = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_endex)]));
00950:
+00951: while ptr != end:
while (1) { __pyx_t_1 = ((__pyx_v_ptr != __pyx_v_end) != 0); if (!__pyx_t_1) break;
+00952: if ptr[0] == value:
__pyx_t_1 = (((__pyx_v_ptr[0]) == __pyx_v_value) != 0); if (__pyx_t_1) { /* … */ }
+00953: count += 1
__pyx_v_count = (__pyx_v_count + 1);
+00954: ptr += 1
__pyx_v_ptr = (__pyx_v_ptr + 1); }
+00955: return count
__pyx_r = __pyx_v_count; goto __pyx_L0;
00956:
00957:
+00958: cdef size_t Block_Count_(const Block_* that, size_t start, size_t endex,
static size_t __pyx_f_11cbytesparse_1c_Block_Count_(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { size_t __pyx_v_count; size_t __pyx_v_size2; byte_t const *__pyx_v_ptr; byte_t const *__pyx_v_end; size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
00959: size_t size, const byte_t* buffer) nogil:
00960: cdef:
+00961: size_t count = 0
__pyx_v_count = 0;
00962: size_t size2
00963: const byte_t* ptr
00964: const byte_t* end
00965:
+00966: if size == 1: # faster code for single byte
__pyx_t_1 = ((__pyx_v_size == 1) != 0); if (__pyx_t_1) { /* … */ }
+00967: return Block_Count__(that, start, endex, buffer[0])
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Count__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, (__pyx_v_buffer[0])); goto __pyx_L0;
00968:
+00969: elif size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+00970: size2 = that.endex - that.start
__pyx_v_size2 = (__pyx_v_that->endex - __pyx_v_that->start);
00971:
+00972: if start > size2:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00973: start = size2 # trim to end
__pyx_v_start = __pyx_v_size2;
+00974: if endex > size2:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00975: endex = size2 # trim to end
__pyx_v_endex = __pyx_v_size2;
+00976: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+00977: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
00978:
+00979: if size <= size2 and size <= endex - start:
__pyx_t_2 = ((__pyx_v_size <= __pyx_v_size2) != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L8_bool_binop_done; } __pyx_t_2 = ((__pyx_v_size <= (__pyx_v_endex - __pyx_v_start)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L8_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+00980: size2 = endex - size + 1
__pyx_v_size2 = ((__pyx_v_endex - __pyx_v_size) + 1);
00981:
+00982: if start > size2:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00983: start = size2 # trim to end
__pyx_v_start = __pyx_v_size2;
+00984: if endex > size2:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+00985: endex = size2 # trim to end
__pyx_v_endex = __pyx_v_size2;
00986:
+00987: ptr = &that.data[that.start + start]
__pyx_v_ptr = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_start)]));
+00988: end = &that.data[that.start + endex]
__pyx_v_end = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_endex)]));
00989:
+00990: while ptr < end:
while (1) { __pyx_t_1 = ((__pyx_v_ptr < __pyx_v_end) != 0); if (!__pyx_t_1) break;
+00991: if ptr[0] == buffer[0]: # faster pruning
__pyx_t_1 = (((__pyx_v_ptr[0]) == (__pyx_v_buffer[0])) != 0); if (__pyx_t_1) { /* … */ }
+00992: if not memcmp(ptr, buffer, size):
__pyx_t_1 = ((!(memcmp(__pyx_v_ptr, __pyx_v_buffer, __pyx_v_size) != 0)) != 0); if (__pyx_t_1) { /* … */ }
+00993: ptr += size - 1
__pyx_v_ptr = (__pyx_v_ptr + (__pyx_v_size - 1));
+00994: count += 1
__pyx_v_count = (__pyx_v_count + 1);
+00995: ptr += 1
__pyx_v_ptr = (__pyx_v_ptr + 1); }
+00996: return count
__pyx_r = __pyx_v_count; goto __pyx_L0;
00997:
00998:
+00999: cdef size_t Block_Count(const Block_* that, ssize_t start, ssize_t endex,
static size_t __pyx_f_11cbytesparse_1c_Block_Count(Block_ const *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Py_ssize_t __pyx_v_ssize; size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
01000: size_t size, const byte_t* buffer) nogil:
01001: cdef:
+01002: ssize_t ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01003:
+01004: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01005: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+01006: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01007: start = 0 # trim to start
__pyx_v_start = 0;
01008:
+01009: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01010: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+01011: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01012: endex = 0 # trim to start
__pyx_v_endex = 0;
01013:
+01014: return Block_Count_(that, <size_t>start, <size_t>endex, size, buffer)
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Count_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), __pyx_v_size, __pyx_v_buffer); goto __pyx_L0;
01015:
01016:
+01017: cdef Block_* Block_Reserve_(Block_* that, size_t offset, size_t size, bint zero) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Reserve_(Block_ *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size, int __pyx_v_zero) { size_t __pyx_v_actual; size_t __pyx_v_used; size_t __pyx_v_allocated; Block_ *__pyx_v_ptr; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Reserve_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Block_Reserve_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01018: cdef:
01019: size_t actual
01020: size_t used
01021: size_t margin
01022: size_t allocated
01023: Block_* ptr
01024:
+01025: Block_CheckMutable(that)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_CheckMutable(__pyx_v_that); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1025, __pyx_L1_error)
01026:
+01027: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+01028: if ((size > SIZE_HMAX or
__pyx_t_3 = ((__pyx_v_size > SIZE_HMAX) != 0); if (!__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L5_bool_binop_done; } /* … */ if (unlikely(__pyx_t_2)) { /* … */ }
+01029: CannotAddSizeU(that.endex, size) or
__pyx_t_3 = (__pyx_f_11cbytesparse_1c_CannotAddSizeU(__pyx_v_that->endex, __pyx_v_size) != 0); if (!__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L5_bool_binop_done; }
+01030: that.endex + size > SIZE_HMAX)):
__pyx_t_3 = (((__pyx_v_that->endex + __pyx_v_size) > SIZE_HMAX) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L5_bool_binop_done:;
+01031: raise OverflowError('size overflow')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 1031, __pyx_L1_error)
01032:
+01033: used = that.endex - that.start
__pyx_v_used = (__pyx_v_that->endex - __pyx_v_that->start);
+01034: if offset > used:
__pyx_t_2 = ((__pyx_v_offset > __pyx_v_used) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01035: raise IndexError('index out of range')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 1035, __pyx_L1_error) /* … */ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_index_out_of_range); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 1035, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6);
01036:
01037: # Prefer the side where there is less data to shift, which also favors the extremes
+01038: if offset >= (used >> 1):
__pyx_t_2 = ((__pyx_v_offset >= (__pyx_v_used >> 1)) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L9; }
+01039: if size > that.allocated - that.endex:
__pyx_t_2 = ((__pyx_v_size > (__pyx_v_that->allocated - __pyx_v_that->endex)) != 0); if (__pyx_t_2) { /* … */ }
01040: # Calculate the upsized allocation
+01041: allocated = Upsize(that.allocated, that.allocated + size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Upsize(__pyx_v_that->allocated, (__pyx_v_that->allocated + __pyx_v_size));
+01042: if allocated > SIZE_HMAX:
__pyx_t_2 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01043: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 1043, __pyx_L1_error)
01044:
01045: # Reallocate, including the header
+01046: ptr = <Block_*>PyMem_Realloc(that, Block_HEADING + (allocated * sizeof(byte_t)))
__pyx_v_ptr = ((Block_ *)PyMem_Realloc(__pyx_v_that, (Block_HEADING + (__pyx_v_allocated * (sizeof(byte_t))))));
+01047: if ptr == NULL:
__pyx_t_2 = ((__pyx_v_ptr == NULL) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01048: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 1048, __pyx_L1_error)
01049:
01050: # Reassign to that
+01051: that = ptr
__pyx_v_that = __pyx_v_ptr;
+01052: that.allocated = allocated # update
__pyx_v_that->allocated = __pyx_v_allocated;
01053:
01054: # Shift elements to make room for reservation at the requested offset
+01055: CheckAddSizeU(offset, that.start)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_offset, __pyx_v_that->start); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1055, __pyx_L1_error)
+01056: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+01057: used = that.endex - offset
__pyx_v_used = (__pyx_v_that->endex - __pyx_v_offset);
+01058: if used:
__pyx_t_2 = (__pyx_v_used != 0); if (__pyx_t_2) { /* … */ }
+01059: memmove(&that.data[offset + size],
(void)(memmove((&(__pyx_v_that->data[(__pyx_v_offset + __pyx_v_size)])), (&(__pyx_v_that->data[__pyx_v_offset])), (__pyx_v_used * (sizeof(byte_t)))));
01060: &that.data[offset],
01061: used * sizeof(byte_t))
+01062: if zero:
__pyx_t_2 = (__pyx_v_zero != 0); if (__pyx_t_2) { /* … */ }
+01063: memset(&that.data[offset], 0, size * sizeof(byte_t)) # pad with zeros
(void)(memset((&(__pyx_v_that->data[__pyx_v_offset])), 0, (__pyx_v_size * (sizeof(byte_t)))));
+01064: that.endex += size
__pyx_v_that->endex = (__pyx_v_that->endex + __pyx_v_size);
01065:
01066: else:
+01067: if size <= that.start:
/*else*/ { __pyx_t_2 = ((__pyx_v_size <= __pyx_v_that->start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L15; }
01068: # Shift elements to make room for reservation at the requested offset
+01069: that.start -= size
__pyx_v_that->start = (__pyx_v_that->start - __pyx_v_size);
+01070: if offset:
__pyx_t_2 = (__pyx_v_offset != 0); if (__pyx_t_2) { /* … */ }
+01071: memmove(&that.data[that.start],
(void)(memmove((&(__pyx_v_that->data[__pyx_v_that->start])), (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_size)])), (__pyx_v_offset * (sizeof(byte_t)))));
01072: &that.data[that.start + size],
01073: offset * sizeof(byte_t))
+01074: if zero:
__pyx_t_2 = (__pyx_v_zero != 0); if (__pyx_t_2) { /* … */ }
+01075: memset(&that.data[that.start + offset], 0, size * sizeof(byte_t)) # pad with zeros
(void)(memset((&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_offset)])), 0, (__pyx_v_size * (sizeof(byte_t)))));
01076:
01077: else:
01078: # Calculate the upsized allocation
+01079: CheckAddSizeU(that.allocated, size)
/*else*/ {
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->allocated, __pyx_v_size); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1079, __pyx_L1_error)
+01080: allocated = Upsize(that.allocated, that.allocated + size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Upsize(__pyx_v_that->allocated, (__pyx_v_that->allocated + __pyx_v_size));
+01081: if allocated > SIZE_HMAX:
__pyx_t_2 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01082: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 1082, __pyx_L1_error)
01083:
01084: # Allocate a new chunk, including the header
+01085: actual = Block_HEADING + (allocated * sizeof(byte_t))
__pyx_v_actual = (Block_HEADING + (__pyx_v_allocated * (sizeof(byte_t))));
+01086: if zero:
__pyx_t_2 = (__pyx_v_zero != 0); if (__pyx_t_2) { /* … */ goto __pyx_L19; }
+01087: ptr = <Block_*>PyMem_Calloc(actual, 1)
__pyx_v_ptr = ((Block_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(__pyx_v_actual, 1));
01088: else:
+01089: ptr = <Block_*>PyMem_Malloc(actual)
/*else*/ {
__pyx_v_ptr = ((Block_ *)PyMem_Malloc(__pyx_v_actual));
}
__pyx_L19:;
+01090: if ptr == NULL:
__pyx_t_2 = ((__pyx_v_ptr == NULL) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01091: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 1091, __pyx_L1_error)
01092:
01093: # Prepare the new chunk aligning towards the end
+01094: ptr.address = that.address
__pyx_t_5 = __pyx_v_that->address; __pyx_v_ptr->address = __pyx_t_5;
+01095: ptr.references = that.references # transfer ownership
__pyx_t_6 = __pyx_v_that->references; __pyx_v_ptr->references = __pyx_t_6;
+01096: ptr.allocated = allocated
__pyx_v_ptr->allocated = __pyx_v_allocated;
+01097: ptr.endex = ptr.allocated - MARGIN # leave some room
__pyx_v_ptr->endex = (__pyx_v_ptr->allocated - MARGIN);
+01098: ptr.start = ptr.endex - used - size
__pyx_v_ptr->start = ((__pyx_v_ptr->endex - __pyx_v_used) - __pyx_v_size);
01099:
01100: # Shift/copy elements to make room for reservation at the requested offset
+01101: if offset:
__pyx_t_2 = (__pyx_v_offset != 0); if (__pyx_t_2) { /* … */ }
+01102: used -= offset # prepare for later
__pyx_v_used = (__pyx_v_used - __pyx_v_offset);
+01103: memcpy(&ptr.data[ptr.start],
(void)(memcpy((&(__pyx_v_ptr->data[__pyx_v_ptr->start])), (&(__pyx_v_that->data[__pyx_v_that->start])), (__pyx_v_offset * (sizeof(byte_t)))));
01104: &that.data[that.start],
01105: offset * sizeof(byte_t))
+01106: if used:
__pyx_t_2 = (__pyx_v_used != 0); if (__pyx_t_2) { /* … */ }
+01107: memcpy(&ptr.data[ptr.start + offset + size],
(void)(memcpy((&(__pyx_v_ptr->data[((__pyx_v_ptr->start + __pyx_v_offset) + __pyx_v_size)])), (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_offset)])), (__pyx_v_used * (sizeof(byte_t)))));
01108: &that.data[that.start + offset],
01109: used * sizeof(byte_t))
01110:
01111: # Reassign to that
+01112: PyMem_Free(that)
PyMem_Free(__pyx_v_that);
+01113: that = ptr
__pyx_v_that = __pyx_v_ptr; } __pyx_L15:; } __pyx_L9:;
01114:
+01115: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01116:
01117:
+01118: cdef Block_* Block_Delete_(Block_* that, size_t offset, size_t size) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Delete_(Block_ *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size) { size_t __pyx_v_allocated; Block_ *__pyx_v_ptr; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Delete_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Block_Delete_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01119: cdef:
01120: size_t allocated
01121: Block_* ptr
01122:
+01123: Block_CheckMutable(that)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_CheckMutable(__pyx_v_that); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1123, __pyx_L1_error)
01124:
+01125: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+01126: if ((size > SIZE_HMAX or
__pyx_t_3 = ((__pyx_v_size > SIZE_HMAX) != 0); if (!__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L5_bool_binop_done; } /* … */ if (unlikely(__pyx_t_2)) { /* … */ }
+01127: CannotAddSizeU(offset, size) or
__pyx_t_3 = (__pyx_f_11cbytesparse_1c_CannotAddSizeU(__pyx_v_offset, __pyx_v_size) != 0); if (!__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L5_bool_binop_done; }
+01128: offset + size > SIZE_HMAX or
__pyx_t_3 = (((__pyx_v_offset + __pyx_v_size) > SIZE_HMAX) != 0); if (!__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L5_bool_binop_done; }
+01129: CannotAddSizeU(offset, that.start) or
__pyx_t_3 = (__pyx_f_11cbytesparse_1c_CannotAddSizeU(__pyx_v_offset, __pyx_v_that->start) != 0); if (!__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L5_bool_binop_done; }
+01130: that.start > SIZE_HMAX)):
__pyx_t_3 = ((__pyx_v_that->start > SIZE_HMAX) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L5_bool_binop_done:;
+01131: raise OverflowError('size overflow')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 1131, __pyx_L1_error)
01132:
+01133: if that.endex < that.start + offset + size:
__pyx_t_2 = ((__pyx_v_that->endex < ((__pyx_v_that->start + __pyx_v_offset) + __pyx_v_size)) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01134: raise IndexError('index out of range')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 1134, __pyx_L1_error)
01135:
01136: # Calculate the downsized allocation
+01137: allocated = Downsize(that.allocated, that.allocated - size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Downsize(__pyx_v_that->allocated, (__pyx_v_that->allocated - __pyx_v_size));
+01138: if allocated > SIZE_HMAX:
__pyx_t_2 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01139: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 1139, __pyx_L1_error)
01140:
+01141: if offset == 0:
__pyx_t_2 = ((__pyx_v_offset == 0) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L12; }
+01142: if allocated == that.allocated:
__pyx_t_2 = ((__pyx_v_allocated == __pyx_v_that->allocated) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L13; }
01143: # Just skip initial if not reallocated and no offset
+01144: that.start += size
__pyx_v_that->start = (__pyx_v_that->start + __pyx_v_size);
01145: else:
01146: # Shift elements to make for the deleted gap at the beginning
+01147: offset += that.start
/*else*/ { __pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+01148: memmove(&that.data[MARGIN], # realign to initial MARGIN
(void)(memmove((&(__pyx_v_that->data[MARGIN])), (&(__pyx_v_that->data[(__pyx_v_offset + __pyx_v_size)])), ((__pyx_v_that->endex - (__pyx_v_offset + __pyx_v_size)) * (sizeof(byte_t)))));
01149: &that.data[offset + size],
01150: (that.endex - (offset + size)) * sizeof(byte_t))
+01151: size = that.endex - that.start - size
__pyx_v_size = ((__pyx_v_that->endex - __pyx_v_that->start) - __pyx_v_size);
+01152: that.start = MARGIN
__pyx_v_that->start = MARGIN;
+01153: that.endex = MARGIN + size
__pyx_v_that->endex = (MARGIN + __pyx_v_size); } __pyx_L13:;
01154: else:
01155: # Shift elements to make for the deleted gap at the requested offset
+01156: offset += that.start
/*else*/ { __pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+01157: memmove(&that.data[offset],
(void)(memmove((&(__pyx_v_that->data[__pyx_v_offset])), (&(__pyx_v_that->data[(__pyx_v_offset + __pyx_v_size)])), ((__pyx_v_that->endex - (__pyx_v_offset + __pyx_v_size)) * (sizeof(byte_t)))));
01158: &that.data[offset + size],
01159: (that.endex - (offset + size)) * sizeof(byte_t))
+01160: that.endex -= size
__pyx_v_that->endex = (__pyx_v_that->endex - __pyx_v_size); } __pyx_L12:;
01161:
+01162: if allocated != that.allocated:
__pyx_t_2 = ((__pyx_v_allocated != __pyx_v_that->allocated) != 0); if (__pyx_t_2) { /* … */ }
01163: # Reallocate, including the header
+01164: ptr = <Block_*>PyMem_Realloc(that, Block_HEADING + (allocated * sizeof(byte_t)))
__pyx_v_ptr = ((Block_ *)PyMem_Realloc(__pyx_v_that, (Block_HEADING + (__pyx_v_allocated * (sizeof(byte_t))))));
+01165: if ptr == NULL:
__pyx_t_2 = ((__pyx_v_ptr == NULL) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+01166: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 1166, __pyx_L1_error)
01167:
01168: # Reassign to that
+01169: that = ptr
__pyx_v_that = __pyx_v_ptr;
+01170: that.allocated = allocated
__pyx_v_that->allocated = __pyx_v_allocated;
01171:
+01172: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01173:
01174:
+01175: cdef Block_* Block_Clear(Block_* that) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Clear(Block_ *__pyx_v_that) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Clear", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_Clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01176: return Block_Delete_(that, 0, that.endex - that.start)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Delete_(__pyx_v_that, 0, (__pyx_v_that->endex - __pyx_v_that->start)); if (unlikely(__pyx_t_1 == ((Block_ *)NULL))) __PYX_ERR(0, 1176, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
01177:
01178:
+01179: cdef byte_t* Block_At_(Block_* that, size_t offset) nogil:
static byte_t *__pyx_f_11cbytesparse_1c_Block_At_(Block_ *__pyx_v_that, size_t __pyx_v_offset) { byte_t *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+01180: return &that.data[that.start + offset]
__pyx_r = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_offset)])); goto __pyx_L0;
01181:
01182:
+01183: cdef const byte_t* Block_At__(const Block_* that, size_t offset) nogil:
static byte_t const *__pyx_f_11cbytesparse_1c_Block_At__(Block_ const *__pyx_v_that, size_t __pyx_v_offset) { byte_t const *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+01184: return &that.data[that.start + offset]
__pyx_r = (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_offset)])); goto __pyx_L0;
01185:
01186:
+01187: cdef byte_t Block_Get__(const Block_* that, size_t offset) nogil:
static byte_t __pyx_f_11cbytesparse_1c_Block_Get__(Block_ const *__pyx_v_that, size_t __pyx_v_offset) { byte_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+01188: return that.data[that.start + offset]
__pyx_r = (__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_offset)]); goto __pyx_L0;
01189:
01190:
+01191: cdef int Block_Get_(const Block_* that, size_t offset) except -1:
static int __pyx_f_11cbytesparse_1c_Block_Get_(Block_ const *__pyx_v_that, size_t __pyx_v_offset) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Get_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Block_Get_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01192: CheckAddSizeU(that.start, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1192, __pyx_L1_error)
+01193: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
01194:
+01195: if offset < that.endex:
__pyx_t_2 = ((__pyx_v_offset < __pyx_v_that->endex) != 0); if (likely(__pyx_t_2)) { /* … */ }
+01196: return <int><unsigned>that.data[offset]
__pyx_r = ((int)((unsigned int)(__pyx_v_that->data[__pyx_v_offset]))); goto __pyx_L0;
01197: else:
+01198: raise IndexError('index out of range')
/*else*/ { __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 1198, __pyx_L1_error) }
01199:
01200:
+01201: cdef int Block_Get(const Block_* that, ssize_t offset) except -1:
static int __pyx_f_11cbytesparse_1c_Block_Get(Block_ const *__pyx_v_that, Py_ssize_t __pyx_v_offset) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Get", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_Get", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01202: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
+01203: offset += <ssize_t>(that.endex - that.start) # anchor to end
__pyx_v_offset = (__pyx_v_offset + ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start)));
+01204: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01205: raise IndexError('index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1205, __pyx_L1_error)
01206:
+01207: return Block_Get_(that, <size_t>offset)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Get_(__pyx_v_that, ((size_t)__pyx_v_offset)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1207, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
01208:
01209:
+01210: cdef byte_t Block_Set__(Block_* that, size_t offset, byte_t value) nogil:
static byte_t __pyx_f_11cbytesparse_1c_Block_Set__(Block_ *__pyx_v_that, size_t __pyx_v_offset, byte_t __pyx_v_value) { byte_t __pyx_v_backup; byte_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
01211: cdef:
01212: byte_t backup
01213:
+01214: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+01215: backup = that.data[offset]
__pyx_v_backup = (__pyx_v_that->data[__pyx_v_offset]);
+01216: that.data[offset] = value
(__pyx_v_that->data[__pyx_v_offset]) = __pyx_v_value;
+01217: return backup
__pyx_r = __pyx_v_backup; goto __pyx_L0;
01218:
01219:
+01220: cdef int Block_Set_(Block_* that, size_t offset, byte_t value) except -1:
static int __pyx_f_11cbytesparse_1c_Block_Set_(Block_ *__pyx_v_that, size_t __pyx_v_offset, byte_t __pyx_v_value) { int __pyx_v_backup; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Set_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Block_Set_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01221: cdef:
01222: int backup
01223:
01224: # Block_CheckMutable(that)
+01225: CheckAddSizeU(that.start, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1225, __pyx_L1_error)
+01226: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
01227:
+01228: if offset < that.endex:
__pyx_t_2 = ((__pyx_v_offset < __pyx_v_that->endex) != 0); if (likely(__pyx_t_2)) { /* … */ }
+01229: backup = <int><unsigned>that.data[offset]
__pyx_v_backup = ((int)((unsigned int)(__pyx_v_that->data[__pyx_v_offset])));
+01230: that.data[offset] = value
(__pyx_v_that->data[__pyx_v_offset]) = __pyx_v_value;
+01231: return backup
__pyx_r = __pyx_v_backup; goto __pyx_L0;
01232: else:
+01233: raise IndexError('index out of range')
/*else*/ { __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 1233, __pyx_L1_error) }
01234:
01235:
+01236: cdef int Block_Set(Block_* that, ssize_t offset, byte_t value) except -1:
static int __pyx_f_11cbytesparse_1c_Block_Set(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_offset, byte_t __pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Set", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_Set", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01237: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
+01238: offset += <ssize_t>(that.endex - that.start) # anchor to end
__pyx_v_offset = (__pyx_v_offset + ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start)));
+01239: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01240: raise IndexError('index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1240, __pyx_L1_error)
01241:
+01242: return Block_Set_(that, <size_t>offset, value)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Set_(__pyx_v_that, ((size_t)__pyx_v_offset), __pyx_v_value); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1242, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
01243:
01244:
+01245: cdef Block_* Block_Pop__(Block_* that, byte_t* value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Pop__(Block_ *__pyx_v_that, byte_t *__pyx_v_value) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Pop__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Block_Pop__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01246: # Block_CheckMutable(that)
01247:
+01248: if that.start < that.endex:
__pyx_t_1 = ((__pyx_v_that->start < __pyx_v_that->endex) != 0); if (likely(__pyx_t_1)) { /* … */ }
+01249: if value:
__pyx_t_1 = (__pyx_v_value != 0); if (__pyx_t_1) { /* … */ }
+01250: value[0] = that.data[that.endex - 1] # backup
(__pyx_v_value[0]) = (__pyx_v_that->data[(__pyx_v_that->endex - 1)]);
01251:
+01252: return Block_Delete_(that, that.endex - that.start - 1, 1)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Delete_(__pyx_v_that, ((__pyx_v_that->endex - __pyx_v_that->start) - 1), 1); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1252, __pyx_L1_error)
__pyx_r = __pyx_t_2;
goto __pyx_L0;
01253: else:
+01254: raise IndexError('pop index out of range')
/*else*/ { __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 1254, __pyx_L1_error) } /* … */ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_pop_index_out_of_range); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7);
01255:
01256:
+01257: cdef Block_* Block_Pop_(Block_* that, size_t offset, byte_t* value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Pop_(Block_ *__pyx_v_that, size_t __pyx_v_offset, byte_t *__pyx_v_value) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Pop_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Block_Pop_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01258: # Block_CheckMutable(that)
+01259: CheckAddSizeU(that.start, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1259, __pyx_L1_error)
01260:
+01261: if that.start + offset < that.endex:
__pyx_t_2 = (((__pyx_v_that->start + __pyx_v_offset) < __pyx_v_that->endex) != 0); if (likely(__pyx_t_2)) { /* … */ }
+01262: if value:
__pyx_t_2 = (__pyx_v_value != 0); if (__pyx_t_2) { /* … */ }
+01263: value[0] = that.data[that.start + offset] # backup
(__pyx_v_value[0]) = (__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_offset)]);
01264:
+01265: return Block_Delete_(that, offset, 1)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Delete_(__pyx_v_that, __pyx_v_offset, 1); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1265, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
01266: else:
+01267: raise IndexError('pop index out of range')
/*else*/ { __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 1267, __pyx_L1_error) }
01268:
01269:
+01270: cdef Block_* Block_Pop(Block_* that, ssize_t offset, byte_t* value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Pop(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_offset, byte_t *__pyx_v_value) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Pop", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_Pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01271: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
+01272: offset += <ssize_t>(that.endex - that.start) # anchor to end
__pyx_v_offset = (__pyx_v_offset + ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start)));
+01273: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01274: raise IndexError('pop index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1274, __pyx_L1_error)
01275:
+01276: return Block_Pop_(that, <size_t>offset, value)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Pop_(__pyx_v_that, ((size_t)__pyx_v_offset), __pyx_v_value); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1276, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
01277:
01278:
+01279: cdef Block_* Block_PopLeft(Block_* that, byte_t* value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_PopLeft(Block_ *__pyx_v_that, byte_t *__pyx_v_value) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_PopLeft", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_PopLeft", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01280: return Block_Pop_(that, 0, value)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Pop_(__pyx_v_that, 0, __pyx_v_value); if (unlikely(__pyx_t_1 == ((Block_ *)NULL))) __PYX_ERR(0, 1280, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
01281:
01282:
+01283: cdef Block_* Block_Insert_(Block_* that, size_t offset, byte_t value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Insert_(Block_ *__pyx_v_that, size_t __pyx_v_offset, byte_t __pyx_v_value) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Insert_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_Insert_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01284: # Insert the value at the requested offset
+01285: that = Block_Reserve_(that, offset, 1, False)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, __pyx_v_offset, 1, 0); if (unlikely(__pyx_t_1 == ((Block_ *)NULL))) __PYX_ERR(0, 1285, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+01286: that.data[that.start + offset] = value
(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_offset)]) = __pyx_v_value;
+01287: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01288:
01289:
+01290: cdef Block_* Block_Insert(Block_* that, ssize_t offset, byte_t value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Insert(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_offset, byte_t __pyx_v_value) { Py_ssize_t __pyx_v_size; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Insert", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_Insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01291: cdef:
+01292: ssize_t size = <ssize_t>(that.endex - that.start)
__pyx_v_size = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01293:
+01294: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+01295: offset += size # anchor to end
__pyx_v_offset = (__pyx_v_offset + __pyx_v_size);
+01296: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
01297: # raise IndexError('index out of range')
+01298: offset = 0 # as per bytearray.insert
__pyx_v_offset = 0;
01299:
+01300: elif offset > size:
__pyx_t_1 = ((__pyx_v_offset > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L3:;
01301: # raise IndexError('index out of range')
+01302: offset = size # as per bytearray.insert
__pyx_v_offset = __pyx_v_size;
01303:
+01304: return Block_Insert_(that, <size_t>offset, value)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Insert_(__pyx_v_that, ((size_t)__pyx_v_offset), __pyx_v_value); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1304, __pyx_L1_error)
__pyx_r = __pyx_t_2;
goto __pyx_L0;
01305:
01306:
+01307: cdef Block_* Block_Append(Block_* that, byte_t value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Append(Block_ *__pyx_v_that, byte_t __pyx_v_value) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Append", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_Append", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01308: # Insert the value after the end
+01309: that = Block_Reserve_(that, that.endex - that.start, 1, False)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, (__pyx_v_that->endex - __pyx_v_that->start), 1, 0); if (unlikely(__pyx_t_1 == ((Block_ *)NULL))) __PYX_ERR(0, 1309, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+01310: that.data[that.endex - 1] = value
(__pyx_v_that->data[(__pyx_v_that->endex - 1)]) = __pyx_v_value;
+01311: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01312:
01313:
+01314: cdef Block_* Block_AppendLeft(Block_* that, byte_t value) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_AppendLeft(Block_ *__pyx_v_that, byte_t __pyx_v_value) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_AppendLeft", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_AppendLeft", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01315: # Insert the value after the end
+01316: that = Block_Reserve_(that, 0, 1, False)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, 0, 1, 0); if (unlikely(__pyx_t_1 == ((Block_ *)NULL))) __PYX_ERR(0, 1316, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+01317: that.data[that.start] = value
(__pyx_v_that->data[__pyx_v_that->start]) = __pyx_v_value;
+01318: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01319:
01320:
+01321: cdef Block_* Block_Extend_(Block_* that, size_t size, const byte_t* buffer) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Extend_(Block_ *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Extend_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_Extend_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01322: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01323: that = Block_Reserve_(that, that.endex - that.start, size, False)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, (__pyx_v_that->endex - __pyx_v_that->start), __pyx_v_size, 0); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1323, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+01324: memmove(&that.data[that.endex - size], buffer, size * sizeof(byte_t))
(void)(memmove((&(__pyx_v_that->data[(__pyx_v_that->endex - __pyx_v_size)])), __pyx_v_buffer, (__pyx_v_size * (sizeof(byte_t)))));
+01325: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01326:
01327:
+01328: cdef Block_* Block_Extend(Block_* that, const Block_* more) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Extend(Block_ *__pyx_v_that, Block_ const *__pyx_v_more) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Extend", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_Extend", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01329: that = Block_Extend_(that, Block_Length(more), Block_At__(more, 0))
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Extend_(__pyx_v_that, __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_more), __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_more, 0)); if (unlikely(__pyx_t_1 == ((Block_ *)NULL))) __PYX_ERR(0, 1329, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+01330: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01331:
01332:
+01333: cdef Block_* Block_ExtendLeft_(Block_* that, size_t size, const byte_t* buffer) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_ExtendLeft_(Block_ *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_ExtendLeft_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_ExtendLeft_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01334: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01335: that = Block_Reserve_(that, 0, size, False)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, 0, __pyx_v_size, 0); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1335, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+01336: memmove(&that.data[that.start], buffer, size * sizeof(byte_t))
(void)(memmove((&(__pyx_v_that->data[__pyx_v_that->start])), __pyx_v_buffer, (__pyx_v_size * (sizeof(byte_t)))));
+01337: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01338:
01339:
+01340: cdef Block_* Block_ExtendLeft(Block_* that, const Block_* more) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_ExtendLeft(Block_ *__pyx_v_that, Block_ const *__pyx_v_more) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_ExtendLeft", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_ExtendLeft", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01341: that = Block_ExtendLeft_(that, Block_Length(more), Block_At__(more, 0))
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_ExtendLeft_(__pyx_v_that, __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_more), __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_more, 0)); if (unlikely(__pyx_t_1 == ((Block_ *)NULL))) __PYX_ERR(0, 1341, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+01342: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01343:
01344:
+01345: cdef void Block_RotateLeft__(Block_* that, size_t offset) nogil:
static void __pyx_f_11cbytesparse_1c_Block_RotateLeft__(Block_ *__pyx_v_that, size_t __pyx_v_offset) { size_t __pyx_v_size; byte_t *__pyx_v_data; byte_t __pyx_v_first; /* … */ /* function exit code */ }
01346: cdef:
+01347: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
+01348: byte_t* data = &that.data[that.start]
__pyx_v_data = (&(__pyx_v_that->data[__pyx_v_that->start]));
01349: byte_t first
01350:
+01351: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01352: if offset == 1:
__pyx_t_1 = ((__pyx_v_offset == 1) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+01353: first = data[0]
__pyx_v_first = (__pyx_v_data[0]);
+01354: size -= 1
__pyx_v_size = (__pyx_v_size - 1);
+01355: while size:
while (1) { __pyx_t_1 = (__pyx_v_size != 0); if (!__pyx_t_1) break;
+01356: data[0] = data[1]
(__pyx_v_data[0]) = (__pyx_v_data[1]);
+01357: data += 1
__pyx_v_data = (__pyx_v_data + 1);
+01358: size -= 1
__pyx_v_size = (__pyx_v_size - 1); }
+01359: data[0] = first
(__pyx_v_data[0]) = __pyx_v_first;
01360:
+01361: elif offset:
__pyx_t_1 = (__pyx_v_offset != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+01362: Reverse(data, 0, offset - 1)
__pyx_f_11cbytesparse_1c_Reverse(__pyx_v_data, 0, (__pyx_v_offset - 1));
+01363: Reverse(data, offset, size - 1)
__pyx_f_11cbytesparse_1c_Reverse(__pyx_v_data, __pyx_v_offset, (__pyx_v_size - 1));
+01364: Reverse(data, 0, size - 1)
__pyx_f_11cbytesparse_1c_Reverse(__pyx_v_data, 0, (__pyx_v_size - 1));
01365:
01366:
+01367: cdef void Block_RotateLeft_(Block_* that, size_t offset) nogil:
static void __pyx_f_11cbytesparse_1c_Block_RotateLeft_(Block_ *__pyx_v_that, size_t __pyx_v_offset) { size_t __pyx_v_size; /* … */ /* function exit code */ }
01368: cdef:
+01369: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01370:
+01371: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01372: if offset >= size:
__pyx_t_1 = ((__pyx_v_offset >= __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
01373: with cython.cdivision(True):
+01374: offset = offset % size # no "%=" to avoid zero check
__pyx_v_offset = (__pyx_v_offset % __pyx_v_size);
01375:
+01376: Block_RotateLeft__(that, offset)
__pyx_f_11cbytesparse_1c_Block_RotateLeft__(__pyx_v_that, __pyx_v_offset);
01377:
01378:
+01379: cdef void Block_RotateRight__(Block_* that, size_t offset) nogil:
static void __pyx_f_11cbytesparse_1c_Block_RotateRight__(Block_ *__pyx_v_that, size_t __pyx_v_offset) { size_t __pyx_v_size; byte_t *__pyx_v_data; byte_t __pyx_v_last; /* … */ /* function exit code */ }
01380: cdef:
+01381: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
+01382: byte_t* data = &that.data[that.start]
__pyx_v_data = (&(__pyx_v_that->data[__pyx_v_that->start]));
01383: byte_t last
01384:
+01385: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01386: if offset == 1:
__pyx_t_1 = ((__pyx_v_offset == 1) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+01387: size -= 1
__pyx_v_size = (__pyx_v_size - 1);
+01388: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01389: data += size
__pyx_v_data = (__pyx_v_data + __pyx_v_size);
+01390: last = data[0]
__pyx_v_last = (__pyx_v_data[0]);
+01391: while size:
while (1) { __pyx_t_1 = (__pyx_v_size != 0); if (!__pyx_t_1) break;
+01392: size -= 1
__pyx_v_size = (__pyx_v_size - 1);
+01393: data -= 1
__pyx_v_data = (__pyx_v_data - 1);
+01394: data[1] = data[0]
(__pyx_v_data[1]) = (__pyx_v_data[0]); }
+01395: data[0] = last
(__pyx_v_data[0]) = __pyx_v_last;
01396:
+01397: elif offset:
__pyx_t_1 = (__pyx_v_offset != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+01398: offset = size - offset
__pyx_v_offset = (__pyx_v_size - __pyx_v_offset);
+01399: Reverse(data, 0, offset - 1)
__pyx_f_11cbytesparse_1c_Reverse(__pyx_v_data, 0, (__pyx_v_offset - 1));
+01400: Reverse(data, offset, size - 1)
__pyx_f_11cbytesparse_1c_Reverse(__pyx_v_data, __pyx_v_offset, (__pyx_v_size - 1));
+01401: Reverse(data, 0, size - 1)
__pyx_f_11cbytesparse_1c_Reverse(__pyx_v_data, 0, (__pyx_v_size - 1));
01402:
01403:
+01404: cdef void Block_RotateRight_(Block_* that, size_t offset) nogil:
static void __pyx_f_11cbytesparse_1c_Block_RotateRight_(Block_ *__pyx_v_that, size_t __pyx_v_offset) { size_t __pyx_v_size; /* … */ /* function exit code */ }
01405: cdef:
+01406: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01407:
+01408: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01409: if offset >= size:
__pyx_t_1 = ((__pyx_v_offset >= __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
01410: with cython.cdivision(True):
+01411: offset = offset % size # no "%=" to avoid zero check
__pyx_v_offset = (__pyx_v_offset % __pyx_v_size);
01412:
+01413: Block_RotateRight__(that, offset)
__pyx_f_11cbytesparse_1c_Block_RotateRight__(__pyx_v_that, __pyx_v_offset);
01414:
01415:
+01416: cdef void Block_Rotate(Block_* that, ssize_t offset) nogil:
static void __pyx_f_11cbytesparse_1c_Block_Rotate(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_offset) { /* … */ /* function exit code */ }
+01417: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+01418: Block_RotateLeft_(that, <size_t>-offset)
__pyx_f_11cbytesparse_1c_Block_RotateLeft_(__pyx_v_that, ((size_t)(-__pyx_v_offset)));
01419: else:
+01420: Block_RotateRight_(that, <size_t>offset)
/*else*/ { __pyx_f_11cbytesparse_1c_Block_RotateRight_(__pyx_v_that, ((size_t)__pyx_v_offset)); } __pyx_L3:;
01421:
01422:
+01423: cdef Block_* Block_Repeat(Block_* that, size_t times) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Repeat(Block_ *__pyx_v_that, size_t __pyx_v_times) { size_t __pyx_v_size; byte_t *__pyx_v_src; byte_t *__pyx_v_dst; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Repeat", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Block_Repeat", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01424: cdef:
01425: size_t size
01426: byte_t* src
01427: byte_t* dst
01428:
+01429: if times == 1:
__pyx_t_1 = ((__pyx_v_times == 1) != 0); if (__pyx_t_1) { /* … */ }
+01430: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01431:
+01432: elif times < 1:
__pyx_t_1 = ((__pyx_v_times < 1) != 0); if (__pyx_t_1) { /* … */ }
+01433: return Block_Clear(that)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Clear(__pyx_v_that); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1433, __pyx_L1_error)
__pyx_r = __pyx_t_2;
goto __pyx_L0;
01434:
01435: else:
+01436: size = that.endex - that.start
/*else*/ { __pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01437: with cython.cdivision(True):
+01438: if size > SIZE_HMAX // times:
__pyx_t_1 = ((__pyx_v_size > (SIZE_HMAX / __pyx_v_times)) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01439: raise OverflowError()
__pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_builtin_OverflowError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 1439, __pyx_L1_error)
01440:
+01441: times -= 1
__pyx_v_times = (__pyx_v_times - 1);
+01442: that = Block_Reserve_(that, size, size * times, False)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, __pyx_v_size, (__pyx_v_size * __pyx_v_times), 0); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1442, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+01443: src = &that.data[that.start]
__pyx_v_src = (&(__pyx_v_that->data[__pyx_v_that->start]));
+01444: dst = src
__pyx_v_dst = __pyx_v_src;
01445:
+01446: while times:
while (1) { __pyx_t_1 = (__pyx_v_times != 0); if (!__pyx_t_1) break;
+01447: times -= 1
__pyx_v_times = (__pyx_v_times - 1);
+01448: dst += size
__pyx_v_dst = (__pyx_v_dst + __pyx_v_size);
+01449: memcpy(dst, src, size) # whole repetition
(void)(memcpy(__pyx_v_dst, __pyx_v_src, __pyx_v_size)); }
01450:
+01451: return that
__pyx_r = __pyx_v_that; goto __pyx_L0; }
01452:
01453:
+01454: cdef Block_* Block_RepeatToSize(Block_* that, size_t size) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_RepeatToSize(Block_ *__pyx_v_that, size_t __pyx_v_size) { size_t __pyx_v_size2; size_t __pyx_v_times; byte_t *__pyx_v_src; byte_t *__pyx_v_dst; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_RepeatToSize", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_RepeatToSize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01455: cdef:
01456: size_t size2
01457: size_t times
01458: byte_t* src
01459: byte_t* dst
01460:
+01461: size2 = that.endex - that.start
__pyx_v_size2 = (__pyx_v_that->endex - __pyx_v_that->start);
01462:
+01463: if size2 == 0:
__pyx_t_1 = ((__pyx_v_size2 == 0) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01464: raise RuntimeError('empty')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1464, __pyx_L1_error) /* … */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_u_empty); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8);
01465:
+01466: if size == size2:
__pyx_t_1 = ((__pyx_v_size == __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+01467: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01468:
+01469: elif size < size2:
__pyx_t_1 = ((__pyx_v_size < __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+01470: return Block_DelSlice_(that, size, size2)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_that, __pyx_v_size, __pyx_v_size2); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1470, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
01471:
01472: else: # size > size2
+01473: that = Block_Reserve_(that, size2, size - size2, False)
/*else*/ {
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, __pyx_v_size2, (__pyx_v_size - __pyx_v_size2), 0); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1473, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
01474:
+01475: if that.start + 1 == that.endex: # single byte
__pyx_t_1 = (((__pyx_v_that->start + 1) == __pyx_v_that->endex) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+01476: dst = &that.data[that.start]
__pyx_v_dst = (&(__pyx_v_that->data[__pyx_v_that->start]));
+01477: memset(dst, dst[0], size)
(void)(memset(__pyx_v_dst, (__pyx_v_dst[0]), __pyx_v_size));
01478:
01479: else: # multiple bytes
+01480: with cython.cdivision(True):
/*else*/ {
+01481: times = size // size2
__pyx_v_times = (__pyx_v_size / __pyx_v_size2);
01482:
01483: # Copy the final partial chunk
+01484: src = &that.data[that.start]
__pyx_v_src = (&(__pyx_v_that->data[__pyx_v_that->start]));
+01485: dst = &that.data[that.start + (size2 * times)]
__pyx_v_dst = (&(__pyx_v_that->data[(__pyx_v_that->start + (__pyx_v_size2 * __pyx_v_times))]));
+01486: memcpy(dst, src, size - (size2 * times))
(void)(memcpy(__pyx_v_dst, __pyx_v_src, (__pyx_v_size - (__pyx_v_size2 * __pyx_v_times))));
01487:
01488: # Copy the multiple times, skipping the first one
+01489: dst = src + size2
__pyx_v_dst = (__pyx_v_src + __pyx_v_size2);
+01490: times -= 1
__pyx_v_times = (__pyx_v_times - 1);
+01491: while times:
while (1) { __pyx_t_1 = (__pyx_v_times != 0); if (!__pyx_t_1) break;
+01492: memcpy(dst, src, size2)
(void)(memcpy(__pyx_v_dst, __pyx_v_src, __pyx_v_size2));
+01493: dst += size2
__pyx_v_dst = (__pyx_v_dst + __pyx_v_size2);
+01494: times -= 1
__pyx_v_times = (__pyx_v_times - 1); } } __pyx_L5:;
01495:
+01496: return that
__pyx_r = __pyx_v_that; goto __pyx_L0; }
01497:
01498:
+01499: cdef vint Block_Read_(const Block_* that, size_t offset, size_t size, byte_t* buffer) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Block_Read_(Block_ const *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size, byte_t *__pyx_v_buffer) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Read_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_Read_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01500: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01501: if size > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_size > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01502: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1502, __pyx_L1_error)
01503:
+01504: CheckAddSizeU(offset, that.start)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_offset, __pyx_v_that->start); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1504, __pyx_L1_error)
+01505: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
01506:
+01507: CheckAddSizeU(offset, size)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_offset, __pyx_v_size); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1507, __pyx_L1_error)
+01508: if that.endex < offset + size:
__pyx_t_1 = ((__pyx_v_that->endex < (__pyx_v_offset + __pyx_v_size)) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01509: raise IndexError('index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1509, __pyx_L1_error)
01510:
+01511: memmove(buffer, &that.data[offset], size * sizeof(byte_t))
(void)(memmove(__pyx_v_buffer, (&(__pyx_v_that->data[__pyx_v_offset])), (__pyx_v_size * (sizeof(byte_t)))));
01512:
01513:
+01514: cdef Block_* Block_Write_(Block_* that, size_t offset, size_t size, const byte_t* buffer) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_Write_(Block_ *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Write_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_Write_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01515: # Block_CheckMutable(that)
01516:
+01517: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+01518: CheckAddSizeU(that.start, offset)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1518, __pyx_L1_error)
+01519: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
01520:
+01521: CheckAddSizeU(offset, size)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_offset, __pyx_v_size); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1521, __pyx_L1_error)
+01522: if that.endex < offset + size:
__pyx_t_1 = ((__pyx_v_that->endex < (__pyx_v_offset + __pyx_v_size)) != 0); if (__pyx_t_1) { /* … */ }
+01523: that = Block_Reserve_(that, that.endex - that.start, (offset + size) - that.endex, False)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, (__pyx_v_that->endex - __pyx_v_that->start), ((__pyx_v_offset + __pyx_v_size) - __pyx_v_that->endex), 0); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1523, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
01524:
+01525: memmove(&that.data[offset], buffer, size * sizeof(byte_t))
(void)(memmove((&(__pyx_v_that->data[__pyx_v_offset])), __pyx_v_buffer, (__pyx_v_size * (sizeof(byte_t)))));
+01526: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01527:
01528:
+01529: cdef vint Block_ReadSlice_(const Block_* that, size_t start, size_t endex,
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Block_ReadSlice_(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, size_t *__pyx_v_size_, byte_t *__pyx_v_buffer) { size_t __pyx_v_size; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_ReadSlice_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_ReadSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01530: size_t* size_, byte_t* buffer) except -1:
01531: cdef:
+01532: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01533:
+01534: size_[0] = 0
(__pyx_v_size_[0]) = 0;
01535:
+01536: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01537: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1537, __pyx_L1_error)
+01538: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01539: start = size # trim source start
__pyx_v_start = __pyx_v_size;
01540:
+01541: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01542: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1542, __pyx_L1_error)
+01543: elif endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+01544: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
+01545: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+01546: endex = size # trim source end
__pyx_v_endex = __pyx_v_size;
01547:
+01548: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
+01549: Block_Read_(that, start, size, buffer)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Read_(__pyx_v_that, __pyx_v_start, __pyx_v_size, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1549, __pyx_L1_error)
+01550: size_[0] = size
(__pyx_v_size_[0]) = __pyx_v_size;
01551:
01552:
+01553: cdef vint Block_ReadSlice(const Block_* that, ssize_t start, ssize_t endex,
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Block_ReadSlice(Block_ const *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, size_t *__pyx_v_size_, byte_t *__pyx_v_buffer) { Py_ssize_t __pyx_v_ssize; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_ReadSlice", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_ReadSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01554: size_t* size_, byte_t* buffer) except -1:
01555: cdef:
+01556: ssize_t ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01557:
+01558: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01559: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+01560: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01561: start = 0 # trim source start
__pyx_v_start = 0;
01562:
+01563: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01564: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+01565: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01566: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
01567:
+01568: Block_ReadSlice_(that, <size_t>start, <size_t>endex, size_, buffer)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_ReadSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), __pyx_v_size_, __pyx_v_buffer); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1568, __pyx_L1_error)
01569:
01570:
+01571: cdef Block_* Block_GetSlice_(const Block_* that, size_t start, size_t endex) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_GetSlice_(Block_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex) { size_t __pyx_v_size; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_GetSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_GetSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01572: cdef:
+01573: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01574:
+01575: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01576: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1576, __pyx_L1_error)
+01577: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01578: start = size # trim source start
__pyx_v_start = __pyx_v_size;
01579:
+01580: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01581: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1581, __pyx_L1_error)
+01582: elif endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+01583: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
+01584: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+01585: endex = size # trim source end
__pyx_v_endex = __pyx_v_size;
01586:
+01587: return Block_Create(that.address + start, endex - start, &that.data[that.start + start])
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Create((__pyx_v_that->address + __pyx_v_start), (__pyx_v_endex - __pyx_v_start), (&(__pyx_v_that->data[(__pyx_v_that->start + __pyx_v_start)]))); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1587, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
01588:
01589:
+01590: cdef Block_* Block_GetSlice(const Block_* that, ssize_t start, ssize_t endex) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_GetSlice(Block_ const *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex) { Py_ssize_t __pyx_v_ssize; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_GetSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_GetSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01591: cdef:
+01592: ssize_t ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01593:
+01594: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01595: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+01596: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01597: start = 0 # trim source start
__pyx_v_start = 0;
01598:
+01599: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01600: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+01601: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01602: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
01603:
+01604: return Block_GetSlice_(that, <size_t>start, <size_t>endex)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_GetSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex)); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1604, __pyx_L1_error)
__pyx_r = __pyx_t_2;
goto __pyx_L0;
01605:
01606:
+01607: cdef Block_* Block_WriteSlice_(Block_* that, size_t start, size_t endex,
static Block_ *__pyx_f_11cbytesparse_1c_Block_WriteSlice_(Block_ *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { size_t __pyx_v_size2; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_WriteSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_WriteSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01608: size_t size, const byte_t* buffer) except NULL:
01609: cdef:
01610: size_t size2 # source size
01611:
+01612: size2 = size
__pyx_v_size2 = __pyx_v_size;
+01613: size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01614:
+01615: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01616: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1616, __pyx_L1_error)
+01617: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01618: start = size # trim target start
__pyx_v_start = __pyx_v_size;
01619:
+01620: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01621: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1621, __pyx_L1_error)
+01622: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01623: endex = size # trim target end
__pyx_v_endex = __pyx_v_size;
01624:
+01625: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01626: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
+01627: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
01628:
+01629: if size2 > size: # enlarge target at range end
__pyx_t_1 = ((__pyx_v_size2 > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+01630: that = Block_Reserve_(that, endex, size2 - size, False)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size2 - __pyx_v_size), 0); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1630, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
01631:
+01632: elif size > size2: # shrink target at range end
__pyx_t_1 = ((__pyx_v_size > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ } __pyx_L6:;
+01633: endex -= size - size2
__pyx_v_endex = (__pyx_v_endex - (__pyx_v_size - __pyx_v_size2));
+01634: that = Block_Delete_(that, endex, size - size2)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Delete_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size - __pyx_v_size2)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1634, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
01635:
+01636: that = Block_Write_(that, start, size2, buffer)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Write_(__pyx_v_that, __pyx_v_start, __pyx_v_size2, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1636, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+01637: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01638:
01639:
+01640: cdef Block_* Block_WriteSlice(Block_* that, ssize_t start, ssize_t endex,
static Block_ *__pyx_f_11cbytesparse_1c_Block_WriteSlice(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Py_ssize_t __pyx_v_ssize; Py_ssize_t __pyx_v_ssize2; Py_ssize_t __pyx_v_start2; Py_ssize_t __pyx_v_endex2; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_WriteSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_WriteSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01641: size_t size, const byte_t* buffer) except NULL:
01642: cdef:
01643: ssize_t ssize # target size
01644: ssize_t ssize2 # source size
01645: ssize_t start2 # source start
01646: ssize_t endex2 # source end
01647:
+01648: start2 = 0
__pyx_v_start2 = 0;
+01649: endex2 = <ssize_t>size
__pyx_v_endex2 = ((Py_ssize_t)__pyx_v_size);
01650:
+01651: ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01652:
+01653: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01654: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+01655: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
01656: # start2 -= start # skip initial source data # as per bytearray
+01657: start = 0 # trim target start
__pyx_v_start = 0;
+01658: if start2 > endex2:
__pyx_t_1 = ((__pyx_v_start2 > __pyx_v_endex2) != 0); if (__pyx_t_1) { /* … */ }
+01659: start2 = endex2 # clamp source start
__pyx_v_start2 = __pyx_v_endex2;
01660:
+01661: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01662: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+01663: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01664: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
01665:
+01666: if endex2 < start2:
__pyx_t_1 = ((__pyx_v_endex2 < __pyx_v_start2) != 0); if (__pyx_t_1) { /* … */ }
+01667: endex2 = start2 # clamp negative source length
__pyx_v_endex2 = __pyx_v_start2;
+01668: ssize2 = endex2 - start2
__pyx_v_ssize2 = (__pyx_v_endex2 - __pyx_v_start2);
01669:
+01670: that = Block_WriteSlice_(that, <size_t>start, <size_t>endex, <size_t>ssize2, &buffer[start2])
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_WriteSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), ((size_t)__pyx_v_ssize2), (&(__pyx_v_buffer[__pyx_v_start2]))); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1670, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+01671: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01672:
01673:
+01674: cdef Block_* Block_SetSlice_(Block_* that, size_t start, size_t endex,
static Block_ *__pyx_f_11cbytesparse_1c_Block_SetSlice_(Block_ *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, Block_ const *__pyx_v_src, size_t __pyx_v_start2, size_t __pyx_v_endex2) { size_t __pyx_v_size; size_t __pyx_v_size2; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_SetSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_SetSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01675: const Block_* src, size_t start2, size_t endex2) except NULL:
01676: cdef:
01677: size_t size # target size
01678: size_t size2 # source size
01679:
+01680: size2 = src.endex - src.start
__pyx_v_size2 = (__pyx_v_src->endex - __pyx_v_src->start);
01681:
+01682: if start2 > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start2 > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01683: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1683, __pyx_L1_error)
+01684: elif start2 > size2:
__pyx_t_1 = ((__pyx_v_start2 > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+01685: start2 = size2 # trim source start
__pyx_v_start2 = __pyx_v_size2;
01686:
+01687: if endex2 > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex2 > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01688: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1688, __pyx_L1_error)
+01689: elif endex2 > size2:
__pyx_t_1 = ((__pyx_v_endex2 > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+01690: endex2 = size2 # trim source end
__pyx_v_endex2 = __pyx_v_size2;
01691:
+01692: if endex2 < start2:
__pyx_t_1 = ((__pyx_v_endex2 < __pyx_v_start2) != 0); if (__pyx_t_1) { /* … */ }
+01693: endex2 = start2 # clamp negative source length
__pyx_v_endex2 = __pyx_v_start2;
+01694: size2 = endex2 - start2
__pyx_v_size2 = (__pyx_v_endex2 - __pyx_v_start2);
01695:
+01696: size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01697:
+01698: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01699: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1699, __pyx_L1_error)
+01700: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01701: start = size # trim target start
__pyx_v_start = __pyx_v_size;
01702:
+01703: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01704: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1704, __pyx_L1_error)
+01705: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01706: endex = size # trim target end
__pyx_v_endex = __pyx_v_size;
01707:
+01708: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01709: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
+01710: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
01711:
+01712: if size2 > size: # enlarge target at range end
__pyx_t_1 = ((__pyx_v_size2 > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L9; }
+01713: that = Block_Reserve_(that, endex, size2 - size, False)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size2 - __pyx_v_size), 0); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1713, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
01714:
+01715: elif size > size2: # shrink target at range end
__pyx_t_1 = ((__pyx_v_size > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ } __pyx_L9:;
+01716: endex -= size - size2
__pyx_v_endex = (__pyx_v_endex - (__pyx_v_size - __pyx_v_size2));
+01717: that = Block_Delete_(that, endex, size - size2)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Delete_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size - __pyx_v_size2)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1717, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
01718:
+01719: that = Block_Write_(that, start, size2, &src.data[src.start + start2])
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Write_(__pyx_v_that, __pyx_v_start, __pyx_v_size2, (&(__pyx_v_src->data[(__pyx_v_src->start + __pyx_v_start2)]))); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1719, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+01720: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01721:
01722:
+01723: cdef Block_* Block_SetSlice(Block_* that, ssize_t start, ssize_t endex,
static Block_ *__pyx_f_11cbytesparse_1c_Block_SetSlice(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, Block_ const *__pyx_v_src, Py_ssize_t __pyx_v_start2, Py_ssize_t __pyx_v_endex2) { Py_ssize_t __pyx_v_ssize; Py_ssize_t __pyx_v_ssize2; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_SetSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_SetSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01724: const Block_* src, ssize_t start2, ssize_t endex2) except NULL:
01725: cdef:
01726: ssize_t ssize # target size
01727: ssize_t ssize2 # source size
01728:
+01729: ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
+01730: ssize2 = <ssize_t>(src.endex - src.start)
__pyx_v_ssize2 = ((Py_ssize_t)(__pyx_v_src->endex - __pyx_v_src->start));
01731:
+01732: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01733: start += ssize # anchor to target end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+01734: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
01735: # start2 -= start # skip initial source data # as per bytearray
+01736: start = 0 # trim target start
__pyx_v_start = 0;
01737:
+01738: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01739: endex += ssize # anchor to target end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+01740: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01741: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
01742:
+01743: if start2 < 0:
__pyx_t_1 = ((__pyx_v_start2 < 0) != 0); if (__pyx_t_1) { /* … */ }
+01744: start2 += ssize2 # anchor to source end
__pyx_v_start2 = (__pyx_v_start2 + __pyx_v_ssize2);
+01745: if start2 < 0:
__pyx_t_1 = ((__pyx_v_start2 < 0) != 0); if (__pyx_t_1) { /* … */ }
+01746: start2 = 0 # trim source start
__pyx_v_start2 = 0;
01747:
+01748: if endex2 < 0:
__pyx_t_1 = ((__pyx_v_endex2 < 0) != 0); if (__pyx_t_1) { /* … */ }
+01749: endex2 += ssize2 # anchor to source end
__pyx_v_endex2 = (__pyx_v_endex2 + __pyx_v_ssize2);
+01750: if endex2 < start2:
__pyx_t_1 = ((__pyx_v_endex2 < __pyx_v_start2) != 0); if (__pyx_t_1) { /* … */ }
+01751: endex2 = start2 # clamp negative source length
__pyx_v_endex2 = __pyx_v_start2;
01752:
+01753: that = Block_SetSlice_(that, <size_t>start, <size_t>endex, src, <size_t>start2, <size_t>endex2)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_SetSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), __pyx_v_src, ((size_t)__pyx_v_start2), ((size_t)__pyx_v_endex2)); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1753, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+01754: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01755:
01756:
+01757: cdef Block_* Block_DelSlice_(Block_* that, size_t start, size_t endex) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_DelSlice_(Block_ *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex) { size_t __pyx_v_size; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_DelSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_DelSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01758: cdef:
01759: size_t size
01760:
+01761: size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01762:
+01763: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01764: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1764, __pyx_L1_error)
+01765: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01766: start = size # trim start
__pyx_v_start = __pyx_v_size;
01767:
+01768: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01769: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1769, __pyx_L1_error)
+01770: elif endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+01771: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
+01772: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+01773: endex = size # trim end
__pyx_v_endex = __pyx_v_size;
01774:
+01775: that = Block_Delete_(that, start, (endex - start))
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Delete_(__pyx_v_that, __pyx_v_start, (__pyx_v_endex - __pyx_v_start)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1775, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+01776: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01777:
01778:
+01779: cdef Block_* Block_DelSlice(Block_* that, ssize_t start, ssize_t endex) except NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Block_DelSlice(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex) { Py_ssize_t __pyx_v_ssize; Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_DelSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Block_DelSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01780: cdef:
01781: ssize_t ssize
01782:
+01783: ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01784:
+01785: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01786: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+01787: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01788: start = 0 # trim start
__pyx_v_start = 0;
01789:
+01790: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01791: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+01792: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01793: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
01794:
+01795: that = Block_DelSlice_(that, <size_t>start, <size_t>endex)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex)); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1795, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+01796: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
01797:
01798:
+01799: cdef bytes Block_Bytes(const Block_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Block_Bytes(Block_ const *__pyx_v_that) { char *__pyx_v_ptr; Py_ssize_t __pyx_v_size; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Bytes", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Block_Bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01800: cdef:
+01801: char* ptr = <char*><void*>&that.data[that.start]
__pyx_v_ptr = ((char *)((void *)(&(__pyx_v_that->data[__pyx_v_that->start]))));
+01802: ssize_t size = <ssize_t>(that.endex - that.start)
__pyx_v_size = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01803:
+01804: return PyBytes_FromStringAndSize(ptr, size)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_ptr, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
01805:
01806:
+01807: cdef bytearray Block_Bytearray(const Block_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Block_Bytearray(Block_ const *__pyx_v_that) { char *__pyx_v_ptr; Py_ssize_t __pyx_v_size; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_Bytearray", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Block_Bytearray", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01808: cdef:
+01809: char* ptr = <char*><void*>&that.data[that.start]
__pyx_v_ptr = ((char *)((void *)(&(__pyx_v_that->data[__pyx_v_that->start]))));
+01810: ssize_t size = <ssize_t>(that.endex - that.start)
__pyx_v_size = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01811:
+01812: return PyByteArray_FromStringAndSize(ptr, size)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyByteArray_FromStringAndSize(__pyx_v_ptr, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1812, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
01813:
01814:
+01815: cdef BlockView Block_View(Block_* that):
static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_f_11cbytesparse_1c_Block_View(Block_ *__pyx_v_that) { struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_view = 0; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_View", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Block_View", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_view); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01816: cdef:
01817: BlockView view
01818:
+01819: view = BlockView()
__pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_11cbytesparse_1c_BlockView)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_view = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_1); __pyx_t_1 = 0;
+01820: that = Block_Acquire(that)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_that); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1820, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+01821: view._block = that
__pyx_v_view->_block = __pyx_v_that;
+01822: view._start = that.start
__pyx_t_3 = __pyx_v_that->start; __pyx_v_view->_start = __pyx_t_3;
+01823: view._endex = that.endex
__pyx_t_3 = __pyx_v_that->endex; __pyx_v_view->_endex = __pyx_t_3;
+01824: return view
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_view)); __pyx_r = __pyx_v_view; goto __pyx_L0;
01825:
01826:
+01827: cdef BlockView Block_ViewSlice_(Block_* that, size_t start, size_t endex):
static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_f_11cbytesparse_1c_Block_ViewSlice_(Block_ *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex) { size_t __pyx_v_size; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_view = 0; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_ViewSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_ViewSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_view); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01828: cdef:
+01829: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
01830: BlockView view
01831:
+01832: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01833: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1833, __pyx_L1_error)
+01834: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+01835: start = size # trim source start
__pyx_v_start = __pyx_v_size;
01836:
+01837: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01838: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1838, __pyx_L1_error)
+01839: elif endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+01840: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
+01841: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+01842: endex = size # trim source end
__pyx_v_endex = __pyx_v_size;
01843:
+01844: view = BlockView()
__pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_11cbytesparse_1c_BlockView)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_view = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_2); __pyx_t_2 = 0;
+01845: that = Block_Acquire(that)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_that); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 1845, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+01846: view._block = that
__pyx_v_view->_block = __pyx_v_that;
+01847: view._start = that.start + start
__pyx_v_view->_start = (__pyx_v_that->start + __pyx_v_start);
+01848: view._endex = that.start + endex
__pyx_v_view->_endex = (__pyx_v_that->start + __pyx_v_endex);
+01849: return view
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_view)); __pyx_r = __pyx_v_view; goto __pyx_L0;
01850:
01851:
+01852: cdef BlockView Block_ViewSlice(Block_* that, ssize_t start, ssize_t endex):
static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_f_11cbytesparse_1c_Block_ViewSlice(Block_ *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex) { Py_ssize_t __pyx_v_ssize; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Block_ViewSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Block_ViewSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01853: cdef:
01854: ssize_t ssize
01855:
+01856: ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
01857:
+01858: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01859: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+01860: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+01861: start = 0 # trim source start
__pyx_v_start = 0;
01862:
+01863: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+01864: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+01865: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+01866: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
01867:
+01868: return Block_ViewSlice_(that, <size_t>start, <size_t>endex)
__Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Block_ViewSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
01869:
01870:
01871: # ---------------------------------------------------------------------------------------------------------------------
01872:
+01873: cdef class BlockView:
struct __pyx_vtabstruct_11cbytesparse_1c_BlockView { __pyx_t_11cbytesparse_1c_vint (*check_)(struct __pyx_obj_11cbytesparse_1c_BlockView *); __pyx_t_11cbytesparse_1c_vint (*release_)(struct __pyx_obj_11cbytesparse_1c_BlockView *); }; static struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *__pyx_vtabptr_11cbytesparse_1c_BlockView;
01874: r"""Block viewer.
01875:
01876: Memory view around an underlying block slice, implementing Python's `buffer`
01877: protocol API.
01878: """
01879:
+01880: cdef vint check_(BlockView self) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_9BlockView_check_(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("check_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.BlockView.check_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01881: if self._block == NULL:
__pyx_t_1 = ((__pyx_v_self->_block == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+01882: raise RuntimeError('null internal data pointer')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 1882, __pyx_L1_error) /* … */ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_null_internal_data_pointer); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1882, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9);
01883:
+01884: cdef vint release_(BlockView self):
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_9BlockView_release_(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("release_", 0); /* … */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01885: self._memview = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_memview); __Pyx_DECREF(__pyx_v_self->_memview); __pyx_v_self->_memview = Py_None;
01886:
+01887: if self._block:
__pyx_t_1 = (__pyx_v_self->_block != 0); if (__pyx_t_1) { /* … */ }
+01888: self._block = Block_Release(self._block)
__pyx_v_self->_block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_self->_block);
01889:
+01890: def __bool__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_9BlockView_1__bool__(PyObject *__pyx_v_self); /*proto*/ static int __pyx_pw_11cbytesparse_1c_9BlockView_1__bool__(PyObject *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView___bool__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_9BlockView___bool__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bool__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.BlockView.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01891: self: BlockView,
01892: ) -> bool:
01893: r"""Has any data.
01894:
01895: Returns:
01896: bool: Non-null slice length.
01897: """
01898:
+01899: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1899, __pyx_L1_error)
+01900: return self._start < self._endex
__pyx_r = (__pyx_v_self->_start < __pyx_v_self->_endex); goto __pyx_L0;
01901:
+01902: def __bytes__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_3__bytes__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_9BlockView_2__bytes__[] = "BlockView.__bytes__(self: BlockView) -> bytes\nConverts into bytes.\n\n Returns:\n bytes: :class:`bytes` clone of the viewed slice.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_9BlockView_3__bytes__ = {"__bytes__", (PyCFunction)__pyx_pw_11cbytesparse_1c_9BlockView_3__bytes__, METH_NOARGS, __pyx_doc_11cbytesparse_1c_9BlockView_2__bytes__}; static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_3__bytes__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bytes__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_2__bytes__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_2__bytes__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { char *__pyx_v_ptr; Py_ssize_t __pyx_v_size; Block_ *__pyx_v_block; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bytes__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.BlockView.__bytes__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__81 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_ptr, __pyx_n_s_size, __pyx_n_s_block); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__81); __Pyx_GIVEREF(__pyx_tuple__81); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_BlockView) < 0) __PYX_ERR(0, 1902, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_n_u_bytes_2) < 0) __PYX_ERR(0, 1902, __pyx_L1_error) __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_9BlockView_3__bytes__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BlockView___bytes, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_BlockView->tp_dict, __pyx_n_s_bytes, __pyx_t_2) < 0) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_BlockView); __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_bytes, 1902, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1902, __pyx_L1_error)
01903: self: BlockView,
01904: ) -> bytes:
01905: r"""Converts into bytes.
01906:
01907: Returns:
01908: bytes: :class:`bytes` clone of the viewed slice.
01909: """
01910: cdef:
01911: char* ptr
01912: ssize_t size
+01913: Block_* block = self._block
__pyx_t_1 = __pyx_v_self->_block; __pyx_v_block = __pyx_t_1;
01914:
+01915: self.check_()
__pyx_t_2 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1915, __pyx_L1_error)
+01916: ptr = <char*><void*>&block.data[self._start]
__pyx_v_ptr = ((char *)((void *)(&(__pyx_v_block->data[__pyx_v_self->_start]))));
+01917: size = <ssize_t>(self._endex - self._start)
__pyx_v_size = ((Py_ssize_t)(__pyx_v_self->_endex - __pyx_v_self->_start));
+01918: return PyBytes_FromStringAndSize(ptr, size)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyBytes_FromStringAndSize(__pyx_v_ptr, __pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1918, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
01919:
+01920: def __cinit__(self: BlockView):
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_9BlockView_5__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_11cbytesparse_1c_9BlockView_5__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_4__cinit__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_9BlockView_4__cinit__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 0); /* … */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+01921: self._block = NULL
__pyx_v_self->_block = NULL;
01922:
+01923: def __dealloc__(self: BlockView):
/* Python wrapper */ static void __pyx_pw_11cbytesparse_1c_9BlockView_7__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_11cbytesparse_1c_9BlockView_7__dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_pf_11cbytesparse_1c_9BlockView_6__dealloc__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_pf_11cbytesparse_1c_9BlockView_6__dealloc__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__", 0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); }
+01924: self.release_()
(void)(((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->release_(__pyx_v_self));
01925:
+01926: def __eq__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_9__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_9__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_8__eq__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self), ((PyObject *)__pyx_v_other)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_8__eq__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self, PyObject *__pyx_v_other) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__eq__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.BlockView.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01927: self: BlockView,
01928: other: Any,
01929: ) -> bool:
01930:
+01931: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1931, __pyx_L1_error)
+01932: if other is None:
__pyx_t_2 = (__pyx_v_other == Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* … */ }
+01933: return False
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_False); __pyx_r = Py_False; goto __pyx_L0;
01934:
+01935: if isinstance(other, BlockView):
__pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_11cbytesparse_1c_BlockView);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+01936: return Block_Eq(self._block, (<BlockView>other)._block)
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_f_11cbytesparse_1c_Block_Eq(__pyx_v_self->_block, ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_other)->_block)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
01937: else:
+01938: return self.memview == other
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_v_other, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; }
01939:
+01940: def __getattr__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_11__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_11__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attr), (&PyUnicode_Type), 1, "attr", 1))) __PYX_ERR(0, 1942, __pyx_L1_error) __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_10__getattr__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self), ((PyObject*)__pyx_v_attr)); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_10__getattr__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self, PyObject *__pyx_v_attr) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getattr__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.BlockView.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01941: self: BlockView,
01942: attr: str,
01943: ) -> Any:
01944:
+01945: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1945, __pyx_L1_error)
+01946: return getattr(self.memview, attr)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetAttr(__pyx_t_2, __pyx_v_attr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
01947:
+01948: def __getbuffer__(self: BlockView, Py_buffer* buffer, int flags):
/* Python wrapper */ static CYTHON_UNUSED int __pyx_pw_11cbytesparse_1c_9BlockView_13__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags); /*proto*/ static CYTHON_UNUSED int __pyx_pw_11cbytesparse_1c_9BlockView_13__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_12__getbuffer__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self), ((Py_buffer *)__pyx_v_buffer), ((int)__pyx_v_flags)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_9BlockView_12__getbuffer__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags) { int __pyx_v_CONTIGUOUS; int __pyx_r; if (__pyx_v_buffer == NULL) { PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); return -1; } __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__", 0); __pyx_v_buffer->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_buffer->obj); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.BlockView.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; if (__pyx_v_buffer->obj != NULL) { __Pyx_GOTREF(__pyx_v_buffer->obj); __Pyx_DECREF(__pyx_v_buffer->obj); __pyx_v_buffer->obj = 0; } goto __pyx_L2; __pyx_L0:; if (__pyx_v_buffer->obj == Py_None) { __Pyx_GOTREF(__pyx_v_buffer->obj); __Pyx_DECREF(__pyx_v_buffer->obj); __pyx_v_buffer->obj = 0; } __pyx_L2:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01949: cdef:
+01950: int CONTIGUOUS = PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
__pyx_v_CONTIGUOUS = ((PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS) | PyBUF_ANY_CONTIGUOUS);
01951:
01952: # if flags & PyBUF_WRITABLE:
01953: # raise ValueError('read only access')
01954:
+01955: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1955, __pyx_L1_error)
01956:
+01957: self._block = Block_Acquire(self._block)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_self->_block); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 1957, __pyx_L1_error)
__pyx_v_self->_block = __pyx_t_2;
01958:
+01959: buffer.buf = &self._block.data[self._start]
__pyx_v_buffer->buf = (&(__pyx_v_self->_block->data[__pyx_v_self->_start]));
+01960: buffer.obj = self
__Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); __Pyx_GOTREF(__pyx_v_buffer->obj); __Pyx_DECREF(__pyx_v_buffer->obj); __pyx_v_buffer->obj = ((PyObject *)__pyx_v_self);
+01961: buffer.len = self._endex - self._start
__pyx_v_buffer->len = (__pyx_v_self->_endex - __pyx_v_self->_start);
+01962: buffer.itemsize = 1
__pyx_v_buffer->itemsize = 1;
+01963: buffer.readonly = not (flags & PyBUF_WRITABLE)
__pyx_v_buffer->readonly = (!((__pyx_v_flags & PyBUF_WRITABLE) != 0));
+01964: buffer.ndim = 1
__pyx_v_buffer->ndim = 1;
+01965: buffer.format = <char*>'B' if flags & (PyBUF_FORMAT | CONTIGUOUS) else NULL
if (((__pyx_v_flags & (PyBUF_FORMAT | __pyx_v_CONTIGUOUS)) != 0)) { __pyx_t_3 = ((char *)((char *)"B")); } else { __pyx_t_3 = NULL; } __pyx_v_buffer->format = __pyx_t_3;
+01966: buffer.shape = &buffer.len if flags & (PyBUF_ND | CONTIGUOUS) else NULL
if (((__pyx_v_flags & (PyBUF_ND | __pyx_v_CONTIGUOUS)) != 0)) { __pyx_t_4 = (&__pyx_v_buffer->len); } else { __pyx_t_4 = NULL; } __pyx_v_buffer->shape = __pyx_t_4;
+01967: buffer.strides = &buffer.itemsize if flags & (PyBUF_STRIDES | CONTIGUOUS) else NULL
if (((__pyx_v_flags & (PyBUF_STRIDES | __pyx_v_CONTIGUOUS)) != 0)) { __pyx_t_4 = (&__pyx_v_buffer->itemsize); } else { __pyx_t_4 = NULL; } __pyx_v_buffer->strides = __pyx_t_4;
+01968: buffer.suboffsets = NULL
__pyx_v_buffer->suboffsets = NULL;
+01969: buffer.internal = NULL
__pyx_v_buffer->internal = NULL;
01970:
+01971: def __getitem__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_14__getitem__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self), ((PyObject *)__pyx_v_item)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_14__getitem__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.BlockView.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01972: self: BlockView,
01973: item: Any,
01974: ) -> Any:
01975:
+01976: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1976, __pyx_L1_error)
+01977: return self.memview[item]
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_item); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
01978:
+01979: def __len__(
/* Python wrapper */ static Py_ssize_t __pyx_pw_11cbytesparse_1c_9BlockView_17__len__(PyObject *__pyx_v_self); /*proto*/ static char __pyx_doc_11cbytesparse_1c_9BlockView_16__len__[] = "int: Slice length."; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_9BlockView_16__len__; #endif static Py_ssize_t __pyx_pw_11cbytesparse_1c_9BlockView_17__len__(PyObject *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_16__len__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_pf_11cbytesparse_1c_9BlockView_16__len__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.BlockView.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
01980: self: BlockView,
01981: ) -> Address:
01982: r"""int: Slice length."""
01983:
+01984: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 1984, __pyx_L1_error)
+01985: return self._endex - self._start
__pyx_r = (__pyx_v_self->_endex - __pyx_v_self->_start); goto __pyx_L0;
01986:
+01987: def __releasebuffer__(self: BlockView, Py_buffer* buffer):
/* Python wrapper */ static CYTHON_UNUSED void __pyx_pw_11cbytesparse_1c_9BlockView_19__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer); /*proto*/ static CYTHON_UNUSED void __pyx_pw_11cbytesparse_1c_9BlockView_19__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0); __pyx_pf_11cbytesparse_1c_9BlockView_18__releasebuffer__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self), ((Py_buffer *)__pyx_v_buffer)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_pf_11cbytesparse_1c_9BlockView_18__releasebuffer__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self, CYTHON_UNUSED Py_buffer *__pyx_v_buffer) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__releasebuffer__", 0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); }
+01988: if self._block:
__pyx_t_1 = (__pyx_v_self->_block != 0); if (__pyx_t_1) { /* … */ }
+01989: self._block = Block_Release_(self._block)
__pyx_v_self->_block = __pyx_f_11cbytesparse_1c_Block_Release_(__pyx_v_self->_block);
01990:
+01991: def __repr__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_21__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_21__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_20__repr__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_20__repr__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.BlockView.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01992: self: BlockView,
01993: ) -> str:
01994:
+01995: return repr(self.__str__())
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
01996:
+01997: def __str__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_23__str__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_23__str__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_22__str__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_22__str__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { Block_ const *__pyx_v_block; size_t __pyx_v_size; addr_t __pyx_v_start; addr_t __pyx_v_endex; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cbytesparse.c.BlockView.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
01998: self: BlockView,
01999: ) -> str:
02000: cdef:
+02001: const Block_* block = self._block
__pyx_t_1 = __pyx_v_self->_block; __pyx_v_block = __pyx_t_1;
+02002: size_t size = self._endex - self._start
__pyx_v_size = (__pyx_v_self->_endex - __pyx_v_self->_start);
02003: addr_t start
02004: addr_t endex
02005:
+02006: self.check_()
__pyx_t_2 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2006, __pyx_L1_error)
02007:
+02008: if size > STR_MAX_CONTENT_SIZE:
__pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_STR_MAX_CONTENT_SIZE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { /* … */ }
+02009: start = block.address
__pyx_t_7 = __pyx_v_block->address; __pyx_v_start = __pyx_t_7;
+02010: CheckAddAddrU(start, size)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start, __pyx_v_size); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2010, __pyx_L1_error)
+02011: endex = start + size
__pyx_v_endex = (__pyx_v_start + __pyx_v_size);
+02012: return f'<{type(self).__name__}[0x{start:X}:0x{endex:X}]@0x{<uintptr_t><void*>self:X}>'
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = PyTuple_New(9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = 0; __pyx_t_9 = 127; __Pyx_INCREF(__pyx_kp_u__10); __pyx_t_8 += 1; __Pyx_GIVEREF(__pyx_kp_u__10); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u__10); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_9; __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_kp_u_0x); __pyx_t_8 += 3; __Pyx_GIVEREF(__pyx_kp_u_0x); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_0x); __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_3, __pyx_n_u_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_9; __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u_0x_2); __pyx_t_8 += 3; __Pyx_GIVEREF(__pyx_kp_u_0x_2); PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_kp_u_0x_2); __pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_9; __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_kp_u_0x_3); __pyx_t_8 += 4; __Pyx_GIVEREF(__pyx_kp_u_0x_3); PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_kp_u_0x_3); __pyx_t_3 = __Pyx_PyInt_FromSize_t(((uintptr_t)((void *)__pyx_v_self))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_3, __pyx_n_u_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_9; __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__11); __pyx_t_8 += 1; __Pyx_GIVEREF(__pyx_kp_u__11); PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_kp_u__11); __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 9, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
02013: else:
+02014: return self.__bytes__().decode('ascii')
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_n_u_ascii) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_ascii); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; }
02015:
02016: @property
+02017: def acquired(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_8acquired_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_8acquired_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_8acquired___get__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_8acquired___get__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.BlockView.acquired.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
02018: self: BlockView,
02019: ) -> bool:
02020: r"""bool: Underlying block currently acquired."""
02021:
+02022: return self._block != NULL
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->_block != NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
02023:
+02024: def check(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_25check(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_9BlockView_24check[] = "BlockView.check(self: BlockView) -> None\nChecks for data consistency."; static PyMethodDef __pyx_mdef_11cbytesparse_1c_9BlockView_25check = {"check", (PyCFunction)__pyx_pw_11cbytesparse_1c_9BlockView_25check, METH_NOARGS, __pyx_doc_11cbytesparse_1c_9BlockView_24check}; static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_25check(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("check (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_24check(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_24check(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("check", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.BlockView.check", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__83 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 2024, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__83); __Pyx_GIVEREF(__pyx_tuple__83); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_BlockView) < 0) __PYX_ERR(0, 2024, __pyx_L1_error) /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_9BlockView_25check, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BlockView_check, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_BlockView->tp_dict, __pyx_n_s_check, __pyx_t_1) < 0) __PYX_ERR(0, 2024, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_BlockView); __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_check, 2024, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 2024, __pyx_L1_error)
02025: self: BlockView,
+02026: ) -> None:
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 2024, __pyx_L1_error)
02027: r"""Checks for data consistency."""
02028:
+02029: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2029, __pyx_L1_error)
02030:
+02031: def release(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_27release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_9BlockView_26release[] = "BlockView.release(self: BlockView) -> None\nForces object disposal.\n\n Useful to make sure that any memory blocks are unreferenced before automatic\n garbage collection.\n\n Any access to the object after calling this function could raise exceptions.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_9BlockView_27release = {"release", (PyCFunction)__pyx_pw_11cbytesparse_1c_9BlockView_27release, METH_NOARGS, __pyx_doc_11cbytesparse_1c_9BlockView_26release}; static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_27release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("release (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_26release(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_26release(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("release", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__85); __Pyx_GIVEREF(__pyx_tuple__85); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_BlockView) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_9BlockView_27release, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BlockView_release, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_BlockView->tp_dict, __pyx_n_s_release, __pyx_t_2) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_BlockView); __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_release, 2031, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 2031, __pyx_L1_error)
02032: self: BlockView,
+02033: ) -> None:
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 2031, __pyx_L1_error)
02034: r"""Forces object disposal.
02035:
02036: Useful to make sure that any memory blocks are unreferenced before automatic
02037: garbage collection.
02038:
02039: Any access to the object after calling this function could raise exceptions.
02040: """
02041:
+02042: self.release_()
(void)(((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->release_(__pyx_v_self));
02043:
02044: @property
+02045: def endex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_5endex_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_5endex_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_5endex___get__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_5endex___get__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.BlockView.endex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
02046: self: BlockView,
02047: ) -> Address:
02048: r"""int: Slice exclusive end address."""
02049:
+02050: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2050, __pyx_L1_error)
+02051: return self._block.address + self._endex - self._start
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(((__pyx_v_self->_block->address + __pyx_v_self->_endex) - __pyx_v_self->_start)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
02052:
02053: @property
+02054: def endin(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_5endin_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_5endin_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_5endin___get__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_5endin___get__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.BlockView.endin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
02055: self: BlockView,
02056: ) -> Address:
02057: r"""int: Slice inclusive end address."""
02058:
+02059: return self.endex - 1
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
02060:
02061: @property
+02062: def memview(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_7memview_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_7memview_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_7memview___get__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_7memview___get__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { byte_t *__pyx_v_data; size_t __pyx_v_size; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(((PyObject *)__pyx_t_4)); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.BlockView.memview.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
02063: self: BlockView,
02064: ) -> memoryview:
02065: r"""memoryview: Python :class:`memoryview` wrapper."""
02066: cdef:
02067: byte_t* data
02068: size_t size
02069: byte_t[:] view
02070:
+02071: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2071, __pyx_L1_error)
02072:
+02073: if self._memview is None:
__pyx_t_2 = (__pyx_v_self->_memview == Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* … */ }
+02074: data = &self._block.data[self._start]
__pyx_v_data = (&(__pyx_v_self->_block->data[__pyx_v_self->_start]));
+02075: size = self._endex - self._start
__pyx_v_size = (__pyx_v_self->_endex - __pyx_v_self->_start);
02076:
+02077: if size > 0:
__pyx_t_3 = ((__pyx_v_size > 0) != 0); if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+02078: self._memview = <byte_t[:size]>data
if (!__pyx_v_data) { PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer"); __PYX_ERR(0, 2078, __pyx_L1_error) } __pyx_t_6 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_byte_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = Py_BuildValue((char*) "(" __PYX_BUILD_PY_SSIZE_T ")", ((Py_ssize_t)__pyx_v_size)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __pyx_array_new(__pyx_t_5, sizeof(byte_t), PyBytes_AS_STRING(__pyx_t_6), (char *) "c", (char *) __pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __Pyx_GOTREF(__pyx_v_self->_memview); __Pyx_DECREF(__pyx_v_self->_memview); __pyx_v_self->_memview = ((PyObject *)__pyx_t_4); __pyx_t_4 = 0;
02079: else:
+02080: self._memview = b''
/*else*/ { __Pyx_INCREF(__pyx_kp_b__12); __Pyx_GIVEREF(__pyx_kp_b__12); __Pyx_GOTREF(__pyx_v_self->_memview); __Pyx_DECREF(__pyx_v_self->_memview); __pyx_v_self->_memview = __pyx_kp_b__12; } __pyx_L4:;
02081:
+02082: return self._memview
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->_memview); __pyx_r = __pyx_v_self->_memview; goto __pyx_L0;
02083:
02084: @property
+02085: def start(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_5start_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_9BlockView_5start_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_9BlockView_5start___get__(((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_9BlockView_5start___get__(struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.BlockView.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
02086: self: BlockView,
02087: ) -> Address:
02088: r"""int: Slice inclusive start address."""
02089:
+02090: self.check_()
__pyx_t_1 = ((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_self->__pyx_vtab)->check_(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2090, __pyx_L1_error)
+02091: return self._block.address
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_self->_block->address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
02092:
02093:
02094: # =====================================================================================================================
02095:
+02096: cdef Rack_* Rack_Alloc(size_t size) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Alloc(size_t __pyx_v_size) { Rack_ *__pyx_v_that; size_t __pyx_v_allocated; size_t __pyx_v_actual; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Alloc", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_Alloc", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02097: cdef:
+02098: Rack_* that = NULL
__pyx_v_that = NULL;
02099: size_t allocated
02100: size_t actual
02101:
+02102: if size > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_size > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02103: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2103, __pyx_L1_error)
02104:
02105: # Allocate as per request
+02106: allocated = Upsize(0, size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Upsize(0, __pyx_v_size);
+02107: if allocated > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02108: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2108, __pyx_L1_error)
02109:
+02110: actual = Rack_HEADING + (allocated * sizeof(Block_*))
__pyx_v_actual = (Rack_HEADING + (__pyx_v_allocated * (sizeof(Block_ *))));
+02111: that = <Rack_*>PyMem_Calloc(actual, 1)
__pyx_v_that = ((Rack_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(__pyx_v_actual, 1));
+02112: if that == NULL:
__pyx_t_1 = ((__pyx_v_that == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02113: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2113, __pyx_L1_error)
02114:
+02115: that.allocated = allocated
__pyx_v_that->allocated = __pyx_v_allocated;
+02116: that.start = MARGIN # leave some initial room
__pyx_v_that->start = MARGIN;
+02117: that.endex = that.start + size
__pyx_v_that->endex = (__pyx_v_that->start + __pyx_v_size);
+02118: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02119:
02120:
+02121: cdef Rack_* Rack_Free(Rack_* that):
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Free(Rack_ *__pyx_v_that) { size_t __pyx_v_index; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Free", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02122: cdef:
02123: size_t index
02124:
+02125: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (__pyx_t_1) { /* … */ }
02126: # Decrement data referencing
+02127: for index in range(that.start, that.endex):
__pyx_t_2 = __pyx_v_that->endex; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = __pyx_v_that->start; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_index = __pyx_t_4;
+02128: that.blocks[index] = Block_Release(that.blocks[index])
(__pyx_v_that->blocks[__pyx_v_index]) = __pyx_f_11cbytesparse_1c_Block_Release((__pyx_v_that->blocks[__pyx_v_index])); }
+02129: PyMem_Free(that)
PyMem_Free(__pyx_v_that);
+02130: return NULL
__pyx_r = NULL; goto __pyx_L0;
02131:
02132:
+02133: cdef Rack_* Rack_ShallowCopy(const Rack_* other) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_ShallowCopy(Rack_ const *__pyx_v_other) { Rack_ *__pyx_v_that; size_t __pyx_v_start1; size_t __pyx_v_start2; size_t __pyx_v_offset; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_ShallowCopy", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cbytesparse.c.Rack_ShallowCopy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02134: cdef:
+02135: Rack_* that = Rack_Alloc(other.endex - other.start)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Alloc((__pyx_v_other->endex - __pyx_v_other->start)); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2135, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+02136: size_t start1 = that.start
__pyx_t_2 = __pyx_v_that->start; __pyx_v_start1 = __pyx_t_2;
+02137: size_t start2 = other.start
__pyx_t_2 = __pyx_v_other->start; __pyx_v_start2 = __pyx_t_2;
02138: size_t offset
02139:
+02140: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L1_error; __pyx_L8_try_end:; }
+02141: for offset in range(that.endex - that.start):
__pyx_t_2 = (__pyx_v_that->endex - __pyx_v_that->start); __pyx_t_6 = __pyx_t_2; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_offset = __pyx_t_7;
+02142: that.blocks[start1 + offset] = Block_Acquire(other.blocks[start2 + offset])
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_other->blocks[(__pyx_v_start2 + __pyx_v_offset)])); if (unlikely(__pyx_t_8 == ((Block_ *)NULL))) __PYX_ERR(0, 2142, __pyx_L3_error)
(__pyx_v_that->blocks[(__pyx_v_start1 + __pyx_v_offset)]) = __pyx_t_8;
}
+02143: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Rack_ShallowCopy", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 2143, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11);
+02144: that = Rack_Free(that)
__pyx_v_that = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_that);
+02145: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __PYX_ERR(0, 2145, __pyx_L5_except_error) } __pyx_L5_except_error:;
+02146: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02147:
02148:
+02149: cdef Rack_* Rack_Copy(const Rack_* other) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Copy(Rack_ const *__pyx_v_other) { Rack_ *__pyx_v_that; size_t __pyx_v_start1; size_t __pyx_v_start2; size_t __pyx_v_offset; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Copy", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cbytesparse.c.Rack_Copy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02150: cdef:
+02151: Rack_* that = Rack_Alloc(other.endex - other.start)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Alloc((__pyx_v_other->endex - __pyx_v_other->start)); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2151, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+02152: size_t start1 = that.start
__pyx_t_2 = __pyx_v_that->start; __pyx_v_start1 = __pyx_t_2;
+02153: size_t start2 = other.start
__pyx_t_2 = __pyx_v_other->start; __pyx_v_start2 = __pyx_t_2;
02154: size_t offset
02155:
+02156: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L1_error; __pyx_L8_try_end:; }
+02157: for offset in range(that.endex - that.start):
__pyx_t_2 = (__pyx_v_that->endex - __pyx_v_that->start); __pyx_t_6 = __pyx_t_2; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_offset = __pyx_t_7;
+02158: that.blocks[start1 + offset] = Block_Copy(other.blocks[start2 + offset])
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Copy((__pyx_v_other->blocks[(__pyx_v_start2 + __pyx_v_offset)])); if (unlikely(__pyx_t_8 == ((Block_ *)NULL))) __PYX_ERR(0, 2158, __pyx_L3_error)
(__pyx_v_that->blocks[(__pyx_v_start1 + __pyx_v_offset)]) = __pyx_t_8;
}
+02159: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Rack_Copy", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 2159, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11);
+02160: that = Rack_Free(that)
__pyx_v_that = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_that);
+02161: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __PYX_ERR(0, 2161, __pyx_L5_except_error) } __pyx_L5_except_error:;
+02162: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02163:
02164:
+02165: cdef Rack_* Rack_FromObject(object obj, saddr_t offset) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_FromObject(PyObject *__pyx_v_obj, saddr_t __pyx_v_offset) { Rack_ *__pyx_v_that; size_t __pyx_v_size; size_t __pyx_v_index; addr_t __pyx_v_address; PyObject *__pyx_v_data = NULL; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_FromObject", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_XDECREF(__pyx_t_15); __Pyx_XDECREF(__pyx_t_22); __Pyx_XDECREF(__pyx_t_23); __Pyx_XDECREF(__pyx_t_24); __Pyx_AddTraceback("cbytesparse.c.Rack_FromObject", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_data); __Pyx_RefNannyFinishContext(); return __pyx_r; }
02166: cdef:
+02167: Rack_* that = NULL
__pyx_v_that = NULL;
02168: size_t size
02169: size_t index
02170: addr_t address
02171:
+02172: try:
{ /*try:*/ { /* … */ } __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L7_try_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L0; }
+02173: try:
{ /*try:*/ { /* … */ } /* … */ __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L3_error; __pyx_L10_exception_handled:; __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); __pyx_L14_try_end:; }
+02174: size = len(obj)
__pyx_t_7 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2174, __pyx_L9_error) __pyx_v_size = __pyx_t_7;
+02175: except TypeError:
__pyx_t_21 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_21) { __Pyx_AddTraceback("cbytesparse.c.Rack_FromObject", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_12, &__pyx_t_14) < 0) __PYX_ERR(0, 2175, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_14);
+02176: that = Rack_Alloc(0)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Rack_Alloc(0); if (unlikely(__pyx_t_8 == ((Rack_ *)NULL))) __PYX_ERR(0, 2176, __pyx_L11_except_error)
__pyx_v_that = __pyx_t_8;
+02177: for address, data in obj:
if (likely(PyList_CheckExact(__pyx_v_obj)) || PyTuple_CheckExact(__pyx_v_obj)) { __pyx_t_13 = __pyx_v_obj; __Pyx_INCREF(__pyx_t_13); __pyx_t_7 = 0; __pyx_t_11 = NULL; } else { __pyx_t_7 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_v_obj); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2177, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = Py_TYPE(__pyx_t_13)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2177, __pyx_L11_except_error) } for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_13))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_13)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_15 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_7); __Pyx_INCREF(__pyx_t_15); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2177, __pyx_L11_except_error) #else __pyx_t_15 = PySequence_ITEM(__pyx_t_13, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2177, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_15); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_13)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_7); __Pyx_INCREF(__pyx_t_15); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2177, __pyx_L11_except_error) #else __pyx_t_15 = PySequence_ITEM(__pyx_t_13, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2177, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_15); #endif } } else { __pyx_t_15 = __pyx_t_11(__pyx_t_13); if (unlikely(!__pyx_t_15)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2177, __pyx_L11_except_error) } break; } __Pyx_GOTREF(__pyx_t_15); } if ((likely(PyTuple_CheckExact(__pyx_t_15))) || (PyList_CheckExact(__pyx_t_15))) { PyObject* sequence = __pyx_t_15; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2177, __pyx_L11_except_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_22 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_23 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_22 = PyList_GET_ITEM(sequence, 0); __pyx_t_23 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_22); __Pyx_INCREF(__pyx_t_23); #else __pyx_t_22 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2177, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2177, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_23); #endif __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else { Py_ssize_t index = -1; __pyx_t_24 = PyObject_GetIter(__pyx_t_15); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2177, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_16 = Py_TYPE(__pyx_t_24)->tp_iternext; index = 0; __pyx_t_22 = __pyx_t_16(__pyx_t_24); if (unlikely(!__pyx_t_22)) goto __pyx_L24_unpacking_failed; __Pyx_GOTREF(__pyx_t_22); index = 1; __pyx_t_23 = __pyx_t_16(__pyx_t_24); if (unlikely(!__pyx_t_23)) goto __pyx_L24_unpacking_failed; __Pyx_GOTREF(__pyx_t_23); if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_24), 2) < 0) __PYX_ERR(0, 2177, __pyx_L11_except_error) __pyx_t_16 = NULL; __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; goto __pyx_L25_unpacking_done; __pyx_L24_unpacking_failed:; __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; __pyx_t_16 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2177, __pyx_L11_except_error) __pyx_L25_unpacking_done:; } __pyx_t_17 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_22); if (unlikely((__pyx_t_17 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2177, __pyx_L11_except_error) __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; __pyx_v_address = __pyx_t_17; __Pyx_XDECREF_SET(__pyx_v_data, __pyx_t_23); __pyx_t_23 = 0; /* … */ } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L10_exception_handled; } goto __pyx_L11_except_error; __pyx_L11_except_error:;
+02178: if offset < 0:
__pyx_t_18 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_18) { /* … */ goto __pyx_L26; }
+02179: CheckSubAddrU(address, <addr_t>-offset)
__pyx_t_19 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_address, ((addr_t)(-__pyx_v_offset))); if (unlikely(__pyx_t_19 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2179, __pyx_L11_except_error)
+02180: address -= <addr_t>-offset
__pyx_v_address = (__pyx_v_address - ((addr_t)(-__pyx_v_offset)));
+02181: elif offset > 0:
__pyx_t_18 = ((__pyx_v_offset > 0) != 0); if (__pyx_t_18) { /* … */ } __pyx_L26:;
+02182: CheckAddAddrU(address, <addr_t>offset)
__pyx_t_19 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address, ((addr_t)__pyx_v_offset)); if (unlikely(__pyx_t_19 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2182, __pyx_L11_except_error)
+02183: address += <addr_t>offset
__pyx_v_address = (__pyx_v_address + ((addr_t)__pyx_v_offset));
+02184: that = Rack_Append(that, Block_FromObject(address, data, True))
__pyx_t_20 = __pyx_f_11cbytesparse_1c_Block_FromObject(__pyx_v_address, __pyx_v_data, 1); if (unlikely(__pyx_t_20 == ((Block_ *)NULL))) __PYX_ERR(0, 2184, __pyx_L11_except_error) __pyx_t_8 = __pyx_f_11cbytesparse_1c_Rack_Append(__pyx_v_that, __pyx_t_20); if (unlikely(__pyx_t_8 == ((Rack_ *)NULL))) __PYX_ERR(0, 2184, __pyx_L11_except_error) __pyx_v_that = __pyx_t_8;
02185: else:
+02186: that = Rack_Alloc(size)
/*else:*/ {
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Rack_Alloc(__pyx_v_size); if (unlikely(__pyx_t_8 == ((Rack_ *)NULL))) __PYX_ERR(0, 2186, __pyx_L11_except_error)
__pyx_v_that = __pyx_t_8;
+02187: index = that.start
__pyx_t_9 = __pyx_v_that->start; __pyx_v_index = __pyx_t_9;
+02188: for address, data in obj:
if (likely(PyList_CheckExact(__pyx_v_obj)) || PyTuple_CheckExact(__pyx_v_obj)) { __pyx_t_10 = __pyx_v_obj; __Pyx_INCREF(__pyx_t_10); __pyx_t_7 = 0; __pyx_t_11 = NULL; } else { __pyx_t_7 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_obj); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2188, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2188, __pyx_L11_except_error) } for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_10))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_7); __Pyx_INCREF(__pyx_t_12); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2188, __pyx_L11_except_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2188, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_12); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_7); __Pyx_INCREF(__pyx_t_12); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2188, __pyx_L11_except_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2188, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_12); #endif } } else { __pyx_t_12 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_12)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2188, __pyx_L11_except_error) } break; } __Pyx_GOTREF(__pyx_t_12); } if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) { PyObject* sequence = __pyx_t_12; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2188, __pyx_L11_except_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_13 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_13 = PyList_GET_ITEM(sequence, 0); __pyx_t_14 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); #else __pyx_t_13 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2188, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2188, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_14); #endif __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else { Py_ssize_t index = -1; __pyx_t_15 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2188, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_16 = Py_TYPE(__pyx_t_15)->tp_iternext; index = 0; __pyx_t_13 = __pyx_t_16(__pyx_t_15); if (unlikely(!__pyx_t_13)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_13); index = 1; __pyx_t_14 = __pyx_t_16(__pyx_t_15); if (unlikely(!__pyx_t_14)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_14); if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 2) < 0) __PYX_ERR(0, 2188, __pyx_L11_except_error) __pyx_t_16 = NULL; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; goto __pyx_L18_unpacking_done; __pyx_L17_unpacking_failed:; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_16 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2188, __pyx_L11_except_error) __pyx_L18_unpacking_done:; } __pyx_t_17 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_13); if (unlikely((__pyx_t_17 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2188, __pyx_L11_except_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_v_address = __pyx_t_17; __Pyx_XDECREF_SET(__pyx_v_data, __pyx_t_14); __pyx_t_14 = 0; /* … */ } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L14_try_end; __pyx_L9_error:;
+02189: if offset < 0:
__pyx_t_18 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_18) { /* … */ goto __pyx_L19; }
+02190: CheckSubAddrU(address, <addr_t>-offset)
__pyx_t_19 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_address, ((addr_t)(-__pyx_v_offset))); if (unlikely(__pyx_t_19 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2190, __pyx_L11_except_error)
+02191: address -= <addr_t>-offset
__pyx_v_address = (__pyx_v_address - ((addr_t)(-__pyx_v_offset)));
+02192: elif offset > 0:
__pyx_t_18 = ((__pyx_v_offset > 0) != 0); if (__pyx_t_18) { /* … */ } __pyx_L19:;
+02193: CheckAddAddrU(address, <addr_t>offset)
__pyx_t_19 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address, ((addr_t)__pyx_v_offset)); if (unlikely(__pyx_t_19 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2193, __pyx_L11_except_error)
+02194: address += <addr_t>offset
__pyx_v_address = (__pyx_v_address + ((addr_t)__pyx_v_offset));
+02195: that.blocks[index] = Block_FromObject(address, data, True)
__pyx_t_20 = __pyx_f_11cbytesparse_1c_Block_FromObject(__pyx_v_address, __pyx_v_data, 1); if (unlikely(__pyx_t_20 == ((Block_ *)NULL))) __PYX_ERR(0, 2195, __pyx_L11_except_error)
(__pyx_v_that->blocks[__pyx_v_index]) = __pyx_t_20;
+02196: index += 1
__pyx_v_index = (__pyx_v_index + 1);
+02197: return that
__pyx_r = __pyx_v_that; goto __pyx_L7_try_return;
02198:
+02199: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Rack_FromObject", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_12, &__pyx_t_10) < 0) __PYX_ERR(0, 2199, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_10);
+02200: that = Rack_Free(that)
__pyx_v_that = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_that);
+02201: raise
__Pyx_GIVEREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ErrRestoreWithState(__pyx_t_14, __pyx_t_12, __pyx_t_10); __pyx_t_14 = 0; __pyx_t_12 = 0; __pyx_t_10 = 0; __PYX_ERR(0, 2201, __pyx_L5_except_error) } __pyx_L5_except_error:;
02202:
02203:
+02204: cdef void Rack_Reverse(Rack_* that) nogil:
static void __pyx_f_11cbytesparse_1c_Rack_Reverse(Rack_ *__pyx_v_that) { size_t __pyx_v_index_start; size_t __pyx_v_index_endex; size_t __pyx_v_index_endin; Block_ *__pyx_v_block; /* … */ /* function exit code */ }
02205: cdef:
+02206: size_t index_start = that.start
__pyx_t_1 = __pyx_v_that->start; __pyx_v_index_start = __pyx_t_1;
+02207: size_t index_endex = that.endex
__pyx_t_1 = __pyx_v_that->endex; __pyx_v_index_endex = __pyx_t_1;
02208: size_t index_endin
02209: Block_* block
02210:
+02211: while index_start < index_endex:
while (1) { __pyx_t_2 = ((__pyx_v_index_start < __pyx_v_index_endex) != 0); if (!__pyx_t_2) break;
+02212: index_endin = index_endex - 1
__pyx_v_index_endin = (__pyx_v_index_endex - 1);
+02213: block = that.blocks[index_start]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_index_start]);
+02214: that.blocks[index_start] = that.blocks[index_endin]
(__pyx_v_that->blocks[__pyx_v_index_start]) = (__pyx_v_that->blocks[__pyx_v_index_endin]);
+02215: that.blocks[index_endin] = block
(__pyx_v_that->blocks[__pyx_v_index_endin]) = __pyx_v_block;
+02216: index_endex = index_endin
__pyx_v_index_endex = __pyx_v_index_endin;
+02217: index_start += 1
__pyx_v_index_start = (__pyx_v_index_start + 1); }
02218:
02219:
+02220: cdef bint Rack_Bool(const Rack_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Rack_Bool(Rack_ const *__pyx_v_that) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02221: return that.start < that.endex
__pyx_r = (__pyx_v_that->start < __pyx_v_that->endex); goto __pyx_L0;
02222:
02223:
+02224: cdef size_t Rack_Length(const Rack_* that) nogil:
static size_t __pyx_f_11cbytesparse_1c_Rack_Length(Rack_ const *__pyx_v_that) { size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02225: return that.endex - that.start
__pyx_r = (__pyx_v_that->endex - __pyx_v_that->start); goto __pyx_L0;
02226:
02227:
+02228: cdef (addr_t, addr_t) Rack_BoundSlice(const Rack_* that, addr_t start, addr_t endex) nogil:
static __pyx_ctuple_addr_t__and_addr_t __pyx_f_11cbytesparse_1c_Rack_BoundSlice(Rack_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex) { Block_ const *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; __pyx_ctuple_addr_t__and_addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
02229: cdef:
02230: const Block_* block
02231: addr_t block_start
02232: addr_t block_endex
02233:
+02234: if that.start < that.endex:
__pyx_t_1 = ((__pyx_v_that->start < __pyx_v_that->endex) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+02235: block = that.blocks[that.start]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_that->start]);
+02236: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+02237: if start < block_start:
__pyx_t_1 = ((__pyx_v_start < __pyx_v_block_start) != 0); if (__pyx_t_1) { /* … */ }
+02238: start = block_start
__pyx_v_start = __pyx_v_block_start;
+02239: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+02240: endex = start
__pyx_v_endex = __pyx_v_start;
02241:
+02242: block = that.blocks[that.endex - 1]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]);
+02243: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+02244: if endex > block_endex:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_block_endex) != 0); if (__pyx_t_1) { /* … */ }
+02245: endex = block_endex
__pyx_v_endex = __pyx_v_block_endex;
+02246: if start > endex:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_endex) != 0); if (__pyx_t_1) { /* … */ }
+02247: start = endex
__pyx_v_start = __pyx_v_endex;
02248: else:
+02249: start = 0
/*else*/ { __pyx_v_start = 0;
+02250: endex = 0
__pyx_v_endex = 0; } __pyx_L3:;
02251:
+02252: return start, endex
__pyx_t_2.f0 = __pyx_v_start; __pyx_t_2.f1 = __pyx_v_endex; __pyx_r = __pyx_t_2; goto __pyx_L0;
02253:
02254:
+02255: cdef Rack_* Rack_Shift_(Rack_* that, addr_t offset) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Shift_(Rack_ *__pyx_v_that, addr_t __pyx_v_offset) { size_t __pyx_v_index; Block_ *__pyx_v_block; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Shift_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Shift_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02256: cdef:
02257: size_t index
02258: Block_* block
02259:
+02260: if offset:
__pyx_t_1 = (__pyx_v_offset != 0); if (__pyx_t_1) { /* … */ }
+02261: if that.start < that.endex:
__pyx_t_1 = ((__pyx_v_that->start < __pyx_v_that->endex) != 0); if (__pyx_t_1) { /* … */ }
+02262: block = that.blocks[that.endex - 1]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]);
+02263: CheckAddAddrU(block.address, offset)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block->address, __pyx_v_offset); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2263, __pyx_L1_error)
02264:
+02265: for index in range(that.start, that.endex):
__pyx_t_3 = __pyx_v_that->endex; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = __pyx_v_that->start; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_index = __pyx_t_5;
+02266: block = that.blocks[index]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_index]);
+02267: block.address += offset
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_offset); }
+02268: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02269:
02270:
+02271: cdef Rack_* Rack_Shift(Rack_* that, saddr_t offset) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Shift(Rack_ *__pyx_v_that, saddr_t __pyx_v_offset) { size_t __pyx_v_index; Block_ *__pyx_v_block; addr_t __pyx_v_offset_; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Shift", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Shift", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02272: cdef:
02273: size_t index
02274: Block_* block
02275: addr_t offset_
02276:
+02277: if offset:
__pyx_t_1 = (__pyx_v_offset != 0); if (__pyx_t_1) { /* … */ }
+02278: if that.start < that.endex:
__pyx_t_1 = ((__pyx_v_that->start < __pyx_v_that->endex) != 0); if (__pyx_t_1) { /* … */ }
+02279: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+02280: block = that.blocks[that.start]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_that->start]);
+02281: offset_ = <addr_t>-offset
__pyx_v_offset_ = ((addr_t)(-__pyx_v_offset));
+02282: CheckSubAddrU(block.address, offset_)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_block->address, __pyx_v_offset_); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2282, __pyx_L1_error)
02283:
+02284: for index in range(that.start, that.endex):
__pyx_t_3 = __pyx_v_that->endex; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = __pyx_v_that->start; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_index = __pyx_t_5;
+02285: block = that.blocks[index]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_index]);
+02286: block.address -= offset_
__pyx_v_block->address = (__pyx_v_block->address - __pyx_v_offset_); }
02287: else:
+02288: block = that.blocks[that.endex - 1]
/*else*/ { __pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]);
+02289: offset_ = <addr_t>offset
__pyx_v_offset_ = ((addr_t)__pyx_v_offset);
+02290: CheckAddAddrU(block.address, offset_)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block->address, __pyx_v_offset_); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2290, __pyx_L1_error)
02291:
+02292: for index in range(that.start, that.endex):
__pyx_t_3 = __pyx_v_that->endex; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = __pyx_v_that->start; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_index = __pyx_t_5;
+02293: block = that.blocks[index]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_index]);
+02294: block.address += offset_
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_offset_); } } __pyx_L5:;
+02295: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02296:
02297:
+02298: cdef bint Rack_Eq(const Rack_* that, const Rack_* other) except -1:
static int __pyx_f_11cbytesparse_1c_Rack_Eq(Rack_ const *__pyx_v_that, Rack_ const *__pyx_v_other) { size_t __pyx_v_block_count; size_t __pyx_v_block_index; Block_ const *__pyx_v_block1; Block_ const *__pyx_v_block2; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Eq", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02299: cdef:
+02300: size_t block_count = that.endex - that.start
__pyx_v_block_count = (__pyx_v_that->endex - __pyx_v_that->start);
02301: size_t block_index
02302: const Block_* block1
02303: const Block_* block2
02304:
+02305: if block_count != other.endex - other.start:
__pyx_t_1 = ((__pyx_v_block_count != (__pyx_v_other->endex - __pyx_v_other->start)) != 0); if (__pyx_t_1) { /* … */ }
+02306: return False
__pyx_r = 0; goto __pyx_L0;
02307:
+02308: for block_index in range(block_count):
__pyx_t_2 = __pyx_v_block_count; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_block_index = __pyx_t_4;
+02309: block1 = Rack_Get__(that, block_index)
__pyx_v_block1 = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_that, __pyx_v_block_index);
+02310: block2 = Rack_Get__(other, block_index)
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_other, __pyx_v_block_index);
02311:
+02312: if block1.address != block2.address:
__pyx_t_1 = ((__pyx_v_block1->address != __pyx_v_block2->address) != 0); if (__pyx_t_1) { /* … */ }
+02313: return False
__pyx_r = 0; goto __pyx_L0;
02314:
+02315: if not Block_Eq(block1, block2):
__pyx_t_1 = ((!(__pyx_f_11cbytesparse_1c_Block_Eq(__pyx_v_block1, __pyx_v_block2) != 0)) != 0); if (__pyx_t_1) { /* … */ } }
+02316: return False
__pyx_r = 0; goto __pyx_L0;
02317:
+02318: return True
__pyx_r = 1; goto __pyx_L0;
02319:
02320:
+02321: cdef Rack_* Rack_Reserve_(Rack_* that, size_t offset, size_t size) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Reserve_(Rack_ *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size) { size_t __pyx_v_actual; size_t __pyx_v_used; size_t __pyx_v_allocated; Rack_ *__pyx_v_ptr; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Reserve_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Rack_Reserve_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02322: cdef:
02323: size_t actual
02324: size_t used
02325: size_t margin
02326: size_t allocated
02327: Rack_* ptr
02328: size_t index
02329: Block_* node
02330:
+02331: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+02332: if ((size > SIZE_HMAX or
__pyx_t_2 = ((__pyx_v_size > SIZE_HMAX) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } /* … */ if (unlikely(__pyx_t_1)) { /* … */ }
+02333: CannotAddSizeU(that.endex, size) or
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_CannotAddSizeU(__pyx_v_that->endex, __pyx_v_size) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; }
+02334: that.endex + size > SIZE_HMAX)):
__pyx_t_2 = (((__pyx_v_that->endex + __pyx_v_size) > SIZE_HMAX) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:;
+02335: raise OverflowError('size overflow')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 2335, __pyx_L1_error)
02336:
+02337: used = that.endex - that.start
__pyx_v_used = (__pyx_v_that->endex - __pyx_v_that->start);
+02338: if offset > used:
__pyx_t_1 = ((__pyx_v_offset > __pyx_v_used) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02339: raise IndexError('index out of range')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 2339, __pyx_L1_error)
02340:
02341: # Prefer the side where there is less data to shift, which also favors the extremes
+02342: if offset >= (used >> 1):
__pyx_t_1 = ((__pyx_v_offset >= (__pyx_v_used >> 1)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L9; }
+02343: if size > that.allocated - that.endex:
__pyx_t_1 = ((__pyx_v_size > (__pyx_v_that->allocated - __pyx_v_that->endex)) != 0); if (__pyx_t_1) { /* … */ }
02344: # Calculate the upsized allocation
+02345: allocated = Upsize(that.allocated, that.allocated + size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Upsize(__pyx_v_that->allocated, (__pyx_v_that->allocated + __pyx_v_size));
+02346: if allocated > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02347: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2347, __pyx_L1_error)
02348:
02349: # Reallocate, including the header
+02350: ptr = <Rack_*>PyMem_Realloc(that, Rack_HEADING + (allocated * sizeof(Block_*)))
__pyx_v_ptr = ((Rack_ *)PyMem_Realloc(__pyx_v_that, (Rack_HEADING + (__pyx_v_allocated * (sizeof(Block_ *))))));
+02351: if ptr == NULL:
__pyx_t_1 = ((__pyx_v_ptr == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02352: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2352, __pyx_L1_error)
02353:
02354: # Reassign to that
+02355: that = ptr
__pyx_v_that = __pyx_v_ptr;
+02356: that.allocated = allocated # update
__pyx_v_that->allocated = __pyx_v_allocated;
02357:
02358: # Shift elements to make room for reservation at the requested offset
+02359: CheckAddSizeU(offset, that.start)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_offset, __pyx_v_that->start); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2359, __pyx_L1_error)
+02360: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+02361: used = that.endex - offset
__pyx_v_used = (__pyx_v_that->endex - __pyx_v_offset);
+02362: if used:
__pyx_t_1 = (__pyx_v_used != 0); if (__pyx_t_1) { /* … */ }
+02363: memmove(&that.blocks[offset + size],
(void)(memmove((&(__pyx_v_that->blocks[(__pyx_v_offset + __pyx_v_size)])), (&(__pyx_v_that->blocks[__pyx_v_offset])), (__pyx_v_used * (sizeof(Block_ *)))));
02364: &that.blocks[offset],
02365: used * sizeof(Block_*))
02366:
+02367: memset(&that.blocks[offset], 0, size * sizeof(Block_*)) # pad with zeros
(void)(memset((&(__pyx_v_that->blocks[__pyx_v_offset])), 0, (__pyx_v_size * (sizeof(Block_ *)))));
+02368: that.endex += size
__pyx_v_that->endex = (__pyx_v_that->endex + __pyx_v_size);
02369:
02370: else:
+02371: if size <= that.start:
/*else*/ { __pyx_t_1 = ((__pyx_v_size <= __pyx_v_that->start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L14; }
02372: # Shift elements to make room for reservation at the requested offset
+02373: that.start -= size
__pyx_v_that->start = (__pyx_v_that->start - __pyx_v_size);
+02374: if offset:
__pyx_t_1 = (__pyx_v_offset != 0); if (__pyx_t_1) { /* … */ }
+02375: memmove(&that.blocks[that.start],
(void)(memmove((&(__pyx_v_that->blocks[__pyx_v_that->start])), (&(__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_size)])), (__pyx_v_offset * (sizeof(Block_ *)))));
02376: &that.blocks[that.start + size],
02377: offset * sizeof(Block_*))
02378:
+02379: memset(&that.blocks[that.start + offset], 0, size * sizeof(Block_*)) # pad with zeros
(void)(memset((&(__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_offset)])), 0, (__pyx_v_size * (sizeof(Block_ *)))));
02380:
02381: else:
02382: # Calculate the upsized allocation
+02383: CheckAddSizeU(that.allocated, size)
/*else*/ {
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->allocated, __pyx_v_size); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2383, __pyx_L1_error)
+02384: allocated = Upsize(that.allocated, that.allocated + size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Upsize(__pyx_v_that->allocated, (__pyx_v_that->allocated + __pyx_v_size));
+02385: if allocated > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02386: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2386, __pyx_L1_error)
02387:
02388: # Allocate a new chunk, including the header
+02389: actual = Rack_HEADING + (allocated * sizeof(Block_*))
__pyx_v_actual = (Rack_HEADING + (__pyx_v_allocated * (sizeof(Block_ *))));
+02390: ptr = <Rack_*>PyMem_Calloc(actual, 1)
__pyx_v_ptr = ((Rack_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(__pyx_v_actual, 1));
+02391: if ptr == NULL:
__pyx_t_1 = ((__pyx_v_ptr == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02392: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2392, __pyx_L1_error)
02393:
02394: # Prepare the new chunk aligning towards the end
+02395: ptr.allocated = allocated
__pyx_v_ptr->allocated = __pyx_v_allocated;
+02396: ptr.endex = ptr.allocated - MARGIN # leave some room
__pyx_v_ptr->endex = (__pyx_v_ptr->allocated - MARGIN);
+02397: ptr.start = ptr.endex - used - size
__pyx_v_ptr->start = ((__pyx_v_ptr->endex - __pyx_v_used) - __pyx_v_size);
02398:
02399: # Shift/copy elements to make room for reservation at the requested offset
+02400: if offset:
__pyx_t_1 = (__pyx_v_offset != 0); if (__pyx_t_1) { /* … */ }
+02401: used -= offset # prepare for later
__pyx_v_used = (__pyx_v_used - __pyx_v_offset);
+02402: memcpy(&ptr.blocks[ptr.start],
(void)(memcpy((&(__pyx_v_ptr->blocks[__pyx_v_ptr->start])), (&(__pyx_v_that->blocks[__pyx_v_that->start])), (__pyx_v_offset * (sizeof(Block_ *)))));
02403: &that.blocks[that.start],
02404: offset * sizeof(Block_*))
+02405: if used:
__pyx_t_1 = (__pyx_v_used != 0); if (__pyx_t_1) { /* … */ }
+02406: memcpy(&ptr.blocks[ptr.start + offset + size],
(void)(memcpy((&(__pyx_v_ptr->blocks[((__pyx_v_ptr->start + __pyx_v_offset) + __pyx_v_size)])), (&(__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_offset)])), (__pyx_v_used * (sizeof(Block_ *)))));
02407: &that.blocks[that.start + offset],
02408: used * sizeof(Block_*))
02409:
02410: # Reassign to that
+02411: PyMem_Free(that)
PyMem_Free(__pyx_v_that);
+02412: that = ptr
__pyx_v_that = __pyx_v_ptr; } __pyx_L14:; } __pyx_L9:;
02413:
+02414: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02415:
02416:
+02417: cdef Rack_* Rack_Delete_(Rack_* that, size_t offset, size_t size) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Delete_(Rack_ *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size) { size_t __pyx_v_allocated; Rack_ *__pyx_v_ptr; size_t __pyx_v_index; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Delete_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Rack_Delete_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02418: cdef:
02419: size_t allocated
02420: Rack_* ptr
02421: size_t index
02422: Block_* node
02423:
+02424: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+02425: if ((size > SIZE_HMAX or
__pyx_t_2 = ((__pyx_v_size > SIZE_HMAX) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } /* … */ if (unlikely(__pyx_t_1)) { /* … */ }
+02426: CannotAddSizeU(offset, size) or
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_CannotAddSizeU(__pyx_v_offset, __pyx_v_size) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; }
+02427: offset + size > SIZE_HMAX or
__pyx_t_2 = (((__pyx_v_offset + __pyx_v_size) > SIZE_HMAX) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; }
+02428: CannotAddSizeU(offset, that.start) or
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_CannotAddSizeU(__pyx_v_offset, __pyx_v_that->start) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; }
+02429: that.start > SIZE_HMAX)):
__pyx_t_2 = ((__pyx_v_that->start > SIZE_HMAX) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:;
+02430: raise OverflowError('size overflow')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 2430, __pyx_L1_error)
02431:
+02432: if that.endex < that.start + offset + size:
__pyx_t_1 = ((__pyx_v_that->endex < ((__pyx_v_that->start + __pyx_v_offset) + __pyx_v_size)) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02433: raise IndexError('index out of range')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2433, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 2433, __pyx_L1_error)
02434:
02435: # Calculate the downsized allocation
+02436: allocated = Downsize(that.allocated, that.allocated - size)
__pyx_v_allocated = __pyx_f_11cbytesparse_1c_Downsize(__pyx_v_that->allocated, (__pyx_v_that->allocated - __pyx_v_size));
+02437: if allocated > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_allocated > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02438: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2438, __pyx_L1_error)
02439:
02440: # Release blocks within the deleted range
+02441: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+02442: for index in range(offset, offset + size):
__pyx_t_4 = (__pyx_v_offset + __pyx_v_size); __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = __pyx_v_offset; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_index = __pyx_t_6;
+02443: that.blocks[index] = Block_Release(that.blocks[index])
(__pyx_v_that->blocks[__pyx_v_index]) = __pyx_f_11cbytesparse_1c_Block_Release((__pyx_v_that->blocks[__pyx_v_index])); }
02444:
+02445: if offset == 0:
__pyx_t_1 = ((__pyx_v_offset == 0) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L14; }
+02446: if allocated == that.allocated:
__pyx_t_1 = ((__pyx_v_allocated == __pyx_v_that->allocated) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L15; }
02447: # Just skip initial if not reallocated and no offset
+02448: memset(&that.blocks[that.start], 0, size * sizeof(Block_*)) # cleanup margin
(void)(memset((&(__pyx_v_that->blocks[__pyx_v_that->start])), 0, (__pyx_v_size * (sizeof(Block_ *)))));
+02449: that.start += size
__pyx_v_that->start = (__pyx_v_that->start + __pyx_v_size);
02450: else:
02451: # Shift elements to make for the deleted gap at the beginning
+02452: offset += that.start
/*else*/ { __pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+02453: memmove(&that.blocks[MARGIN], # realign to initial MARGIN
(void)(memmove((&(__pyx_v_that->blocks[MARGIN])), (&(__pyx_v_that->blocks[(__pyx_v_offset + __pyx_v_size)])), ((__pyx_v_that->endex - (__pyx_v_offset + __pyx_v_size)) * (sizeof(Block_ *)))));
02454: &that.blocks[offset + size],
02455: (that.endex - (offset + size)) * sizeof(Block_*))
+02456: size = that.endex - that.start - size
__pyx_v_size = ((__pyx_v_that->endex - __pyx_v_that->start) - __pyx_v_size);
+02457: that.start = MARGIN
__pyx_v_that->start = MARGIN;
+02458: that.endex = MARGIN + size
__pyx_v_that->endex = (MARGIN + __pyx_v_size);
02459:
02460: # Cleanup margins
+02461: memset(&that.blocks[0], 0, that.start * sizeof(Block_*))
(void)(memset((&(__pyx_v_that->blocks[0])), 0, (__pyx_v_that->start * (sizeof(Block_ *)))));
+02462: memset(&that.blocks[that.endex], 0, (that.allocated - that.endex) * sizeof(Block_*))
(void)(memset((&(__pyx_v_that->blocks[__pyx_v_that->endex])), 0, ((__pyx_v_that->allocated - __pyx_v_that->endex) * (sizeof(Block_ *))))); } __pyx_L15:;
02463: else:
02464: # Shift elements to make for the deleted gap at the requested offset
+02465: memmove(&that.blocks[offset],
/*else*/ { /* … */ (void)(memmove((&(__pyx_v_that->blocks[__pyx_v_offset])), (&(__pyx_v_that->blocks[(__pyx_v_offset + __pyx_v_size)])), ((__pyx_v_that->endex - (__pyx_v_offset + __pyx_v_size)) * (sizeof(Block_ *)))));
02466: &that.blocks[offset + size],
02467: (that.endex - (offset + size)) * sizeof(Block_*))
+02468: that.endex -= size
__pyx_v_that->endex = (__pyx_v_that->endex - __pyx_v_size);
+02469: memset(&that.blocks[that.endex], 0, size * sizeof(Block_*)) # cleanup margin
(void)(memset((&(__pyx_v_that->blocks[__pyx_v_that->endex])), 0, (__pyx_v_size * (sizeof(Block_ *))))); } __pyx_L14:;
02470:
+02471: if allocated != that.allocated:
__pyx_t_1 = ((__pyx_v_allocated != __pyx_v_that->allocated) != 0); if (__pyx_t_1) { /* … */ }
02472: # Reallocate, including the header
+02473: ptr = <Rack_*>PyMem_Realloc(that, Rack_HEADING + (allocated * sizeof(Block_*)))
__pyx_v_ptr = ((Rack_ *)PyMem_Realloc(__pyx_v_that, (Rack_HEADING + (__pyx_v_allocated * (sizeof(Block_ *))))));
+02474: if ptr == NULL:
__pyx_t_1 = ((__pyx_v_ptr == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02475: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 2475, __pyx_L1_error)
02476:
02477: # Reassign to that
+02478: that = ptr
__pyx_v_that = __pyx_v_ptr;
+02479: that.allocated = allocated
__pyx_v_that->allocated = __pyx_v_allocated;
02480:
+02481: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02482:
02483:
+02484: cdef Rack_* Rack_Clear(Rack_* that) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Clear(Rack_ *__pyx_v_that) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Clear", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02485: return Rack_Delete_(that, 0, that.endex - that.start)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Delete_(__pyx_v_that, 0, (__pyx_v_that->endex - __pyx_v_that->start)); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2485, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
02486:
02487:
+02488: cdef Rack_* Rack_Consolidate(Rack_* that) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Consolidate(Rack_ *__pyx_v_that) { size_t __pyx_v_offset; Block_ *__pyx_v_block; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Consolidate", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Consolidate", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02489: cdef:
02490: size_t offset
02491: Block_* block
02492:
+02493: for offset in range(that.start, that.endex):
__pyx_t_1 = __pyx_v_that->endex; __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = __pyx_v_that->start; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_offset = __pyx_t_3;
+02494: block = that.blocks[offset]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_offset]);
+02495: if block.references > 1:
__pyx_t_4 = ((__pyx_v_block->references > 1) != 0); if (__pyx_t_4) { /* … */ } }
+02496: that.blocks[offset] = Block_Copy(block)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_Copy(__pyx_v_block); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 2496, __pyx_L1_error)
(__pyx_v_that->blocks[__pyx_v_offset]) = __pyx_t_5;
+02497: block = Block_Release(block)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_block);
+02498: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02499:
02500:
+02501: cdef Block_** Rack_At_(Rack_* that, size_t offset) nogil:
static Block_ **__pyx_f_11cbytesparse_1c_Rack_At_(Rack_ *__pyx_v_that, size_t __pyx_v_offset) { Block_ **__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02502: return &that.blocks[that.start + offset]
__pyx_r = (&(__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_offset)])); goto __pyx_L0;
02503:
02504:
+02505: cdef const Block_** Rack_At__(const Rack_* that, size_t offset) nogil:
static Block_ const **__pyx_f_11cbytesparse_1c_Rack_At__(Rack_ const *__pyx_v_that, size_t __pyx_v_offset) { Block_ const **__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02506: return <const Block_**>&that.blocks[that.start + offset]
__pyx_r = ((Block_ const **)(&(__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_offset)]))); goto __pyx_L0;
02507:
02508:
+02509: cdef Block_* Rack_First_(Rack_* that) nogil:
static Block_ *__pyx_f_11cbytesparse_1c_Rack_First_(Rack_ *__pyx_v_that) { Block_ *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02510: return that.blocks[that.start]
__pyx_r = (__pyx_v_that->blocks[__pyx_v_that->start]); goto __pyx_L0;
02511:
02512:
+02513: cdef const Block_* Rack_First__(const Rack_* that) nogil:
static Block_ const *__pyx_f_11cbytesparse_1c_Rack_First__(Rack_ const *__pyx_v_that) { Block_ const *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02514: return that.blocks[that.start]
__pyx_r = (__pyx_v_that->blocks[__pyx_v_that->start]); goto __pyx_L0;
02515:
02516:
+02517: cdef Block_* Rack_Last_(Rack_* that) nogil:
static Block_ *__pyx_f_11cbytesparse_1c_Rack_Last_(Rack_ *__pyx_v_that) { Block_ *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02518: return that.blocks[that.endex - 1]
__pyx_r = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]); goto __pyx_L0;
02519:
02520:
+02521: cdef const Block_* Rack_Last__(const Rack_* that) nogil:
static Block_ const *__pyx_f_11cbytesparse_1c_Rack_Last__(Rack_ const *__pyx_v_that) { Block_ const *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02522: return that.blocks[that.endex - 1]
__pyx_r = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]); goto __pyx_L0;
02523:
02524:
+02525: cdef Block_* Rack_Get__(const Rack_* that, size_t offset) nogil:
static Block_ *__pyx_f_11cbytesparse_1c_Rack_Get__(Rack_ const *__pyx_v_that, size_t __pyx_v_offset) { Block_ *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+02526: return that.blocks[that.start + offset]
__pyx_r = (__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_offset)]); goto __pyx_L0;
02527:
02528:
+02529: cdef Block_* Rack_Get_(const Rack_* that, size_t offset) except? NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Rack_Get_(Rack_ const *__pyx_v_that, size_t __pyx_v_offset) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Get_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Rack_Get_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02530: CheckAddSizeU(that.start, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2530, __pyx_L1_error)
+02531: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
02532:
+02533: if offset < that.endex:
__pyx_t_2 = ((__pyx_v_offset < __pyx_v_that->endex) != 0); if (likely(__pyx_t_2)) { /* … */ }
+02534: return that.blocks[offset]
__pyx_r = (__pyx_v_that->blocks[__pyx_v_offset]); goto __pyx_L0;
02535: else:
+02536: raise IndexError('index out of range')
/*else*/ { __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 2536, __pyx_L1_error) }
02537:
02538:
+02539: cdef Block_* Rack_Get(const Rack_* that, ssize_t offset) except? NULL:
static Block_ *__pyx_f_11cbytesparse_1c_Rack_Get(Rack_ const *__pyx_v_that, Py_ssize_t __pyx_v_offset) { Block_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Get", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_Get", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02540: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
+02541: offset += <ssize_t>(that.endex - that.start) # anchor to end
__pyx_v_offset = (__pyx_v_offset + ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start)));
+02542: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02543: raise IndexError('index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2543, __pyx_L1_error)
02544:
+02545: return Rack_Get_(that, <size_t>offset)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_that, ((size_t)__pyx_v_offset)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 2545, __pyx_L1_error) __pyx_r = __pyx_t_3; goto __pyx_L0;
02546:
02547:
+02548: cdef Block_* Rack_Set__(Rack_* that, size_t offset, Block_* value) nogil:
static Block_ *__pyx_f_11cbytesparse_1c_Rack_Set__(Rack_ *__pyx_v_that, size_t __pyx_v_offset, Block_ *__pyx_v_value) { Block_ *__pyx_v_backup; Block_ *__pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
02549: cdef:
02550: Block_* backup
02551:
+02552: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
+02553: backup = that.blocks[offset]
__pyx_v_backup = (__pyx_v_that->blocks[__pyx_v_offset]);
+02554: that.blocks[offset] = value
(__pyx_v_that->blocks[__pyx_v_offset]) = __pyx_v_value;
+02555: return backup
__pyx_r = __pyx_v_backup; goto __pyx_L0;
02556:
02557:
+02558: cdef vint Rack_Set_(Rack_* that, size_t offset, Block_* value, Block_** backup) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Rack_Set_(Rack_ *__pyx_v_that, size_t __pyx_v_offset, Block_ *__pyx_v_value, Block_ **__pyx_v_backup) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Set_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Rack_Set_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02559: CheckAddSizeU(that.start, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2559, __pyx_L1_error)
+02560: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
02561:
+02562: if offset < that.endex:
__pyx_t_2 = ((__pyx_v_offset < __pyx_v_that->endex) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+02563: if backup:
__pyx_t_2 = (__pyx_v_backup != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+02564: backup[0] = that.blocks[offset]
(__pyx_v_backup[0]) = (__pyx_v_that->blocks[__pyx_v_offset]);
02565: else:
+02566: that.blocks[offset] = Block_Release(that.blocks[offset])
/*else*/ { (__pyx_v_that->blocks[__pyx_v_offset]) = __pyx_f_11cbytesparse_1c_Block_Release((__pyx_v_that->blocks[__pyx_v_offset])); } __pyx_L4:;
+02567: that.blocks[offset] = value
(__pyx_v_that->blocks[__pyx_v_offset]) = __pyx_v_value;
02568: else:
+02569: if backup:
/*else*/ { __pyx_t_2 = (__pyx_v_backup != 0); if (__pyx_t_2) { /* … */ }
+02570: backup[0] = NULL
(__pyx_v_backup[0]) = NULL;
+02571: raise IndexError('index out of range')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 2571, __pyx_L1_error) } __pyx_L3:;
02572:
02573:
+02574: cdef vint Rack_Set(Rack_* that, ssize_t offset, Block_* value, Block_** backup) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Rack_Set(Rack_ *__pyx_v_that, Py_ssize_t __pyx_v_offset, Block_ *__pyx_v_value, Block_ **__pyx_v_backup) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Set", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_Set", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02575: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
+02576: offset += <ssize_t>(that.endex - that.start) # anchor to end
__pyx_v_offset = (__pyx_v_offset + ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start)));
+02577: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02578: raise IndexError('index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2578, __pyx_L1_error)
02579:
+02580: Rack_Set_(that, <size_t>offset, value, backup)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Set_(__pyx_v_that, ((size_t)__pyx_v_offset), __pyx_v_value, __pyx_v_backup); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2580, __pyx_L1_error)
02581:
02582:
+02583: cdef Rack_* Rack_Pop__(Rack_* that, Block_** value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Pop__(Rack_ *__pyx_v_that, Block_ **__pyx_v_value) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Pop__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Rack_Pop__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02584: if that.start < that.endex:
__pyx_t_1 = ((__pyx_v_that->start < __pyx_v_that->endex) != 0); if (__pyx_t_1) { /* … */ }
+02585: if value:
__pyx_t_1 = (__pyx_v_value != 0); if (__pyx_t_1) { /* … */ }
+02586: value[0] = Block_Acquire(that.blocks[that.endex - 1]) # backup
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_that->blocks[(__pyx_v_that->endex - 1)])); if (unlikely(__pyx_t_2 == ((Block_ *)NULL))) __PYX_ERR(0, 2586, __pyx_L1_error)
(__pyx_v_value[0]) = __pyx_t_2;
02587:
+02588: return Rack_Delete_(that, that.endex - that.start - 1, 1)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Delete_(__pyx_v_that, ((__pyx_v_that->endex - __pyx_v_that->start) - 1), 1); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2588, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
02589: else:
+02590: if value:
/*else*/ { __pyx_t_1 = (__pyx_v_value != 0); if (__pyx_t_1) { /* … */ }
+02591: value[0] = NULL
(__pyx_v_value[0]) = NULL;
+02592: raise IndexError('pop index out of range')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 2592, __pyx_L1_error) }
02593:
02594:
+02595: cdef Rack_* Rack_Pop_(Rack_* that, size_t offset, Block_** value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Pop_(Rack_ *__pyx_v_that, size_t __pyx_v_offset, Block_ **__pyx_v_value) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Pop_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Rack_Pop_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02596: CheckAddSizeU(that.start, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2596, __pyx_L1_error)
02597:
+02598: if that.start + offset < that.endex:
__pyx_t_2 = (((__pyx_v_that->start + __pyx_v_offset) < __pyx_v_that->endex) != 0); if (__pyx_t_2) { /* … */ }
+02599: if value:
__pyx_t_2 = (__pyx_v_value != 0); if (__pyx_t_2) { /* … */ }
+02600: value[0] = Block_Acquire(that.blocks[that.start + offset]) # backup
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_offset)])); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 2600, __pyx_L1_error)
(__pyx_v_value[0]) = __pyx_t_3;
02601:
+02602: return Rack_Delete_(that, offset, 1)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Rack_Delete_(__pyx_v_that, __pyx_v_offset, 1); if (unlikely(__pyx_t_4 == ((Rack_ *)NULL))) __PYX_ERR(0, 2602, __pyx_L1_error)
__pyx_r = __pyx_t_4;
goto __pyx_L0;
02603: else:
+02604: if value:
/*else*/ { __pyx_t_2 = (__pyx_v_value != 0); if (__pyx_t_2) { /* … */ }
+02605: value[0] = NULL
(__pyx_v_value[0]) = NULL;
+02606: raise IndexError('pop index out of range')
__pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(0, 2606, __pyx_L1_error) }
02607:
02608:
+02609: cdef Rack_* Rack_Pop(Rack_* that, ssize_t offset, Block_** value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Pop(Rack_ *__pyx_v_that, Py_ssize_t __pyx_v_offset, Block_ **__pyx_v_value) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Pop", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_Pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02610: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
+02611: offset += <ssize_t>(that.endex - that.start) # anchor to end
__pyx_v_offset = (__pyx_v_offset + ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start)));
+02612: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02613: raise IndexError('pop index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2613, __pyx_L1_error)
02614:
+02615: return Rack_Pop_(that, <size_t>offset, value)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Pop_(__pyx_v_that, ((size_t)__pyx_v_offset), __pyx_v_value); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2615, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
02616:
02617:
+02618: cdef Rack_* Rack_PopLeft(Rack_* that, Block_** value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_PopLeft(Rack_ *__pyx_v_that, Block_ **__pyx_v_value) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_PopLeft", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_PopLeft", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02619: return Rack_Pop_(that, 0, value)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Pop_(__pyx_v_that, 0, __pyx_v_value); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2619, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
02620:
02621:
+02622: cdef Rack_* Rack_Insert_(Rack_* that, size_t offset, Block_* value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Insert_(Rack_ *__pyx_v_that, size_t __pyx_v_offset, Block_ *__pyx_v_value) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Insert_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Insert_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02623: # Insert the value at the requested offset
+02624: that = Rack_Reserve_(that, offset, 1)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, __pyx_v_offset, 1); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2624, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+02625: that.blocks[that.start + offset] = value
(__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_offset)]) = __pyx_v_value;
+02626: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02627:
02628:
+02629: cdef Rack_* Rack_Insert(Rack_* that, ssize_t offset, Block_* value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Insert(Rack_ *__pyx_v_that, Py_ssize_t __pyx_v_offset, Block_ *__pyx_v_value) { Py_ssize_t __pyx_v_size; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Insert", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02630: cdef:
+02631: ssize_t size = <ssize_t>(that.endex - that.start)
__pyx_v_size = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
02632:
+02633: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+02634: offset += size # anchor to end
__pyx_v_offset = (__pyx_v_offset + __pyx_v_size);
+02635: if offset < 0:
__pyx_t_1 = ((__pyx_v_offset < 0) != 0); if (__pyx_t_1) { /* … */ }
02636: # raise IndexError('index out of range')
+02637: offset = 0 # as per bytearray.insert
__pyx_v_offset = 0;
02638:
+02639: elif offset > size:
__pyx_t_1 = ((__pyx_v_offset > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L3:;
02640: # raise IndexError('index out of range')
+02641: offset = size # as per bytearray.insert
__pyx_v_offset = __pyx_v_size;
02642:
+02643: return Rack_Insert_(that, <size_t>offset, value)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Insert_(__pyx_v_that, ((size_t)__pyx_v_offset), __pyx_v_value); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 2643, __pyx_L1_error)
__pyx_r = __pyx_t_2;
goto __pyx_L0;
02644:
02645:
+02646: cdef Rack_* Rack_Append(Rack_* that, Block_* value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Append(Rack_ *__pyx_v_that, Block_ *__pyx_v_value) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Append", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Append", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02647: # Insert the value after the end
+02648: that = Rack_Reserve_(that, that.endex - that.start, 1)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, (__pyx_v_that->endex - __pyx_v_that->start), 1); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2648, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+02649: that.blocks[that.endex - 1] = value
(__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]) = __pyx_v_value;
+02650: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02651:
02652:
+02653: cdef Rack_* Rack_AppendLeft(Rack_* that, Block_* value) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_AppendLeft(Rack_ *__pyx_v_that, Block_ *__pyx_v_value) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_AppendLeft", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_AppendLeft", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02654: # Insert the value after the end
+02655: that = Rack_Reserve_(that, 0, 1)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, 0, 1); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2655, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+02656: that.blocks[that.start] = value
(__pyx_v_that->blocks[__pyx_v_that->start]) = __pyx_v_value;
+02657: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02658:
02659:
+02660: cdef Rack_* Rack_Extend_(Rack_* that, size_t size, Block_** buffer, bint direct) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Extend_(Rack_ *__pyx_v_that, size_t __pyx_v_size, Block_ **__pyx_v_buffer, int __pyx_v_direct) { size_t __pyx_v_start; size_t __pyx_v_offset; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Extend_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Extend_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02661: cdef:
02662: size_t start
02663: size_t offset
02664:
+02665: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+02666: that = Rack_Reserve_(that, that.endex - that.start, size)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, (__pyx_v_that->endex - __pyx_v_that->start), __pyx_v_size); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 2666, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+02667: if direct:
__pyx_t_1 = (__pyx_v_direct != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+02668: memmove(&that.blocks[that.endex - size], buffer, size * sizeof(Block_*))
(void)(memmove((&(__pyx_v_that->blocks[(__pyx_v_that->endex - __pyx_v_size)])), __pyx_v_buffer, (__pyx_v_size * (sizeof(Block_ *)))));
02669: else:
+02670: start = that.endex - size
/*else*/ { __pyx_v_start = (__pyx_v_that->endex - __pyx_v_size);
+02671: for offset in range(size):
__pyx_t_3 = __pyx_v_size; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_offset = __pyx_t_5;
+02672: that.blocks[start + offset] = Block_Acquire(buffer[offset])
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_buffer[__pyx_v_offset])); if (unlikely(__pyx_t_6 == ((Block_ *)NULL))) __PYX_ERR(0, 2672, __pyx_L1_error)
(__pyx_v_that->blocks[(__pyx_v_start + __pyx_v_offset)]) = __pyx_t_6;
}
}
__pyx_L4:;
+02673: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02674:
02675:
+02676: cdef Rack_* Rack_Extend(Rack_* that, Rack_* more) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Extend(Rack_ *__pyx_v_that, Rack_ *__pyx_v_more) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Extend", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Extend", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02677: that = Rack_Extend_(that, more.endex - more.start, &more.blocks[more.start], False)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Extend_(__pyx_v_that, (__pyx_v_more->endex - __pyx_v_more->start), (&(__pyx_v_more->blocks[__pyx_v_more->start])), 0); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2677, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+02678: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02679:
02680:
+02681: cdef Rack_* Rack_ExtendLeft_(Rack_* that, size_t size, Block_** buffer, bint direct) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_ExtendLeft_(Rack_ *__pyx_v_that, size_t __pyx_v_size, Block_ **__pyx_v_buffer, int __pyx_v_direct) { size_t __pyx_v_start; size_t __pyx_v_offset; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_ExtendLeft_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_ExtendLeft_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02682: cdef:
02683: size_t start
02684: size_t offset
02685:
+02686: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+02687: that = Rack_Reserve_(that, 0, size)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 2687, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+02688: if direct:
__pyx_t_1 = (__pyx_v_direct != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+02689: memmove(&that.blocks[that.endex - size], buffer, size * sizeof(Block_*))
(void)(memmove((&(__pyx_v_that->blocks[(__pyx_v_that->endex - __pyx_v_size)])), __pyx_v_buffer, (__pyx_v_size * (sizeof(Block_ *)))));
02690: else:
+02691: start = that.start
/*else*/ { __pyx_t_3 = __pyx_v_that->start; __pyx_v_start = __pyx_t_3;
+02692: for offset in range(size):
__pyx_t_3 = __pyx_v_size; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_offset = __pyx_t_5;
+02693: that.blocks[start + offset] = Block_Acquire(buffer[offset])
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_buffer[__pyx_v_offset])); if (unlikely(__pyx_t_6 == ((Block_ *)NULL))) __PYX_ERR(0, 2693, __pyx_L1_error)
(__pyx_v_that->blocks[(__pyx_v_start + __pyx_v_offset)]) = __pyx_t_6;
}
}
__pyx_L4:;
+02694: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02695:
02696:
+02697: cdef Rack_* Rack_ExtendLeft(Rack_* that, Rack_* more) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_ExtendLeft(Rack_ *__pyx_v_that, Rack_ *__pyx_v_more) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_ExtendLeft", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_ExtendLeft", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+02698: that = Rack_ExtendLeft_(that, more.endex - more.start, &more.blocks[more.start], False)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_ExtendLeft_(__pyx_v_that, (__pyx_v_more->endex - __pyx_v_more->start), (&(__pyx_v_more->blocks[__pyx_v_more->start])), 0); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 2698, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
+02699: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02700:
02701:
+02702: cdef vint Rack_Read_(const Rack_* that, size_t offset,
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Rack_Read_(Rack_ const *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size, Block_ **__pyx_v_buffer, int __pyx_v_direct) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Read_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_Read_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02703: size_t size, Block_** buffer, bint direct) except -1:
+02704: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+02705: if size > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_size > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02706: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2706, __pyx_L1_error)
02707:
+02708: CheckAddSizeU(that.start, offset)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2708, __pyx_L1_error)
+02709: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
02710:
+02711: CheckAddSizeU(offset, size)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_offset, __pyx_v_size); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2711, __pyx_L1_error)
+02712: if that.endex <= offset + size:
__pyx_t_1 = ((__pyx_v_that->endex <= (__pyx_v_offset + __pyx_v_size)) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02713: raise IndexError('index out of range')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2713, __pyx_L1_error)
02714:
+02715: if direct:
__pyx_t_1 = (__pyx_v_direct != 0); if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+02716: memmove(buffer, &that.blocks[offset], size * sizeof(Block_*))
(void)(memmove(__pyx_v_buffer, (&(__pyx_v_that->blocks[__pyx_v_offset])), (__pyx_v_size * (sizeof(Block_ *)))));
02717: else:
+02718: for offset in range(offset, offset + size):
/*else*/ { __pyx_t_4 = (__pyx_v_offset + __pyx_v_size); __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = __pyx_v_offset; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_offset = __pyx_t_6;
+02719: buffer[offset - that.start] = Block_Acquire(buffer[offset])
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_buffer[__pyx_v_offset])); if (unlikely(__pyx_t_7 == ((Block_ *)NULL))) __PYX_ERR(0, 2719, __pyx_L1_error)
(__pyx_v_buffer[(__pyx_v_offset - __pyx_v_that->start)]) = __pyx_t_7;
}
}
__pyx_L6:;
02720:
02721:
+02722: cdef Rack_* Rack_Write_(Rack_* that, size_t offset,
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_Write_(Rack_ *__pyx_v_that, size_t __pyx_v_offset, size_t __pyx_v_size, Block_ **__pyx_v_buffer, int __pyx_v_direct) { Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_Write_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_Write_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02723: size_t size, Block_** buffer, bint direct) except NULL:
+02724: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+02725: CheckAddSizeU(that.start, offset)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_that->start, __pyx_v_offset); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2725, __pyx_L1_error)
+02726: offset += that.start
__pyx_v_offset = (__pyx_v_offset + __pyx_v_that->start);
02727:
+02728: CheckAddSizeU(offset, size)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_offset, __pyx_v_size); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2728, __pyx_L1_error)
+02729: if that.endex < offset + size:
__pyx_t_1 = ((__pyx_v_that->endex < (__pyx_v_offset + __pyx_v_size)) != 0); if (__pyx_t_1) { /* … */ }
+02730: that = Rack_Reserve_(that, that.endex - that.start, (offset + size) - that.endex)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, (__pyx_v_that->endex - __pyx_v_that->start), ((__pyx_v_offset + __pyx_v_size) - __pyx_v_that->endex)); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2730, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
02731:
+02732: if direct:
__pyx_t_1 = (__pyx_v_direct != 0); if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+02733: memmove(&that.blocks[offset], buffer, size * sizeof(Block_*))
(void)(memmove((&(__pyx_v_that->blocks[__pyx_v_offset])), __pyx_v_buffer, (__pyx_v_size * (sizeof(Block_ *)))));
02734: else:
+02735: for offset in range(offset, offset + size):
/*else*/ { __pyx_t_4 = (__pyx_v_offset + __pyx_v_size); __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = __pyx_v_offset; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_offset = __pyx_t_6;
+02736: that.blocks[offset] = Block_Release(that.blocks[offset])
(__pyx_v_that->blocks[__pyx_v_offset]) = __pyx_f_11cbytesparse_1c_Block_Release((__pyx_v_that->blocks[__pyx_v_offset]));
+02737: that.blocks[offset] = Block_Acquire(buffer[offset - that.start])
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_buffer[(__pyx_v_offset - __pyx_v_that->start)])); if (unlikely(__pyx_t_7 == ((Block_ *)NULL))) __PYX_ERR(0, 2737, __pyx_L1_error)
(__pyx_v_that->blocks[__pyx_v_offset]) = __pyx_t_7;
}
}
__pyx_L5:;
02738:
+02739: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02740:
02741:
+02742: cdef vint Rack_ReadSlice_(const Rack_* that, size_t start, size_t endex,
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Rack_ReadSlice_(Rack_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, size_t *__pyx_v_size_, Block_ **__pyx_v_buffer, int __pyx_v_direct) { size_t __pyx_v_size; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_ReadSlice_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_ReadSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02743: size_t* size_, Block_** buffer, bint direct) except -1:
02744: cdef:
+02745: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
02746:
+02747: size_[0] = 0
(__pyx_v_size_[0]) = 0;
02748:
+02749: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02750: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2750, __pyx_L1_error)
+02751: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+02752: start = size # trim source start
__pyx_v_start = __pyx_v_size;
02753:
+02754: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02755: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2755, __pyx_L1_error)
+02756: elif endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+02757: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
+02758: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+02759: endex = size # trim source end
__pyx_v_endex = __pyx_v_size;
02760:
+02761: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
+02762: Rack_Read_(that, start, size, buffer, direct)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Read_(__pyx_v_that, __pyx_v_start, __pyx_v_size, __pyx_v_buffer, __pyx_v_direct); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2762, __pyx_L1_error)
+02763: size_[0] = size
(__pyx_v_size_[0]) = __pyx_v_size;
02764:
02765:
+02766: cdef vint Rack_ReadSlice(const Rack_* that, ssize_t start, ssize_t endex,
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Rack_ReadSlice(Rack_ const *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, size_t *__pyx_v_size_, Block_ **__pyx_v_buffer, int __pyx_v_direct) { Py_ssize_t __pyx_v_ssize; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_ReadSlice", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_ReadSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02767: size_t* size_, Block_** buffer, bint direct) except -1:
02768: cdef:
+02769: ssize_t ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
02770:
+02771: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+02772: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+02773: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+02774: start = 0 # trim source start
__pyx_v_start = 0;
02775:
+02776: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+02777: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+02778: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+02779: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
02780:
+02781: Rack_ReadSlice_(that, <size_t>start, <size_t>endex, size_, buffer, direct)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_ReadSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), __pyx_v_size_, __pyx_v_buffer, __pyx_v_direct); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2781, __pyx_L1_error)
02782:
02783:
+02784: cdef Rack_* Rack_GetSlice_(const Rack_* that, size_t start, size_t endex) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_GetSlice_(Rack_ const *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex) { Rack_ *__pyx_v_other; size_t __pyx_v_size; size_t __pyx_v_offset; size_t __pyx_v_offset2; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_GetSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("cbytesparse.c.Rack_GetSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02785: cdef:
+02786: Rack_* other = NULL
__pyx_v_other = NULL;
+02787: size_t size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
02788: size_t offset
02789: size_t offset2
02790:
+02791: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02792: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2792, __pyx_L1_error)
+02793: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+02794: start = size # trim source start
__pyx_v_start = __pyx_v_size;
02795:
+02796: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02797: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2797, __pyx_L1_error)
+02798: elif endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+02799: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
+02800: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+02801: endex = size # trim source end
__pyx_v_endex = __pyx_v_size;
02802:
+02803: try:
{ /*try:*/ { /* … */ } __pyx_L5_error:; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L1_error; __pyx_L9_try_return:; __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L0; }
+02804: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
+02805: other = Rack_Alloc(size)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Rack_Alloc(__pyx_v_size); if (unlikely(__pyx_t_6 == ((Rack_ *)NULL))) __PYX_ERR(0, 2805, __pyx_L5_error)
__pyx_v_other = __pyx_t_6;
+02806: CheckAddSizeU(other.start, size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_other->start, __pyx_v_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 2806, __pyx_L5_error)
+02807: offset2 = that.start + start
__pyx_v_offset2 = (__pyx_v_that->start + __pyx_v_start);
02808:
+02809: for offset in range(other.start, other.start + size):
__pyx_t_8 = (__pyx_v_other->start + __pyx_v_size); __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = __pyx_v_other->start; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_offset = __pyx_t_10;
+02810: other.blocks[offset] = Block_Acquire(that.blocks[offset2])
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Acquire((__pyx_v_that->blocks[__pyx_v_offset2])); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 2810, __pyx_L5_error)
(__pyx_v_other->blocks[__pyx_v_offset]) = __pyx_t_11;
+02811: offset2 += 1
__pyx_v_offset2 = (__pyx_v_offset2 + 1); }
02812:
+02813: return other
__pyx_r = __pyx_v_other; goto __pyx_L9_try_return;
+02814: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Rack_GetSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(0, 2814, __pyx_L7_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_13);
+02815: other = Rack_Free(other)
__pyx_v_other = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_other);
+02816: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_12, __pyx_t_13); __pyx_t_2 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __PYX_ERR(0, 2816, __pyx_L7_except_error) } __pyx_L7_except_error:;
02817:
02818:
+02819: cdef Rack_* Rack_GetSlice(const Rack_* that, ssize_t start, ssize_t endex) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_GetSlice(Rack_ const *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex) { Py_ssize_t __pyx_v_ssize; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_GetSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_GetSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02820: cdef:
+02821: ssize_t ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
02822:
+02823: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+02824: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+02825: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+02826: start = 0 # trim source start
__pyx_v_start = 0;
02827:
+02828: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+02829: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+02830: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+02831: endex = start # clamp negative source length
__pyx_v_endex = __pyx_v_start;
02832:
+02833: return Rack_GetSlice_(that, <size_t>start, <size_t>endex)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_GetSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex)); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 2833, __pyx_L1_error)
__pyx_r = __pyx_t_2;
goto __pyx_L0;
02834:
02835:
+02836: cdef Rack_* Rack_WriteSlice_(Rack_* that, size_t start, size_t endex,
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_WriteSlice_(Rack_ *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, size_t __pyx_v_size, Block_ **__pyx_v_buffer, int __pyx_v_direct) { size_t __pyx_v_size2; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_WriteSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_WriteSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02837: size_t size, Block_** buffer, bint direct) except NULL:
02838: cdef:
02839: size_t size2 # source size
02840:
+02841: size2 = size
__pyx_v_size2 = __pyx_v_size;
+02842: size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
02843:
+02844: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02845: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2845, __pyx_L1_error)
+02846: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+02847: start = size # trim target start
__pyx_v_start = __pyx_v_size;
02848:
+02849: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02850: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2850, __pyx_L1_error)
+02851: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+02852: endex = size # trim target end
__pyx_v_endex = __pyx_v_size;
02853:
+02854: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+02855: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
+02856: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
02857:
+02858: if size2 > size: # enlarge target at range end
__pyx_t_1 = ((__pyx_v_size2 > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+02859: that = Rack_Reserve_(that, endex, size2 - size)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size2 - __pyx_v_size)); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2859, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
02860:
+02861: elif size > size2: # shrink target at range end
__pyx_t_1 = ((__pyx_v_size > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ } __pyx_L6:;
+02862: endex -= size - size2
__pyx_v_endex = (__pyx_v_endex - (__pyx_v_size - __pyx_v_size2));
+02863: that = Rack_Delete_(that, endex, size - size2)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Delete_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size - __pyx_v_size2)); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2863, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
02864:
+02865: that = Rack_Write_(that, start, size2, buffer, direct)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Write_(__pyx_v_that, __pyx_v_start, __pyx_v_size2, __pyx_v_buffer, __pyx_v_direct); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2865, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+02866: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02867:
02868:
+02869: cdef Rack_* Rack_WriteSlice(Rack_* that, ssize_t start, ssize_t endex,
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_WriteSlice(Rack_ *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, size_t __pyx_v_size, Block_ **__pyx_v_buffer, int __pyx_v_direct) { Py_ssize_t __pyx_v_ssize; Py_ssize_t __pyx_v_ssize2; Py_ssize_t __pyx_v_start2; Py_ssize_t __pyx_v_endex2; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_WriteSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_WriteSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02870: size_t size, Block_** buffer, bint direct) except NULL:
02871: cdef:
02872: ssize_t ssize # target size
02873: ssize_t ssize2 # source size
02874: ssize_t start2 # source start
02875: ssize_t endex2 # source end
02876:
+02877: start2 = 0
__pyx_v_start2 = 0;
+02878: endex2 = <ssize_t>size
__pyx_v_endex2 = ((Py_ssize_t)__pyx_v_size);
02879:
+02880: ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
02881:
+02882: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+02883: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+02884: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
02885: # start2 -= start # skip initial source data # as per bytearray
+02886: start = 0 # trim target start
__pyx_v_start = 0;
+02887: if start2 > endex2:
__pyx_t_1 = ((__pyx_v_start2 > __pyx_v_endex2) != 0); if (__pyx_t_1) { /* … */ }
+02888: start2 = endex2 # clamp source start
__pyx_v_start2 = __pyx_v_endex2;
02889:
+02890: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+02891: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+02892: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+02893: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
02894:
+02895: if endex2 < start2:
__pyx_t_1 = ((__pyx_v_endex2 < __pyx_v_start2) != 0); if (__pyx_t_1) { /* … */ }
+02896: endex2 = start2 # clamp negative source length
__pyx_v_endex2 = __pyx_v_start2;
+02897: ssize2 = endex2 - start2
__pyx_v_ssize2 = (__pyx_v_endex2 - __pyx_v_start2);
02898:
+02899: that = Rack_WriteSlice_(that, <size_t>start, <size_t>endex, <size_t>ssize2, &buffer[start2], direct)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_WriteSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), ((size_t)__pyx_v_ssize2), (&(__pyx_v_buffer[__pyx_v_start2])), __pyx_v_direct); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 2899, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+02900: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02901:
02902:
+02903: cdef Rack_* Rack_SetSlice_(Rack_* that, size_t start, size_t endex,
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_SetSlice_(Rack_ *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex, Rack_ *__pyx_v_src, size_t __pyx_v_start2, size_t __pyx_v_endex2) { size_t __pyx_v_size; size_t __pyx_v_size2; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_SetSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_SetSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02904: Rack_* src, size_t start2, size_t endex2) except NULL:
02905: cdef:
02906: size_t size # target size
02907: size_t size2 # source size
02908:
+02909: size2 = src.endex - src.start
__pyx_v_size2 = (__pyx_v_src->endex - __pyx_v_src->start);
02910:
+02911: if start2 > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start2 > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02912: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2912, __pyx_L1_error)
+02913: elif start2 > size2:
__pyx_t_1 = ((__pyx_v_start2 > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+02914: start2 = size2 # trim source start
__pyx_v_start2 = __pyx_v_size2;
02915:
+02916: if endex2 > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex2 > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02917: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2917, __pyx_L1_error)
+02918: elif endex2 > size2:
__pyx_t_1 = ((__pyx_v_endex2 > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ }
+02919: endex2 = size2 # trim source end
__pyx_v_endex2 = __pyx_v_size2;
02920:
+02921: if endex2 < start2:
__pyx_t_1 = ((__pyx_v_endex2 < __pyx_v_start2) != 0); if (__pyx_t_1) { /* … */ }
+02922: endex2 = start2 # clamp negative source length
__pyx_v_endex2 = __pyx_v_start2;
+02923: size2 = endex2 - start2
__pyx_v_size2 = (__pyx_v_endex2 - __pyx_v_start2);
02924:
+02925: size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
02926:
+02927: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02928: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2928, __pyx_L1_error)
+02929: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+02930: start = size # trim target start
__pyx_v_start = __pyx_v_size;
02931:
+02932: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02933: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2933, __pyx_L1_error)
+02934: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+02935: endex = size # trim target end
__pyx_v_endex = __pyx_v_size;
02936:
+02937: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+02938: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
+02939: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
02940:
+02941: if size2 > size: # enlarge target at range end
__pyx_t_1 = ((__pyx_v_size2 > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L9; }
+02942: that = Rack_Reserve_(that, endex, size2 - size)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size2 - __pyx_v_size)); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2942, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
02943:
+02944: elif size > size2: # shrink target at range end
__pyx_t_1 = ((__pyx_v_size > __pyx_v_size2) != 0); if (__pyx_t_1) { /* … */ } __pyx_L9:;
+02945: endex -= size - size2
__pyx_v_endex = (__pyx_v_endex - (__pyx_v_size - __pyx_v_size2));
+02946: that = Rack_Delete_(that, endex, size - size2)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Delete_(__pyx_v_that, __pyx_v_endex, (__pyx_v_size - __pyx_v_size2)); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2946, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
02947:
+02948: that = Rack_Write_(that, start, size2, &src.blocks[src.start + start2], False)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Write_(__pyx_v_that, __pyx_v_start, __pyx_v_size2, (&(__pyx_v_src->blocks[(__pyx_v_src->start + __pyx_v_start2)])), 0); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 2948, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+02949: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02950:
02951:
+02952: cdef Rack_* Rack_SetSlice(Rack_* that, ssize_t start, ssize_t endex,
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_SetSlice(Rack_ *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex, Rack_ *__pyx_v_src, Py_ssize_t __pyx_v_start2, Py_ssize_t __pyx_v_endex2) { Py_ssize_t __pyx_v_ssize; Py_ssize_t __pyx_v_ssize2; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_SetSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_SetSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02953: Rack_* src, ssize_t start2, ssize_t endex2) except NULL:
02954: cdef:
02955: ssize_t ssize # target size
02956: ssize_t ssize2 # source size
02957:
+02958: ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
+02959: ssize2 = <ssize_t>(src.endex - src.start)
__pyx_v_ssize2 = ((Py_ssize_t)(__pyx_v_src->endex - __pyx_v_src->start));
02960:
+02961: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+02962: start += ssize # anchor to target end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+02963: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
02964: # start2 -= start # skip initial source data # as per bytearray
+02965: start = 0 # trim target start
__pyx_v_start = 0;
02966:
+02967: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+02968: endex += ssize # anchor to target end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+02969: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+02970: endex = start # clamp negative target length
__pyx_v_endex = __pyx_v_start;
02971:
+02972: if start2 < 0:
__pyx_t_1 = ((__pyx_v_start2 < 0) != 0); if (__pyx_t_1) { /* … */ }
+02973: start2 += ssize2 # anchor to source end
__pyx_v_start2 = (__pyx_v_start2 + __pyx_v_ssize2);
+02974: if start2 < 0:
__pyx_t_1 = ((__pyx_v_start2 < 0) != 0); if (__pyx_t_1) { /* … */ }
+02975: start2 = 0 # trim source start
__pyx_v_start2 = 0;
02976:
+02977: if endex2 < 0:
__pyx_t_1 = ((__pyx_v_endex2 < 0) != 0); if (__pyx_t_1) { /* … */ }
+02978: endex2 += ssize2 # anchor to source end
__pyx_v_endex2 = (__pyx_v_endex2 + __pyx_v_ssize2);
+02979: if endex2 < start2:
__pyx_t_1 = ((__pyx_v_endex2 < __pyx_v_start2) != 0); if (__pyx_t_1) { /* … */ }
+02980: endex2 = start2 # clamp negative source length
__pyx_v_endex2 = __pyx_v_start2;
02981:
+02982: that = Rack_SetSlice_(that, <size_t>start, <size_t>endex, src, <size_t>start2, <size_t>endex2)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_SetSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex), __pyx_v_src, ((size_t)__pyx_v_start2), ((size_t)__pyx_v_endex2)); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 2982, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+02983: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
02984:
02985:
+02986: cdef Rack_* Rack_DelSlice_(Rack_* that, size_t start, size_t endex) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_DelSlice_(Rack_ *__pyx_v_that, size_t __pyx_v_start, size_t __pyx_v_endex) { size_t __pyx_v_size; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_DelSlice_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Rack_DelSlice_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
02987: cdef:
02988: size_t size
02989:
+02990: size = that.endex - that.start
__pyx_v_size = (__pyx_v_that->endex - __pyx_v_that->start);
02991:
+02992: if start > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_start > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02993: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2993, __pyx_L1_error)
+02994: elif start > size:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ }
+02995: start = size # trim start
__pyx_v_start = __pyx_v_size;
02996:
+02997: if endex > SIZE_HMAX:
__pyx_t_1 = ((__pyx_v_endex > SIZE_HMAX) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+02998: raise OverflowError('size overflow')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 2998, __pyx_L1_error)
+02999: elif endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+03000: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
+03001: elif endex > size:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ } __pyx_L4:;
+03002: endex = size # trim end
__pyx_v_endex = __pyx_v_size;
03003:
+03004: that = Rack_Delete_(that, start, (endex - start))
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Delete_(__pyx_v_that, __pyx_v_start, (__pyx_v_endex - __pyx_v_start)); if (unlikely(__pyx_t_3 == ((Rack_ *)NULL))) __PYX_ERR(0, 3004, __pyx_L1_error)
__pyx_v_that = __pyx_t_3;
+03005: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03006:
03007:
+03008: cdef Rack_* Rack_DelSlice(Rack_* that, ssize_t start, ssize_t endex) except NULL:
static Rack_ *__pyx_f_11cbytesparse_1c_Rack_DelSlice(Rack_ *__pyx_v_that, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_endex) { Py_ssize_t __pyx_v_ssize; Rack_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rack_DelSlice", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rack_DelSlice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03009: cdef:
03010: ssize_t ssize
03011:
+03012: ssize = <ssize_t>(that.endex - that.start)
__pyx_v_ssize = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
03013:
+03014: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+03015: start += ssize # anchor to end
__pyx_v_start = (__pyx_v_start + __pyx_v_ssize);
+03016: if start < 0:
__pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { /* … */ }
+03017: start = 0 # trim start
__pyx_v_start = 0;
03018:
+03019: if endex < 0:
__pyx_t_1 = ((__pyx_v_endex < 0) != 0); if (__pyx_t_1) { /* … */ }
+03020: endex += ssize # anchor to end
__pyx_v_endex = (__pyx_v_endex + __pyx_v_ssize);
+03021: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+03022: endex = start # clamp negative length
__pyx_v_endex = __pyx_v_start;
03023:
+03024: that = Rack_DelSlice_(that, <size_t>start, <size_t>endex)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_DelSlice_(__pyx_v_that, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex)); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 3024, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
+03025: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03026:
03027:
+03028: cdef addr_t Rack_Start(const Rack_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Rack_Start(Rack_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+03029: return Block_Start(Rack_First__(that)) if Rack_Bool(that) else 0
if ((__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that) != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_that)); } else { __pyx_t_1 = 0; } __pyx_r = __pyx_t_1; goto __pyx_L0;
03030:
03031:
+03032: cdef addr_t Rack_Endex(const Rack_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Rack_Endex(Rack_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+03033: return Block_Endex(Rack_Last__(that)) if Rack_Bool(that) else 0
if ((__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that) != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_that)); } else { __pyx_t_1 = 0; } __pyx_r = __pyx_t_1; goto __pyx_L0;
03034:
03035:
+03036: cdef ssize_t Rack_IndexAt(const Rack_* that, addr_t address) nogil:
static Py_ssize_t __pyx_f_11cbytesparse_1c_Rack_IndexAt(Rack_ const *__pyx_v_that, addr_t __pyx_v_address) { Py_ssize_t __pyx_v_left; Py_ssize_t __pyx_v_right; Py_ssize_t __pyx_v_center; Block_ const *__pyx_v_block; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_r = 0; __pyx_L0:; return __pyx_r; }
03037: cdef:
+03038: ssize_t left = 0
__pyx_v_left = 0;
+03039: ssize_t right = <ssize_t>(that.endex - that.start)
__pyx_v_right = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
03040: ssize_t center
03041: const Block_* block
03042:
+03043: if right:
__pyx_t_1 = (__pyx_v_right != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+03044: block = that.blocks[that.start]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_that->start]);
+03045: if address < Block_Start(block):
__pyx_t_1 = ((__pyx_v_address < __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)) != 0); if (__pyx_t_1) { /* … */ }
+03046: return -1
__pyx_r = -1L; goto __pyx_L0;
03047:
+03048: block = that.blocks[that.endex - 1]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]);
+03049: if Block_Endex(block) <= address:
__pyx_t_1 = ((__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) <= __pyx_v_address) != 0); if (__pyx_t_1) { /* … */ }
+03050: return -1
__pyx_r = -1L; goto __pyx_L0;
03051: else:
+03052: return -1
/*else*/ { __pyx_r = -1L; goto __pyx_L0; } __pyx_L3:;
03053:
+03054: while left <= right:
while (1) { __pyx_t_1 = ((__pyx_v_left <= __pyx_v_right) != 0); if (!__pyx_t_1) break;
+03055: center = (left + right) >> 1
__pyx_v_center = ((__pyx_v_left + __pyx_v_right) >> 1);
+03056: block = that.blocks[that.start + center]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_center)]);
03057:
+03058: if Block_Endex(block) <= address:
__pyx_t_1 = ((__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) <= __pyx_v_address) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L8; }
+03059: left = center + 1
__pyx_v_left = (__pyx_v_center + 1);
+03060: elif address < Block_Start(block):
__pyx_t_1 = ((__pyx_v_address < __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L8; }
+03061: right = center - 1
__pyx_v_right = (__pyx_v_center - 1);
03062: else:
+03063: return center
/*else*/ { __pyx_r = __pyx_v_center; goto __pyx_L0; } __pyx_L8:; }
03064: else:
+03065: return -1
/*else*/ { __pyx_r = -1L; goto __pyx_L0; }
03066:
03067:
+03068: cdef ssize_t Rack_IndexStart(const Rack_* that, addr_t address) nogil:
static Py_ssize_t __pyx_f_11cbytesparse_1c_Rack_IndexStart(Rack_ const *__pyx_v_that, addr_t __pyx_v_address) { Py_ssize_t __pyx_v_left; Py_ssize_t __pyx_v_right; Py_ssize_t __pyx_v_center; Block_ const *__pyx_v_block; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_r = 0; __pyx_L0:; return __pyx_r; }
03069: cdef:
+03070: ssize_t left = 0
__pyx_v_left = 0;
+03071: ssize_t right = <ssize_t>(that.endex - that.start)
__pyx_v_right = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
03072: ssize_t center
03073: const Block_* block
03074:
+03075: if right:
__pyx_t_1 = (__pyx_v_right != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+03076: block = that.blocks[that.start]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_that->start]);
+03077: if address <= Block_Start(block):
__pyx_t_1 = ((__pyx_v_address <= __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)) != 0); if (__pyx_t_1) { /* … */ }
+03078: return 0
__pyx_r = 0; goto __pyx_L0;
03079:
+03080: block = that.blocks[that.endex - 1]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]);
+03081: if Block_Endex(block) <= address:
__pyx_t_1 = ((__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) <= __pyx_v_address) != 0); if (__pyx_t_1) { /* … */ }
+03082: return right
__pyx_r = __pyx_v_right; goto __pyx_L0;
03083: else:
+03084: return 0
/*else*/ { __pyx_r = 0; goto __pyx_L0; } __pyx_L3:;
03085:
+03086: while left <= right:
while (1) { __pyx_t_1 = ((__pyx_v_left <= __pyx_v_right) != 0); if (!__pyx_t_1) break;
+03087: center = (left + right) >> 1
__pyx_v_center = ((__pyx_v_left + __pyx_v_right) >> 1);
+03088: block = that.blocks[that.start + center]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_center)]);
03089:
+03090: if Block_Endex(block) <= address:
__pyx_t_1 = ((__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) <= __pyx_v_address) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L8; }
+03091: left = center + 1
__pyx_v_left = (__pyx_v_center + 1);
+03092: elif address < Block_Start(block):
__pyx_t_1 = ((__pyx_v_address < __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L8; }
+03093: right = center - 1
__pyx_v_right = (__pyx_v_center - 1);
03094: else:
+03095: return center
/*else*/ { __pyx_r = __pyx_v_center; goto __pyx_L0; } __pyx_L8:; }
03096: else:
+03097: return left
/*else*/ { __pyx_r = __pyx_v_left; goto __pyx_L0; }
03098:
03099:
+03100: cdef ssize_t Rack_IndexEndex(const Rack_* that, addr_t address) nogil:
static Py_ssize_t __pyx_f_11cbytesparse_1c_Rack_IndexEndex(Rack_ const *__pyx_v_that, addr_t __pyx_v_address) { Py_ssize_t __pyx_v_left; Py_ssize_t __pyx_v_right; Py_ssize_t __pyx_v_center; Block_ const *__pyx_v_block; Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_r = 0; __pyx_L0:; return __pyx_r; }
03101: cdef:
+03102: ssize_t left = 0
__pyx_v_left = 0;
+03103: ssize_t right = <ssize_t>(that.endex - that.start)
__pyx_v_right = ((Py_ssize_t)(__pyx_v_that->endex - __pyx_v_that->start));
03104: ssize_t center
03105: const Block_* block
03106:
+03107: if right:
__pyx_t_1 = (__pyx_v_right != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+03108: block = that.blocks[that.start]
__pyx_v_block = (__pyx_v_that->blocks[__pyx_v_that->start]);
+03109: if address < Block_Start(block):
__pyx_t_1 = ((__pyx_v_address < __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)) != 0); if (__pyx_t_1) { /* … */ }
+03110: return 0
__pyx_r = 0; goto __pyx_L0;
03111:
+03112: block = that.blocks[that.endex - 1]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->endex - 1)]);
+03113: if Block_Endex(block) <= address:
__pyx_t_1 = ((__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) <= __pyx_v_address) != 0); if (__pyx_t_1) { /* … */ }
+03114: return right
__pyx_r = __pyx_v_right; goto __pyx_L0;
03115: else:
+03116: return 0
/*else*/ { __pyx_r = 0; goto __pyx_L0; } __pyx_L3:;
03117:
+03118: while left <= right:
while (1) { __pyx_t_1 = ((__pyx_v_left <= __pyx_v_right) != 0); if (!__pyx_t_1) break;
+03119: center = (left + right) >> 1
__pyx_v_center = ((__pyx_v_left + __pyx_v_right) >> 1);
+03120: block = that.blocks[that.start + center]
__pyx_v_block = (__pyx_v_that->blocks[(__pyx_v_that->start + __pyx_v_center)]);
03121:
+03122: if Block_Endex(block) <= address:
__pyx_t_1 = ((__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) <= __pyx_v_address) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L8; }
+03123: left = center + 1
__pyx_v_left = (__pyx_v_center + 1);
+03124: elif address < Block_Start(block):
__pyx_t_1 = ((__pyx_v_address < __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L8; }
+03125: right = center - 1
__pyx_v_right = (__pyx_v_center - 1);
03126: else:
+03127: return center + 1
/*else*/ { __pyx_r = (__pyx_v_center + 1); goto __pyx_L0; } __pyx_L8:; }
03128: else:
+03129: return right + 1
/*else*/ { __pyx_r = (__pyx_v_right + 1); goto __pyx_L0; }
03130:
03131:
03132: # =====================================================================================================================
03133:
+03134: cdef Memory Memory_AsObject(Memory_* that):
static struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_f_11cbytesparse_1c_Memory_AsObject(Memory_ *__pyx_v_that) { struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory = 0; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_AsObject", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory_AsObject", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03135: cdef:
+03136: Memory memory = Memory()
__pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_memory = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_1); __pyx_t_1 = 0;
03137:
+03138: memory._ = Memory_Free(memory._)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory->_); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3138, __pyx_L1_error) __pyx_v_memory->_ = __pyx_t_2;
+03139: memory._ = that
__pyx_v_memory->_ = __pyx_v_that;
+03140: return memory
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_memory)); __pyx_r = __pyx_v_memory; goto __pyx_L0;
03141:
03142:
+03143: cdef Memory_* Memory_Alloc() except NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Alloc(void) { Rack_ *__pyx_v_blocks; Memory_ *__pyx_v_that; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Alloc", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Alloc", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03144: cdef:
+03145: Rack_* blocks = Rack_Alloc(0)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Alloc(0); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 3145, __pyx_L1_error)
__pyx_v_blocks = __pyx_t_1;
+03146: Memory_* that = NULL
__pyx_v_that = NULL;
03147:
+03148: that = <Memory_*>PyMem_Calloc(Memory_HEADING, 1)
__pyx_v_that = ((Memory_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(Memory_HEADING, 1));
+03149: if that == NULL:
__pyx_t_2 = ((__pyx_v_that == NULL) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+03150: blocks = Rack_Free(blocks)
__pyx_v_blocks = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_blocks);
+03151: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3151, __pyx_L1_error)
03152:
+03153: that.blocks = blocks
__pyx_v_that->blocks = __pyx_v_blocks;
+03154: that.trim_start = 0
__pyx_v_that->trim_start = 0;
+03155: that.trim_endex = ADDR_MAX
__pyx_v_that->trim_endex = ADDR_MAX;
+03156: that.trim_start_ = False
__pyx_v_that->trim_start_ = 0;
+03157: that.trim_endex_ = False
__pyx_v_that->trim_endex_ = 0;
+03158: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03159:
03160:
+03161: cdef Memory_* Memory_Free(Memory_* that) except? NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Free(Memory_ *__pyx_v_that) { Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Free", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+03162: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (__pyx_t_1) { /* … */ }
+03163: that.blocks = Rack_Free(that.blocks)
__pyx_v_that->blocks = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_that->blocks);
+03164: PyMem_Free(that)
PyMem_Free(__pyx_v_that);
+03165: return NULL
__pyx_r = NULL; goto __pyx_L0;
03166:
03167:
+03168: cdef Memory_* Memory_Create(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Create(PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { Memory_ *__pyx_v_that; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Create", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cbytesparse.c.Memory_Create", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03169: object start,
03170: object endex,
03171: ) except NULL:
03172: cdef:
+03173: Memory_* that = <Memory_*>PyMem_Calloc(Memory_HEADING, 1)
__pyx_v_that = ((Memory_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(Memory_HEADING, 1));
03174:
+03175: if that == NULL:
__pyx_t_1 = ((__pyx_v_that == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+03176: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3176, __pyx_L1_error)
+03177: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L9_try_end:; }
+03178: if start is None:
__pyx_t_1 = (__pyx_v_start == Py_None); __pyx_t_5 = (__pyx_t_1 != 0); if (__pyx_t_5) { /* … */ goto __pyx_L10; }
+03179: that.trim_start = ADDR_MIN
__pyx_v_that->trim_start = ADDR_MIN;
+03180: that.trim_start_ = False
__pyx_v_that->trim_start_ = 0;
03181: else:
+03182: that.trim_start = <addr_t>start
/*else*/ { __pyx_t_6 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_6 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3182, __pyx_L4_error) __pyx_v_that->trim_start = ((addr_t)__pyx_t_6);
+03183: that.trim_start_ = True
__pyx_v_that->trim_start_ = 1; } __pyx_L10:;
03184:
+03185: if endex is None:
__pyx_t_5 = (__pyx_v_endex == Py_None); __pyx_t_1 = (__pyx_t_5 != 0); if (__pyx_t_1) { /* … */ goto __pyx_L11; }
+03186: that.trim_endex = ADDR_MAX
__pyx_v_that->trim_endex = ADDR_MAX;
+03187: that.trim_endex_ = False
__pyx_v_that->trim_endex_ = 0;
03188: else:
+03189: that.trim_endex = <addr_t>endex
/*else*/ { __pyx_t_6 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_6 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3189, __pyx_L4_error) __pyx_v_that->trim_endex = ((addr_t)__pyx_t_6);
+03190: that.trim_endex_ = True
__pyx_v_that->trim_endex_ = 1; } __pyx_L11:;
03191:
+03192: if that.trim_endex < that.trim_start:
__pyx_t_1 = ((__pyx_v_that->trim_endex < __pyx_v_that->trim_start) != 0); if (__pyx_t_1) { /* … */ }
+03193: that.trim_endex = that.trim_start
__pyx_t_6 = __pyx_v_that->trim_start; __pyx_v_that->trim_endex = __pyx_t_6;
03194:
+03195: that.blocks = Rack_Alloc(0)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Rack_Alloc(0); if (unlikely(__pyx_t_7 == ((Rack_ *)NULL))) __PYX_ERR(0, 3195, __pyx_L4_error)
__pyx_v_that->blocks = __pyx_t_7;
03196:
+03197: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Create", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(0, 3197, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_10);
+03198: that = Memory_Free(that)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_that); if (unlikely(__pyx_t_11 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3198, __pyx_L6_except_error) __pyx_v_that = __pyx_t_11;
+03199: raise
__Pyx_GIVEREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_9, __pyx_t_10); __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __PYX_ERR(0, 3199, __pyx_L6_except_error) } __pyx_L6_except_error:;
03200:
+03201: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03202:
03203:
+03204: cdef Memory_* Memory_FromBlocks_(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromBlocks_(Rack_ const *__pyx_v_blocks, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, int __pyx_v_validate) { Memory_ *__pyx_v_that; CYTHON_UNUSED Rack_ *__pyx_v_blocks_; size_t __pyx_v_block_index; Block_ *__pyx_v_block; addr_t __pyx_v_offset_abs; int __pyx_v_offset_neg; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromBlocks_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_14); __Pyx_XDECREF(__pyx_t_15); __Pyx_AddTraceback("cbytesparse.c.Memory_FromBlocks_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03205: const Rack_* blocks,
03206: object offset,
03207: object start,
03208: object endex,
03209: bint validate,
03210: ) except NULL:
03211: cdef:
+03212: Memory_* that = NULL
__pyx_v_that = NULL;
03213: Rack_* blocks_
03214: size_t block_index
03215: Block_* block
+03216: addr_t offset_abs = 0
__pyx_v_offset_abs = 0;
+03217: bint offset_neg = offset < 0
__pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3217, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3217, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_offset_neg = __pyx_t_2;
03218:
+03219: if blocks == NULL:
__pyx_t_2 = ((__pyx_v_blocks == NULL) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+03220: raise ValueError('null blocks')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 3220, __pyx_L1_error) /* … */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_null_blocks); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 3220, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15);
03221:
+03222: if Rack_Bool(blocks):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_2) { /* … */ }
+03223: if offset_neg:
__pyx_t_2 = (__pyx_v_offset_neg != 0); if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+03224: offset_abs = <addr_t>-offset
__pyx_t_1 = PyNumber_Negative(__pyx_v_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_1); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3224, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_offset_abs = ((addr_t)__pyx_t_3);
+03225: CheckSubAddrU(Block_Start(Rack_First__(that.blocks)), offset_abs)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_that->blocks)), __pyx_v_offset_abs); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3225, __pyx_L1_error)
03226: else:
+03227: offset_abs = <addr_t>offset
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_offset); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3227, __pyx_L1_error) __pyx_v_offset_abs = ((addr_t)__pyx_t_3);
+03228: CheckAddAddrU(Block_Endex(Rack_Last__(that.blocks)), offset_abs)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_that->blocks)), __pyx_v_offset_abs); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3228, __pyx_L1_error)
}
__pyx_L5:;
03229:
+03230: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L11_try_end; __pyx_L6_error:; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L11_try_end:; }
+03231: that = Memory_Create(start, endex)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_Create(__pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_8 == ((Memory_ *)NULL))) __PYX_ERR(0, 3231, __pyx_L6_error)
__pyx_v_that = __pyx_t_8;
+03232: that.blocks = Rack_Free(that.blocks)
__pyx_v_that->blocks = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_that->blocks);
+03233: that.blocks = Rack_Copy(blocks)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Rack_Copy(__pyx_v_blocks); if (unlikely(__pyx_t_9 == ((Rack_ *)NULL))) __PYX_ERR(0, 3233, __pyx_L6_error)
__pyx_v_that->blocks = __pyx_t_9;
+03234: blocks_ = that.blocks
__pyx_t_9 = __pyx_v_that->blocks; __pyx_v_blocks_ = __pyx_t_9;
03235:
+03236: if offset_neg:
__pyx_t_2 = (__pyx_v_offset_neg != 0); if (__pyx_t_2) { /* … */ goto __pyx_L12; }
+03237: for block_index in range(Rack_Length(blocks)):
__pyx_t_10 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_block_index = __pyx_t_12;
+03238: block = Rack_Get_(blocks, block_index)
__pyx_t_13 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_13 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3238, __pyx_L6_error) __pyx_v_block = __pyx_t_13;
+03239: block.address -= offset_abs
__pyx_v_block->address = (__pyx_v_block->address - __pyx_v_offset_abs); }
03240: else:
+03241: for block_index in range(Rack_Length(blocks)):
/*else*/ { __pyx_t_10 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_block_index = __pyx_t_12;
+03242: block = Rack_Get_(blocks, block_index)
__pyx_t_13 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_13 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3242, __pyx_L6_error) __pyx_v_block = __pyx_t_13;
+03243: block.address += offset_abs
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_offset_abs); } } __pyx_L12:;
03244:
+03245: if validate:
__pyx_t_2 = (__pyx_v_validate != 0); if (__pyx_t_2) { /* … */ }
+03246: Memory_Validate(that)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Validate(__pyx_v_that); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3246, __pyx_L6_error)
03247:
+03248: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_FromBlocks_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_14, &__pyx_t_15) < 0) __PYX_ERR(0, 3248, __pyx_L8_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_14); __Pyx_GOTREF(__pyx_t_15);
+03249: that = Memory_Free(that)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_that); if (unlikely(__pyx_t_8 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3249, __pyx_L8_except_error) __pyx_v_that = __pyx_t_8;
+03250: raise
__Pyx_GIVEREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_14, __pyx_t_15); __pyx_t_1 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __PYX_ERR(0, 3250, __pyx_L8_except_error) } __pyx_L8_except_error:;
03251:
+03252: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03253:
03254:
+03255: cdef Memory_* Memory_FromBlocks(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromBlocks(PyObject *__pyx_v_blocks, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, int __pyx_v_validate) { int __pyx_v_offset_; Memory_ *__pyx_v_that; addr_t __pyx_v_delta; __Pyx_memviewslice __pyx_v_block_view = { 0, 0, { 0 }, { 0 }, { 0 } }; byte_t const *__pyx_v_block_data; size_t __pyx_v_block_size; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; size_t __pyx_v_block_offset; Block_ *__pyx_v_block; PyObject *__pyx_v_block_start_ = NULL; PyObject *__pyx_v_block_data_ = NULL; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromBlocks", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_FromBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_block_view, 1); __Pyx_XDECREF(__pyx_v_block_start_); __Pyx_XDECREF(__pyx_v_block_data_); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03256: object blocks,
03257: object offset,
03258: object start,
03259: object endex,
03260: bint validate,
03261: ) except NULL:
03262: cdef:
+03263: bint offset_ = <bint>offset
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_offset); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3263, __pyx_L1_error) __pyx_v_offset_ = __pyx_t_1;
+03264: Memory_* that = Memory_Create(start, endex)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Create(__pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 3264, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
03265: addr_t delta
03266: const byte_t[:] block_view
03267: const byte_t* block_data
03268: size_t block_size
03269: addr_t block_start
03270: addr_t block_endex
03271: size_t block_offset
+03272: Block_* block = NULL
__pyx_v_block = NULL;
03273:
+03274: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); goto __pyx_L1_error; __pyx_L8_try_end:; }
+03275: for block_start_, block_data_ in blocks:
if (likely(PyList_CheckExact(__pyx_v_blocks)) || PyTuple_CheckExact(__pyx_v_blocks)) { __pyx_t_6 = __pyx_v_blocks; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_blocks); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3275, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3275, __pyx_L3_error) } for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 3275, __pyx_L3_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3275, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 3275, __pyx_L3_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3275, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); #endif } } else { __pyx_t_9 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_9)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3275, __pyx_L3_error) } break; } __Pyx_GOTREF(__pyx_t_9); } if ((likely(PyTuple_CheckExact(__pyx_t_9))) || (PyList_CheckExact(__pyx_t_9))) { PyObject* sequence = __pyx_t_9; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3275, __pyx_L3_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_10 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_10 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); #else __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3275, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3275, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_11); #endif __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { Py_ssize_t index = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3275, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; index = 0; __pyx_t_10 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_10)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_10); index = 1; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 3275, __pyx_L3_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3275, __pyx_L3_error) __pyx_L12_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_block_start_, __pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF_SET(__pyx_v_block_data_, __pyx_t_11); __pyx_t_11 = 0; /* … */ __pyx_L9_continue:; } __pyx_L10_break:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+03276: block_offset = 0
__pyx_v_block_offset = 0;
+03277: block_start = <addr_t>(block_start_ + offset) if offset_ else <addr_t>block_start_
if ((__pyx_v_offset_ != 0)) { __pyx_t_9 = PyNumber_Add(__pyx_v_block_start_, __pyx_v_offset); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3277, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_15 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_9); if (unlikely((__pyx_t_15 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3277, __pyx_L3_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_14 = ((addr_t)__pyx_t_15); } else { __pyx_t_15 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_block_start_); if (unlikely((__pyx_t_15 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3277, __pyx_L3_error) __pyx_t_14 = ((addr_t)__pyx_t_15); } __pyx_v_block_start = __pyx_t_14;
+03278: if that.trim_endex <= block_start:
__pyx_t_1 = ((__pyx_v_that->trim_endex <= __pyx_v_block_start) != 0); if (__pyx_t_1) { /* … */ }
+03279: break
goto __pyx_L10_break;
03280:
+03281: block_view = block_data_
__pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_block_data_, 0); if (unlikely(!__pyx_t_16.memview)) __PYX_ERR(0, 3281, __pyx_L3_error) __PYX_XDEC_MEMVIEW(&__pyx_v_block_view, 1); __pyx_v_block_view = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL;
+03282: block_size = <size_t>len(block_view)
__pyx_t_17 = __Pyx_MemoryView_Len(__pyx_v_block_view);
__pyx_v_block_size = ((size_t)__pyx_t_17);
+03283: CheckAddAddrU(block_start, block_size)
__pyx_t_18 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block_start, __pyx_v_block_size); if (unlikely(__pyx_t_18 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3283, __pyx_L3_error)
+03284: block_endex = block_start + block_size
__pyx_v_block_endex = (__pyx_v_block_start + __pyx_v_block_size);
+03285: if block_endex <= that.trim_start:
__pyx_t_1 = ((__pyx_v_block_endex <= __pyx_v_that->trim_start) != 0); if (__pyx_t_1) { /* … */ }
+03286: continue
goto __pyx_L9_continue;
03287:
03288: # Trim before memory
+03289: if block_start < that.trim_start:
__pyx_t_1 = ((__pyx_v_block_start < __pyx_v_that->trim_start) != 0); if (__pyx_t_1) { /* … */ }
+03290: delta = that.trim_start - block_start
__pyx_v_delta = (__pyx_v_that->trim_start - __pyx_v_block_start);
+03291: CheckAddrToSizeU(delta)
__pyx_t_18 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_delta); if (unlikely(__pyx_t_18 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3291, __pyx_L3_error)
+03292: block_start += <size_t>delta
__pyx_v_block_start = (__pyx_v_block_start + ((size_t)__pyx_v_delta));
+03293: block_size -= <size_t>delta
__pyx_v_block_size = (__pyx_v_block_size - ((size_t)__pyx_v_delta));
+03294: block_offset = <size_t>delta
__pyx_v_block_offset = ((size_t)__pyx_v_delta);
03295:
03296: # Trim after memory
+03297: if that.trim_endex < block_endex:
__pyx_t_1 = ((__pyx_v_that->trim_endex < __pyx_v_block_endex) != 0); if (__pyx_t_1) { /* … */ }
+03298: delta = block_endex - that.trim_endex
__pyx_v_delta = (__pyx_v_block_endex - __pyx_v_that->trim_endex);
+03299: CheckAddrToSizeU(delta)
__pyx_t_18 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_delta); if (unlikely(__pyx_t_18 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3299, __pyx_L3_error)
+03300: block_endex -= <size_t>delta
__pyx_v_block_endex = (__pyx_v_block_endex - ((size_t)__pyx_v_delta));
+03301: block_size -= <size_t>delta
__pyx_v_block_size = (__pyx_v_block_size - ((size_t)__pyx_v_delta));
03302:
+03303: if block_size:
__pyx_t_1 = (__pyx_v_block_size != 0); if (__pyx_t_1) { /* … */ goto __pyx_L17; }
03304: with cython.boundscheck(False):
+03305: block_data = &block_view[block_offset]
__pyx_t_17 = __pyx_v_block_offset; __pyx_v_block_data = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_block_view.data + __pyx_t_17 * __pyx_v_block_view.strides[0]) ))));
+03306: block = Block_Create(block_start, block_size, block_data)
__pyx_t_19 = __pyx_f_11cbytesparse_1c_Block_Create(__pyx_v_block_start, __pyx_v_block_size, __pyx_v_block_data); if (unlikely(__pyx_t_19 == ((Block_ *)NULL))) __PYX_ERR(0, 3306, __pyx_L3_error)
__pyx_v_block = __pyx_t_19;
+03307: that.blocks = Rack_Append(that.blocks, block)
__pyx_t_20 = __pyx_f_11cbytesparse_1c_Rack_Append(__pyx_v_that->blocks, __pyx_v_block); if (unlikely(__pyx_t_20 == ((Rack_ *)NULL))) __PYX_ERR(0, 3307, __pyx_L3_error)
__pyx_v_that->blocks = __pyx_t_20;
+03308: block = NULL
__pyx_v_block = NULL;
03309: else:
+03310: if not that.trim_start_ and not that.trim_endex_:
/*else*/ { __pyx_t_21 = ((!(__pyx_v_that->trim_start_ != 0)) != 0); if (__pyx_t_21) { } else { __pyx_t_1 = __pyx_t_21; goto __pyx_L19_bool_binop_done; } __pyx_t_21 = ((!(__pyx_v_that->trim_endex_ != 0)) != 0); __pyx_t_1 = __pyx_t_21; __pyx_L19_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ } } __pyx_L17:;
+03311: raise ValueError('invalid block data size')
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3311, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3311, __pyx_L3_error)
03312:
+03313: if validate:
__pyx_t_1 = (__pyx_v_validate != 0); if (__pyx_t_1) { /* … */ }
+03314: Memory_Validate(that)
__pyx_t_18 = __pyx_f_11cbytesparse_1c_Memory_Validate(__pyx_v_that); if (unlikely(__pyx_t_18 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3314, __pyx_L3_error)
03315:
+03316: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_FromBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_11) < 0) __PYX_ERR(0, 3316, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_11);
+03317: block = Block_Release(block)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_block);
+03318: that = Memory_Free(that)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_that); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3318, __pyx_L5_except_error) __pyx_v_that = __pyx_t_2;
+03319: raise
__Pyx_GIVEREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_9, __pyx_t_11); __pyx_t_6 = 0; __pyx_t_9 = 0; __pyx_t_11 = 0; __PYX_ERR(0, 3319, __pyx_L5_except_error) } __pyx_L5_except_error:;
03320:
+03321: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03322:
03323:
+03324: cdef Memory_* Memory_FromBytes_(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromBytes_(size_t __pyx_v_data_size, byte_t const *__pyx_v_data_ptr, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { CYTHON_UNUSED int __pyx_v_offset_; Memory_ *__pyx_v_that; addr_t __pyx_v_delta; byte_t const *__pyx_v_block_data; size_t __pyx_v_block_size; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; size_t __pyx_v_block_offset; Block_ *__pyx_v_block; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromBytes_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("cbytesparse.c.Memory_FromBytes_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03325: size_t data_size,
03326: const byte_t* data_ptr,
03327: object offset,
03328: object start,
03329: object endex,
03330: ) except NULL:
03331: cdef:
+03332: bint offset_ = <bint>offset
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_offset); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3332, __pyx_L1_error) __pyx_v_offset_ = __pyx_t_1;
+03333: Memory_* that = Memory_Create(start, endex)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Create(__pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 3333, __pyx_L1_error)
__pyx_v_that = __pyx_t_2;
03334: addr_t delta
03335: const byte_t* block_data
+03336: size_t block_size = data_size
__pyx_v_block_size = __pyx_v_data_size;
+03337: addr_t block_start = <addr_t>offset
__pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_offset); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3337, __pyx_L1_error) __pyx_v_block_start = ((addr_t)__pyx_t_3);
03338: addr_t block_endex
+03339: size_t block_offset = 0
__pyx_v_block_offset = 0;
+03340: Block_* block = NULL
__pyx_v_block = NULL;
03341:
+03342: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L1_error; __pyx_L7_try_return:; __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L0; __pyx_L8_try_end:; }
+03343: if that.trim_endex <= block_start:
__pyx_t_1 = ((__pyx_v_that->trim_endex <= __pyx_v_block_start) != 0); if (__pyx_t_1) { /* … */ }
+03344: return that
__pyx_r = __pyx_v_that; goto __pyx_L7_try_return;
03345:
+03346: CheckAddAddrU(block_start, block_size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block_start, __pyx_v_block_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3346, __pyx_L3_error)
+03347: block_endex = block_start + block_size
__pyx_v_block_endex = (__pyx_v_block_start + __pyx_v_block_size);
+03348: if block_endex <= that.trim_start:
__pyx_t_1 = ((__pyx_v_block_endex <= __pyx_v_that->trim_start) != 0); if (__pyx_t_1) { /* … */ }
+03349: return that
__pyx_r = __pyx_v_that; goto __pyx_L7_try_return;
03350:
03351: # Trim before memory
+03352: if block_start < that.trim_start:
__pyx_t_1 = ((__pyx_v_block_start < __pyx_v_that->trim_start) != 0); if (__pyx_t_1) { /* … */ }
+03353: delta = that.trim_start - block_start
__pyx_v_delta = (__pyx_v_that->trim_start - __pyx_v_block_start);
+03354: CheckAddrToSizeU(delta)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_delta); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3354, __pyx_L3_error)
+03355: block_start += <size_t>delta
__pyx_v_block_start = (__pyx_v_block_start + ((size_t)__pyx_v_delta));
+03356: block_size -= <size_t>delta
__pyx_v_block_size = (__pyx_v_block_size - ((size_t)__pyx_v_delta));
+03357: block_offset = <size_t>delta
__pyx_v_block_offset = ((size_t)__pyx_v_delta);
03358:
03359: # Trim after memory
+03360: if that.trim_endex < block_endex:
__pyx_t_1 = ((__pyx_v_that->trim_endex < __pyx_v_block_endex) != 0); if (__pyx_t_1) { /* … */ }
+03361: delta = block_endex - that.trim_endex
__pyx_v_delta = (__pyx_v_block_endex - __pyx_v_that->trim_endex);
+03362: CheckAddrToSizeU(delta)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_delta); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3362, __pyx_L3_error)
+03363: block_endex -= <size_t>delta
__pyx_v_block_endex = (__pyx_v_block_endex - ((size_t)__pyx_v_delta));
+03364: block_size -= <size_t>delta
__pyx_v_block_size = (__pyx_v_block_size - ((size_t)__pyx_v_delta));
03365:
+03366: if block_size:
__pyx_t_1 = (__pyx_v_block_size != 0); if (__pyx_t_1) { /* … */ }
03367: with cython.boundscheck(False):
+03368: block_data = &data_ptr[block_offset]
__pyx_v_block_data = (&(__pyx_v_data_ptr[__pyx_v_block_offset]));
+03369: block = Block_Create(block_start, block_size, block_data)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Create(__pyx_v_block_start, __pyx_v_block_size, __pyx_v_block_data); if (unlikely(__pyx_t_8 == ((Block_ *)NULL))) __PYX_ERR(0, 3369, __pyx_L3_error)
__pyx_v_block = __pyx_t_8;
+03370: that.blocks = Rack_Append(that.blocks, block)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Rack_Append(__pyx_v_that->blocks, __pyx_v_block); if (unlikely(__pyx_t_9 == ((Rack_ *)NULL))) __PYX_ERR(0, 3370, __pyx_L3_error)
__pyx_v_that->blocks = __pyx_t_9;
+03371: block = NULL
__pyx_v_block = NULL;
03372:
+03373: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_FromBytes_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 3373, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12);
+03374: block = Block_Release(block)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_block);
+03375: that = Memory_Free(that)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_that); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3375, __pyx_L5_except_error) __pyx_v_that = __pyx_t_2;
+03376: raise
__Pyx_GIVEREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_10, __pyx_t_11, __pyx_t_12); __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 3376, __pyx_L5_except_error) } __pyx_L5_except_error:;
03377:
+03378: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03379:
03380:
+03381: cdef Memory_* Memory_FromBytes(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromBytes(PyObject *__pyx_v_data, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { __Pyx_memviewslice __pyx_v_data_view = { 0, 0, { 0 }, { 0 }, { 0 } }; byte_t const *__pyx_v_data_ptr; size_t __pyx_v_data_size; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromBytes", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_1, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_FromBytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_data_view, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03382: object data,
03383: object offset,
03384: object start,
03385: object endex,
03386: ) except NULL:
03387: cdef:
+03388: const byte_t[:] data_view = data
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_data, 0); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3388, __pyx_L1_error) __pyx_v_data_view = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
03389: const byte_t* data_ptr
03390: size_t data_size
03391:
03392: with cython.boundscheck(False):
+03393: data_ptr = &data_view[0]
__pyx_t_2 = 0; if (__pyx_t_2 < 0) __pyx_t_2 += __pyx_v_data_view.shape[0]; __pyx_v_data_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_data_view.data + __pyx_t_2 * __pyx_v_data_view.strides[0]) ))));
+03394: data_size = len(data_view)
__pyx_t_3 = __Pyx_MemoryView_Len(__pyx_v_data_view);
__pyx_v_data_size = __pyx_t_3;
03395:
+03396: return Memory_FromBytes_(data_size, data_ptr, offset, start, endex)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_FromBytes_(__pyx_v_data_size, __pyx_v_data_ptr, __pyx_v_offset, __pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_4 == ((Memory_ *)NULL))) __PYX_ERR(0, 3396, __pyx_L1_error)
__pyx_r = __pyx_t_4;
goto __pyx_L0;
03397:
03398:
+03399: cdef Memory_* Memory_FromItems(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromItems(PyObject *__pyx_v_items, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, int __pyx_v_validate) { Memory_ *__pyx_v_that; PyObject *__pyx_v_address = NULL; PyObject *__pyx_v_value = NULL; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromItems", 0); __Pyx_INCREF(__pyx_v_items); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("cbytesparse.c.Memory_FromItems", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XDECREF(__pyx_v_value); __Pyx_XDECREF(__pyx_v_items); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03400: object items,
03401: object offset,
03402: object start,
03403: object endex,
03404: bint validate,
03405: ) except NULL:
03406: cdef:
+03407: Memory_* that = Memory_Create(start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Create(__pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 3407, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
03408:
+03409: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L8_try_end:; }
+03410: if isinstance(items, Mapping):
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3410, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_IsInstance(__pyx_v_items, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 3410, __pyx_L3_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = (__pyx_t_6 != 0); if (__pyx_t_7) { /* … */ }
+03411: items = items.items()
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_items, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3411, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3411, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_items, __pyx_t_5); __pyx_t_5 = 0;
03412:
+03413: for address, value in items:
if (likely(PyList_CheckExact(__pyx_v_items)) || PyTuple_CheckExact(__pyx_v_items)) { __pyx_t_5 = __pyx_v_items; __Pyx_INCREF(__pyx_t_5); __pyx_t_10 = 0; __pyx_t_11 = NULL; } else { __pyx_t_10 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3413, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3413, __pyx_L3_error) } for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_10); __Pyx_INCREF(__pyx_t_8); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 3413, __pyx_L3_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3413, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_10); __Pyx_INCREF(__pyx_t_8); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 3413, __pyx_L3_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3413, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); #endif } } else { __pyx_t_8 = __pyx_t_11(__pyx_t_5); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3413, __pyx_L3_error) } break; } __Pyx_GOTREF(__pyx_t_8); } if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { PyObject* sequence = __pyx_t_8; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3413, __pyx_L3_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_12 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_12); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3413, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3413, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_12); #endif __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { Py_ssize_t index = -1; __pyx_t_13 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3413, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; index = 0; __pyx_t_9 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_9)) goto __pyx_L12_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_12 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_12)) goto __pyx_L12_unpacking_failed; __Pyx_GOTREF(__pyx_t_12); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < 0) __PYX_ERR(0, 3413, __pyx_L3_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L13_unpacking_done; __pyx_L12_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3413, __pyx_L3_error) __pyx_L13_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_address, __pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_12); __pyx_t_12 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+03414: Memory_Poke(that, address + offset, value)
__pyx_t_8 = PyNumber_Add(__pyx_v_address, __pyx_v_offset); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3414, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_15 = __pyx_f_11cbytesparse_1c_Memory_Poke(__pyx_v_that, __pyx_t_8, __pyx_v_value); if (unlikely(__pyx_t_15 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3414, __pyx_L3_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
03415:
+03416: if validate:
__pyx_t_7 = (__pyx_v_validate != 0); if (__pyx_t_7) { /* … */ }
+03417: Memory_Validate(that)
__pyx_t_15 = __pyx_f_11cbytesparse_1c_Memory_Validate(__pyx_v_that); if (unlikely(__pyx_t_15 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3417, __pyx_L3_error)
03418:
+03419: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_FromItems", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_12) < 0) __PYX_ERR(0, 3419, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_12);
+03420: that = Memory_Free(that)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_that); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3420, __pyx_L5_except_error) __pyx_v_that = __pyx_t_1;
+03421: raise
__Pyx_GIVEREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_8, __pyx_t_12); __pyx_t_5 = 0; __pyx_t_8 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 3421, __pyx_L5_except_error) } __pyx_L5_except_error:;
03422:
+03423: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03424:
03425:
+03426: cdef Memory_* Memory_FromMemory_(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromMemory_(Memory_ const *__pyx_v_memory, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, int __pyx_v_validate) { Memory_ *__pyx_v_that; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromMemory_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.Memory_FromMemory_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03427: const Memory_* memory,
03428: object offset,
03429: object start,
03430: object endex,
03431: bint validate,
03432: ) except NULL:
03433: cdef:
+03434: Memory_* that = Memory_Copy(memory)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Copy(__pyx_v_memory); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 3434, __pyx_L1_error)
__pyx_v_that = __pyx_t_1;
03435:
+03436: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L8_try_end:; }
+03437: that.trim_start = ADDR_MIN
__pyx_v_that->trim_start = ADDR_MIN;
+03438: that.trim_endex = ADDR_MAX
__pyx_v_that->trim_endex = ADDR_MAX;
+03439: that.trim_start_ = False
__pyx_v_that->trim_start_ = 0;
+03440: that.trim_endex_ = False
__pyx_v_that->trim_endex_ = 0;
03441:
+03442: Memory_Shift(that, offset)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Shift(__pyx_v_that, __pyx_v_offset); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3442, __pyx_L3_error)
03443:
+03444: Memory_SetTrimStart(that, start)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_SetTrimStart(__pyx_v_that, __pyx_v_start); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3444, __pyx_L3_error)
+03445: Memory_SetTrimEndex(that, endex)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_SetTrimEndex(__pyx_v_that, __pyx_v_endex); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3445, __pyx_L3_error)
03446:
+03447: if validate:
__pyx_t_6 = (__pyx_v_validate != 0); if (__pyx_t_6) { /* … */ }
+03448: Memory_Validate(that)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Validate(__pyx_v_that); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3448, __pyx_L3_error)
03449:
+03450: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_FromMemory_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 3450, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_9);
+03451: that = Memory_Free(that)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_that); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3451, __pyx_L5_except_error) __pyx_v_that = __pyx_t_1;
+03452: raise
__Pyx_GIVEREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_8, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __PYX_ERR(0, 3452, __pyx_L5_except_error) } __pyx_L5_except_error:;
03453:
+03454: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03455:
03456:
+03457: cdef Memory_* Memory_FromMemory(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromMemory(PyObject *__pyx_v_memory, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, int __pyx_v_validate) { Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromMemory", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.Memory_FromMemory", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03458: object memory,
03459: object offset,
03460: object start,
03461: object endex,
03462: bint validate,
03463: ) except NULL:
03464:
+03465: if isinstance(memory, Memory):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_memory, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
+03466: return Memory_FromMemory_((<Memory>memory)._, offset, start, endex, validate)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_FromMemory_(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_memory)->_, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_validate); if (unlikely(__pyx_t_3 == ((Memory_ *)NULL))) __PYX_ERR(0, 3466, __pyx_L1_error)
__pyx_r = __pyx_t_3;
goto __pyx_L0;
03467: else:
+03468: return Memory_FromBlocks(memory.blocks(), offset, start, endex, validate)
/*else*/ { __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_memory, __pyx_n_s_blocks); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_FromBlocks(__pyx_t_4, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_validate); if (unlikely(__pyx_t_3 == ((Memory_ *)NULL))) __PYX_ERR(0, 3468, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; goto __pyx_L0; }
03469:
03470:
+03471: cdef Memory_* Memory_FromValues(
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_FromValues(PyObject *__pyx_v_values, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, int __pyx_v_validate) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; Memory_ *__pyx_v_that; addr_t __pyx_v_address; int __pyx_v_append; byte_t __pyx_v_value_; PyObject *__pyx_v_value = NULL; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FromValues", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_15); __Pyx_AddTraceback("cbytesparse.c.Memory_FromValues", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_value); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03472: object values,
03473: object offset,
03474: object start,
03475: object endex,
03476: bint validate,
03477: ) except NULL:
03478: cdef:
+03479: addr_t start_ = ADDR_MIN if start is None else <addr_t>start
__pyx_t_2 = (__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = ADDR_MIN; } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3479, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_start_ = __pyx_t_1;
+03480: addr_t endex_ = ADDR_MAX if endex is None else <addr_t>endex
__pyx_t_2 = (__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = ADDR_MAX; } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3480, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_endex_ = __pyx_t_1;
+03481: Memory_* that = Memory_Create(start, endex)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Create(__pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_4 == ((Memory_ *)NULL))) __PYX_ERR(0, 3481, __pyx_L1_error)
__pyx_v_that = __pyx_t_4;
+03482: addr_t address = <addr_t>offset
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_offset); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3482, __pyx_L1_error) __pyx_v_address = ((addr_t)__pyx_t_1);
+03483: bint append = False
__pyx_v_append = 0;
03484: byte_t value_
03485:
+03486: if endex_ < start_:
__pyx_t_2 = ((__pyx_v_endex_ < __pyx_v_start_) != 0); if (__pyx_t_2) { /* … */ }
+03487: endex_ = start_
__pyx_v_endex_ = __pyx_v_start_;
03488:
+03489: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L9_try_end:; }
+03490: for value in values:
if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) { __pyx_t_8 = __pyx_v_values; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3490, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3490, __pyx_L4_error) } for (;;) { if (likely(!__pyx_t_10)) { if (likely(PyList_CheckExact(__pyx_t_8))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_11); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 3490, __pyx_L4_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3490, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_11); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 3490, __pyx_L4_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3490, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11); #endif } } else { __pyx_t_11 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_11)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3490, __pyx_L4_error) } break; } __Pyx_GOTREF(__pyx_t_11); } __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11); __pyx_t_11 = 0; /* … */ } __pyx_L11_break:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+03491: if endex_ <= address:
__pyx_t_2 = ((__pyx_v_endex_ <= __pyx_v_address) != 0); if (__pyx_t_2) { /* … */ }
+03492: break
goto __pyx_L11_break;
+03493: if start_ <= address:
__pyx_t_2 = ((__pyx_v_start_ <= __pyx_v_address) != 0); if (__pyx_t_2) { /* … */ }
+03494: if value is not None:
__pyx_t_2 = (__pyx_v_value != Py_None); __pyx_t_12 = (__pyx_t_2 != 0); if (__pyx_t_12) { /* … */ goto __pyx_L14; }
+03495: value_ = <byte_t>value
__pyx_t_13 = __Pyx_PyInt_As_byte_t(__pyx_v_value); if (unlikely((__pyx_t_13 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3495, __pyx_L4_error) __pyx_v_value_ = ((byte_t)__pyx_t_13);
+03496: if append:
__pyx_t_12 = (__pyx_v_append != 0); if (__pyx_t_12) { /* … */ goto __pyx_L15; }
+03497: Memory_Append_(that, value_)
__pyx_t_14 = __pyx_f_11cbytesparse_1c_Memory_Append_(__pyx_v_that, __pyx_v_value_); if (unlikely(__pyx_t_14 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3497, __pyx_L4_error)
03498: else:
+03499: Memory_Poke_(that, address, value_)
/*else*/ {
__pyx_t_14 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_that, __pyx_v_address, __pyx_v_value_); if (unlikely(__pyx_t_14 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3499, __pyx_L4_error)
}
__pyx_L15:;
+03500: append = True
__pyx_v_append = 1;
03501: else:
+03502: append = False
/*else*/ { __pyx_v_append = 0; } __pyx_L14:;
+03503: address += 1
__pyx_v_address = (__pyx_v_address + 1);
03504:
+03505: if validate:
__pyx_t_12 = (__pyx_v_validate != 0); if (__pyx_t_12) { /* … */ }
+03506: Memory_Validate(that)
__pyx_t_14 = __pyx_f_11cbytesparse_1c_Memory_Validate(__pyx_v_that); if (unlikely(__pyx_t_14 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3506, __pyx_L4_error)
03507:
+03508: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_FromValues", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 3508, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_15);
+03509: that = Memory_Free(that)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_that); if (unlikely(__pyx_t_4 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3509, __pyx_L6_except_error) __pyx_v_that = __pyx_t_4;
+03510: raise
__Pyx_GIVEREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_11, __pyx_t_15); __pyx_t_8 = 0; __pyx_t_11 = 0; __pyx_t_15 = 0; __PYX_ERR(0, 3510, __pyx_L6_except_error) } __pyx_L6_except_error:;
03511:
+03512: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03513:
03514:
+03515: cdef bint Memory_EqSame_(const Memory_* that, const Memory_* other) except -1:
static int __pyx_f_11cbytesparse_1c_Memory_EqSame_(Memory_ const *__pyx_v_that, Memory_ const *__pyx_v_other) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_EqSame_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_EqSame_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+03516: return Rack_Eq(that.blocks, other.blocks)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Eq(__pyx_v_that->blocks, __pyx_v_other->blocks); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3516, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
03517:
03518:
+03519: cdef bint Memory_EqRaw_(const Memory_* that, size_t data_size, const byte_t* data_ptr) except -1:
static int __pyx_f_11cbytesparse_1c_Memory_EqRaw_(Memory_ const *__pyx_v_that, size_t __pyx_v_data_size, byte_t const *__pyx_v_data_ptr) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; Block_ const *__pyx_v_block; size_t __pyx_v_size; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_EqRaw_", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03520: cdef:
+03521: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
03522: size_t block_count
03523: const Block_* block
03524: size_t size
03525:
+03526: block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
+03527: if block_count:
__pyx_t_2 = (__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ }
+03528: if block_count != 1:
__pyx_t_2 = ((__pyx_v_block_count != 1) != 0); if (__pyx_t_2) { /* … */ }
+03529: return False
__pyx_r = 0; goto __pyx_L0;
03530:
+03531: block = Rack_First__(blocks)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_blocks);
+03532: size = Block_Length(block)
__pyx_v_size = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block);
+03533: if data_size != size:
__pyx_t_2 = ((__pyx_v_data_size != __pyx_v_size) != 0); if (__pyx_t_2) { /* … */ }
+03534: return False
__pyx_r = 0; goto __pyx_L0;
03535:
+03536: if memcmp(Block_At__(block, 0), data_ptr, data_size):
__pyx_t_2 = (memcmp(__pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_block, 0), __pyx_v_data_ptr, __pyx_v_data_size) != 0); if (__pyx_t_2) { /* … */ }
+03537: return False
__pyx_r = 0; goto __pyx_L0;
+03538: return True
__pyx_r = 1; goto __pyx_L0;
03539: else:
+03540: return not data_size
/*else*/ { __pyx_r = (!(__pyx_v_data_size != 0)); goto __pyx_L0; }
03541:
03542:
+03543: cdef bint Memory_EqView_(const Memory_* that, const byte_t[:] view) except -1:
static int __pyx_f_11cbytesparse_1c_Memory_EqView_(Memory_ const *__pyx_v_that, __Pyx_memviewslice __pyx_v_view) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_EqView_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_EqView_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03544: with cython.boundscheck(False):
+03545: return Memory_EqRaw_(that, len(view), &view[0])
__pyx_t_1 = __Pyx_MemoryView_Len(__pyx_v_view); __pyx_t_2 = 0; if (__pyx_t_2 < 0) __pyx_t_2 += __pyx_v_view.shape[0]; __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_EqRaw_(__pyx_v_that, __pyx_t_1, (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_view.data + __pyx_t_2 * __pyx_v_view.strides[0]) ))))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3545, __pyx_L1_error) __pyx_r = __pyx_t_3; goto __pyx_L0;
03546:
03547:
+03548: cdef bint Memory_EqIter_(const Memory_* that, object iterable) except -1:
static int __pyx_f_11cbytesparse_1c_Memory_EqIter_(Memory_ const *__pyx_v_that, PyObject *__pyx_v_iterable) { addr_t __pyx_v_start; addr_t __pyx_v_endex; Rover_ *__pyx_v_rover; int __pyx_v_equal; int __pyx_v_item1_; int __pyx_v_item2_; PyObject *__pyx_v_item2 = NULL; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_EqIter_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory_EqIter_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_item2); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03549: cdef:
+03550: addr_t start = Memory_Start(that)
__pyx_v_start = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that);
+03551: addr_t endex = Memory_ContentEndex(that)
__pyx_v_endex = __pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_that);
+03552: Rover_* rover = Rover_Create(that, start, endex, 0, NULL, True, False)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rover_Create(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0, NULL, 1, 0); if (unlikely(__pyx_t_1 == ((Rover_ *)NULL))) __PYX_ERR(0, 3552, __pyx_L1_error)
__pyx_v_rover = __pyx_t_1;
+03553: bint equal = True
__pyx_v_equal = 1;
03554: int item1_
03555: int item2_
03556:
+03557: try:
/*try:*/ {
+03558: for item2 in iterable:
if (likely(PyList_CheckExact(__pyx_v_iterable)) || PyTuple_CheckExact(__pyx_v_iterable)) { __pyx_t_2 = __pyx_v_iterable; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_iterable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3558, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3558, __pyx_L4_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3558, __pyx_L4_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3558, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3558, __pyx_L4_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3558, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3558, __pyx_L4_error) } break; } __Pyx_GOTREF(__pyx_t_5); } __Pyx_XDECREF_SET(__pyx_v_item2, __pyx_t_5); __pyx_t_5 = 0; /* … */ } /*else*/ { /* … */ __pyx_L7_break:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; }
+03559: item1_ = Rover_Next_(rover) if Rover_HasNext(rover) else -1
if ((__pyx_f_11cbytesparse_1c_Rover_HasNext(__pyx_v_rover) != 0)) {
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Rover_Next_(__pyx_v_rover); if (unlikely(__pyx_t_7 == ((int)-2))) __PYX_ERR(0, 3559, __pyx_L4_error)
__pyx_t_6 = __pyx_t_7;
} else {
__pyx_t_6 = -1;
}
__pyx_v_item1_ = __pyx_t_6;
+03560: item2_ = -1 if item2 is None else <int><unsigned><byte_t>item2
__pyx_t_8 = (__pyx_v_item2 == Py_None); if ((__pyx_t_8 != 0)) { __pyx_t_6 = -1; } else { __pyx_t_9 = __Pyx_PyInt_As_byte_t(__pyx_v_item2); if (unlikely((__pyx_t_9 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3560, __pyx_L4_error) __pyx_t_6 = ((int)((unsigned int)((byte_t)__pyx_t_9))); } __pyx_v_item2_ = __pyx_t_6;
03561:
+03562: if item1_ != item2_:
__pyx_t_8 = ((__pyx_v_item1_ != __pyx_v_item2_) != 0); if (__pyx_t_8) { /* … */ }
+03563: equal = False
__pyx_v_equal = 0;
+03564: break
goto __pyx_L7_break;
03565: else:
+03566: if Rover_HasNext(rover):
__pyx_t_8 = (__pyx_f_11cbytesparse_1c_Rover_HasNext(__pyx_v_rover) != 0); if (__pyx_t_8) { /* … */ } }
+03567: equal = False
__pyx_v_equal = 0;
03568: finally:
+03569: Rover_Free(rover)
/*finally:*/ { /*normal exit:*/{ __pyx_t_1 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_v_rover); if (unlikely(__pyx_t_1 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3569, __pyx_L1_error) goto __pyx_L5; } __pyx_L4_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_10 = __pyx_filename; { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_v_rover); if (unlikely(__pyx_t_1 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3569, __pyx_L12_error) } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); } __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13); __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_10; goto __pyx_L1_error; __pyx_L12_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); } __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; goto __pyx_L1_error; } __pyx_L5:; }
03570:
+03571: return equal
__pyx_r = __pyx_v_equal; goto __pyx_L0;
03572:
03573:
+03574: cdef bint Memory_EqMemory_(const Memory_* that, object memory) except -1:
static int __pyx_f_11cbytesparse_1c_Memory_EqMemory_(Memory_ const *__pyx_v_that, PyObject *__pyx_v_memory) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_v_block_start = NULL; PyObject *__pyx_v_block_data = NULL; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_EqMemory_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_EqMemory_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1); __Pyx_XDECREF(__pyx_v_block_start); __Pyx_XDECREF(__pyx_v_block_data); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03575: cdef:
+03576: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
+03577: size_t block_index = 0
__pyx_v_block_index = 0;
03578: const Block_* block
03579: size_t block_size
03580: const byte_t[:] view
03581:
+03582: if Memory_ContentParts(that) != memory.content_parts:
__pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_f_11cbytesparse_1c_Memory_ContentParts(__pyx_v_that)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_memory, __pyx_n_s_content_parts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_5) { /* … */ }
+03583: return False
__pyx_r = 0; goto __pyx_L0;
03584:
+03585: for block_start, block_data in memory.blocks():
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_memory, __pyx_n_s_blocks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3585, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3585, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3585, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3585, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3585, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_8 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(0, 3585, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3585, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_block_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_block_data, __pyx_t_8); __pyx_t_8 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+03586: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
03587:
+03588: if Block_Start(block) != block_start:
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_v_block_start, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3588, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3588, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_5) { /* … */ }
+03589: return False
__pyx_r = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L0;
03590:
03591: with cython.boundscheck(False):
+03592: view = block_data
__pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_block_data, 0); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3592, __pyx_L1_error) __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1); __pyx_v_view = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+03593: if not Block_Eq_(block, len(view), &view[0]):
__pyx_t_12 = __Pyx_MemoryView_Len(__pyx_v_view);
__pyx_t_13 = 0;
if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_v_view.shape[0];
__pyx_t_5 = ((!(__pyx_f_11cbytesparse_1c_Block_Eq_(__pyx_v_block, __pyx_t_12, (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_view.data + __pyx_t_13 * __pyx_v_view.strides[0]) ))))) != 0)) != 0);
if (__pyx_t_5) {
/* … */
}
+03594: return False
__pyx_r = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L0;
03595:
+03596: block_index += 1
__pyx_v_block_index = (__pyx_v_block_index + 1);
03597:
+03598: return True
__pyx_r = 1; goto __pyx_L0;
03599:
03600:
+03601: cdef bint Memory_Eq(const Memory_* that, object other) except -1:
static int __pyx_f_11cbytesparse_1c_Memory_Eq(Memory_ const *__pyx_v_that, PyObject *__pyx_v_other) { __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Eq", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cbytesparse.c.Memory_Eq", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03602: cdef:
03603: const byte_t[:] view
03604:
+03605: if isinstance(other, Memory):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
+03606: return Memory_EqSame_(that, (<Memory>other)._)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_EqSame_(__pyx_v_that, ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_other)->_); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3606, __pyx_L1_error)
__pyx_r = __pyx_t_2;
goto __pyx_L0;
03607:
+03608: elif isinstance(other, ImmutableMemory):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_IsInstance(__pyx_v_other, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3608, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+03609: return Memory_EqMemory_(that, other)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_EqMemory_(__pyx_v_that, __pyx_v_other); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3609, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
03610:
03611: else:
+03612: try:
/*else*/ { { /*try:*/ { /* … */ } /* … */ __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L1_error; __pyx_L7_except_return:; __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L0; } }
+03613: view = other
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_other, 0); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3613, __pyx_L4_error) __pyx_v_view = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+03614: except TypeError:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_8) { __Pyx_AddTraceback("cbytesparse.c.Memory_Eq", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(0, 3614, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_10);
+03615: return Memory_EqIter_(that, other)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_EqIter_(__pyx_v_that, __pyx_v_other); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3615, __pyx_L6_except_error) __pyx_r = __pyx_t_1; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L7_except_return; } goto __pyx_L6_except_error; __pyx_L6_except_error:;
03616: else:
+03617: return Memory_EqView_(that, view)
/*else:*/ { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_EqView_(__pyx_v_that, __pyx_v_view); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3617, __pyx_L6_except_error) __pyx_r = __pyx_t_1; goto __pyx_L7_except_return; } __pyx_L4_error:; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
03618:
03619:
+03620: cdef Memory_* Memory_Add(const Memory_* that, object value) except NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Add(Memory_ const *__pyx_v_that, PyObject *__pyx_v_value) { Memory_ *__pyx_v_memory; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Add", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cbytesparse.c.Memory_Add", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03621: cdef:
+03622: Memory_* memory = Memory_Copy(that)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Copy(__pyx_v_that); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 3622, __pyx_L1_error)
__pyx_v_memory = __pyx_t_1;
+03623: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); goto __pyx_L1_error; __pyx_L8_try_end:; }
+03624: Memory_Extend(memory, value, 0)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Extend(__pyx_v_memory, __pyx_v_value, __pyx_int_0); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3624, __pyx_L3_error)
+03625: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Add", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 3625, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8);
+03626: memory = Memory_Free(memory)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3626, __pyx_L5_except_error) __pyx_v_memory = __pyx_t_1;
+03627: raise
__Pyx_GIVEREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_7, __pyx_t_8); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __PYX_ERR(0, 3627, __pyx_L5_except_error) } __pyx_L5_except_error:;
+03628: return memory
__pyx_r = __pyx_v_memory; goto __pyx_L0;
03629:
03630:
+03631: cdef Memory_* Memory_IAdd(Memory_* that, object value) except NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_IAdd(Memory_ *__pyx_v_that, PyObject *__pyx_v_value) { Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_IAdd", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_IAdd", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+03632: Memory_Extend(that, value, 0)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Extend(__pyx_v_that, __pyx_v_value, __pyx_int_0); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3632, __pyx_L1_error)
+03633: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03634:
03635:
+03636: cdef Memory_* Memory_Mul(const Memory_* that, addr_t times) except NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Mul(Memory_ const *__pyx_v_that, addr_t __pyx_v_times) { Memory_ *__pyx_v_memory; addr_t __pyx_v_offset; addr_t __pyx_v_size; CYTHON_UNUSED addr_t __pyx_v_time; PyObject *__pyx_v_start = NULL; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Mul", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("cbytesparse.c.Memory_Mul", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03637: cdef:
+03638: Memory_* memory = NULL
__pyx_v_memory = NULL;
03639: addr_t offset
03640: addr_t size
03641: addr_t time
03642:
+03643: if times and Rack_Bool(that.blocks):
__pyx_t_2 = (__pyx_v_times != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } __pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+03644: start = Memory_Start(that)
__pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_start = __pyx_t_3; __pyx_t_3 = 0;
+03645: size = Memory_Endex(that) - start
__pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_v_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_4); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3645, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_size = __pyx_t_5;
+03646: offset = size # adjust first write
__pyx_v_offset = __pyx_v_size;
+03647: memory = Memory_Copy(that)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Copy(__pyx_v_that); if (unlikely(__pyx_t_6 == ((Memory_ *)NULL))) __PYX_ERR(0, 3647, __pyx_L1_error)
__pyx_v_memory = __pyx_t_6;
+03648: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_try_end; __pyx_L6_error:; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); goto __pyx_L1_error; __pyx_L11_try_end:; }
+03649: for time in range(times - 1):
__pyx_t_5 = (__pyx_v_times - 1); __pyx_t_10 = __pyx_t_5; for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_v_time = __pyx_t_11;
+03650: Memory_WriteSame_(memory, offset, that, False)
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_memory, __pyx_v_offset, __pyx_v_that, 0); if (unlikely(__pyx_t_12 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3650, __pyx_L6_error)
+03651: offset += size
__pyx_v_offset = (__pyx_v_offset + __pyx_v_size); }
+03652: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Mul", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_13) < 0) __PYX_ERR(0, 3652, __pyx_L8_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_13);
+03653: memory = Memory_Free(memory)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_6 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3653, __pyx_L8_except_error) __pyx_v_memory = __pyx_t_6;
+03654: raise
__Pyx_GIVEREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_13); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_13 = 0; __PYX_ERR(0, 3654, __pyx_L8_except_error) } __pyx_L8_except_error:;
03655:
+03656: return memory
__pyx_r = __pyx_v_memory; goto __pyx_L0;
03657: else:
+03658: return Memory_Alloc()
/*else*/ {
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Alloc(); if (unlikely(__pyx_t_6 == ((Memory_ *)NULL))) __PYX_ERR(0, 3658, __pyx_L1_error)
__pyx_r = __pyx_t_6;
goto __pyx_L0;
}
03659:
03660:
+03661: cdef Memory_* Memory_IMul(Memory_* that, addr_t times) except NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_IMul(Memory_ *__pyx_v_that, addr_t __pyx_v_times) { Memory_ *__pyx_v_memory; addr_t __pyx_v_offset; PyObject *__pyx_v_start = NULL; PyObject *__pyx_v_size = NULL; CYTHON_UNUSED addr_t __pyx_v_time; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_IMul", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory_IMul", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_size); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03662: cdef:
+03663: Memory_* memory = NULL
__pyx_v_memory = NULL;
03664: addr_t offset
03665:
03666: times = int(times)
+03667: if times < 0:
__pyx_t_1 = ((__pyx_v_times < 0) != 0); if (__pyx_t_1) { /* … */ }
+03668: times = 0
__pyx_v_times = 0;
03669:
+03670: if times and Rack_Bool(that.blocks):
__pyx_t_2 = (__pyx_v_times != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } __pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:; if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+03671: start = Memory_Start(that)
__pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_start = __pyx_t_3; __pyx_t_3 = 0;
+03672: size = Memory_Endex(that) - start
__pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_v_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_size = __pyx_t_4; __pyx_t_4 = 0;
+03673: offset = size
__pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3673, __pyx_L1_error) __pyx_v_offset = __pyx_t_5;
+03674: memory = Memory_Copy(that)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Copy(__pyx_v_that); if (unlikely(__pyx_t_6 == ((Memory_ *)NULL))) __PYX_ERR(0, 3674, __pyx_L1_error)
__pyx_v_memory = __pyx_t_6;
+03675: try:
/*try:*/ {
+03676: for time in range(times - 1):
__pyx_t_5 = (__pyx_v_times - 1); __pyx_t_7 = __pyx_t_5; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_time = __pyx_t_8;
+03677: Memory_WriteSame_(that, offset, memory, False)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_that, __pyx_v_offset, __pyx_v_memory, 0); if (unlikely(__pyx_t_9 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3677, __pyx_L8_error)
+03678: offset += size
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3678, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3678, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3678, __pyx_L8_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_offset = __pyx_t_10; } }
03679: finally:
+03680: memory = Memory_Free(memory)
/*finally:*/ { /*normal exit:*/{ __pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_6 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3680, __pyx_L1_error) __pyx_v_memory = __pyx_t_6; goto __pyx_L9; } __pyx_L8_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_6 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3680, __pyx_L13_error) __pyx_v_memory = __pyx_t_6; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L1_error; __pyx_L13_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); } __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; goto __pyx_L1_error; } __pyx_L9:; }
03681: else:
+03682: that.blocks = Rack_Clear(that.blocks)
/*else*/ {
__pyx_t_20 = __pyx_f_11cbytesparse_1c_Rack_Clear(__pyx_v_that->blocks); if (unlikely(__pyx_t_20 == ((Rack_ *)NULL))) __PYX_ERR(0, 3682, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_20;
}
__pyx_L4:;
+03683: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
03684:
03685:
+03686: cdef bint Memory_Bool(const Memory_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Memory_Bool(Memory_ const *__pyx_v_that) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+03687: return Rack_Bool(that.blocks)
__pyx_r = __pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks); goto __pyx_L0;
03688:
03689:
+03690: cdef addr_t Memory_Length(const Memory_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Memory_Length(Memory_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+03691: return Memory_Endex(that) - Memory_Start(that)
__pyx_r = (__pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that) - __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that)); goto __pyx_L0;
03692:
03693:
+03694: cdef bint Memory_IsEmpty(const Memory_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Memory_IsEmpty(Memory_ const *__pyx_v_that) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+03695: return not Rack_Bool(that.blocks)
__pyx_r = (!(__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0)); goto __pyx_L0;
03696:
03697:
+03698: cdef object Memory_ObjFind(const Memory_* that, object item, object start, object endex):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_ObjFind(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_v_offset = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_ObjFind", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory_ObjFind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_offset); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+03699: offset = Memory_Find(that, item, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Find(__pyx_v_that, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_offset = __pyx_t_1; __pyx_t_1 = 0;
+03700: if offset >= 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3700, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3700, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+03701: return offset
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_offset); __pyx_r = __pyx_v_offset; goto __pyx_L0;
03702: else:
+03703: return None
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; }
03704:
03705:
+03706: cdef object Memory_RevObjFind(const Memory_* that, object item, object start, object endex):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_RevObjFind(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_v_offset = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_RevObjFind", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory_RevObjFind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_offset); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+03707: offset = Memory_RevFind(that, item, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_RevFind(__pyx_v_that, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_offset = __pyx_t_1; __pyx_t_1 = 0;
+03708: if offset >= 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3708, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+03709: return offset
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_offset); __pyx_r = __pyx_v_offset; goto __pyx_L0;
03710: else:
+03711: return None
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; }
03712:
03713:
+03714: cdef addr_t Memory_FindUnbounded_(const Memory_* that, size_t size, const byte_t* buffer) except? -1:
static addr_t __pyx_f_11cbytesparse_1c_Memory_FindUnbounded_(Memory_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; Py_ssize_t __pyx_v_offset; addr_t __pyx_v_start_; addr_t __pyx_v_offset_; addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FindUnbounded_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_FindUnbounded_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1LL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03715: cdef:
+03716: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
03717: size_t block_index
03718: const Block_* block
03719: ssize_t offset
03720: addr_t start_
03721: addr_t offset_
03722:
+03723: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+03724: for block_index in range(Rack_Length(blocks)):
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_block_index = __pyx_t_5;
+03725: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+03726: offset = Block_Find_(block, 0, SIZE_MAX, size, buffer)
__pyx_v_offset = __pyx_f_11cbytesparse_1c_Block_Find_(__pyx_v_block, 0, SIZE_MAX, __pyx_v_size, __pyx_v_buffer);
+03727: if offset >= 0:
__pyx_t_2 = ((__pyx_v_offset >= 0) != 0); if (__pyx_t_2) { /* … */ } }
+03728: start_ = Block_Start(block)
__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+03729: offset_ = <addr_t><size_t>offset
__pyx_v_offset_ = ((addr_t)((size_t)__pyx_v_offset));
+03730: CheckAddAddrU(start_, offset_)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start_, __pyx_v_offset_); if (unlikely(__pyx_t_6 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3730, __pyx_L1_error)
+03731: return start_ + offset_
__pyx_r = (__pyx_v_start_ + __pyx_v_offset_); goto __pyx_L0;
+03732: return ADDR_MAX
__pyx_r = ADDR_MAX; goto __pyx_L0;
03733:
03734:
+03735: cdef addr_t Memory_FindBounded_(const Memory_* that, size_t size, const byte_t* buffer,
static addr_t __pyx_f_11cbytesparse_1c_Memory_FindBounded_(Memory_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer, addr_t __pyx_v_start, addr_t __pyx_v_endex) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; Py_ssize_t __pyx_v_offset; size_t __pyx_v_block_index_start; size_t __pyx_v_block_index_endex; size_t __pyx_v_slice_start; size_t __pyx_v_slice_endex; addr_t __pyx_v_start_; addr_t __pyx_v_offset_; addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_FindBounded_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_FindBounded_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1LL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03736: addr_t start, addr_t endex) except? -1:
03737: cdef:
+03738: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
03739: size_t block_index
03740: const Block_* block
03741: ssize_t offset
03742: size_t block_index_start
03743: size_t block_index_endex
03744: size_t slice_start
03745: size_t slice_endex
03746: addr_t start_
03747: addr_t offset_
03748:
+03749: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+03750: if endex < start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ }
+03751: endex = start
__pyx_v_endex = __pyx_v_start;
+03752: block_index_start = Rack_IndexStart(blocks, start)
__pyx_v_block_index_start = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_start);
+03753: block_index_endex = Rack_IndexEndex(blocks, endex)
__pyx_v_block_index_endex = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_v_endex);
03754:
+03755: for block_index in range(block_index_start, block_index_endex):
__pyx_t_3 = __pyx_v_block_index_endex; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = __pyx_v_block_index_start; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_block_index = __pyx_t_5;
+03756: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+03757: slice_start, slice_endex = Block_BoundAddressSliceToOffset(block, start, endex)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Block_BoundAddressSliceToOffset(__pyx_v_block, __pyx_v_start, __pyx_v_endex); __pyx_t_7 = __pyx_t_6.f0; __pyx_t_8 = __pyx_t_6.f1; __pyx_v_slice_start = __pyx_t_7; __pyx_v_slice_endex = __pyx_t_8;
+03758: offset = Block_Find_(block, slice_start, slice_endex, size, buffer)
__pyx_v_offset = __pyx_f_11cbytesparse_1c_Block_Find_(__pyx_v_block, __pyx_v_slice_start, __pyx_v_slice_endex, __pyx_v_size, __pyx_v_buffer);
+03759: if offset >= 0:
__pyx_t_2 = ((__pyx_v_offset >= 0) != 0); if (__pyx_t_2) { /* … */ } }
+03760: start_ = Block_Start(block)
__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+03761: offset_ = <addr_t><size_t>offset
__pyx_v_offset_ = ((addr_t)((size_t)__pyx_v_offset));
+03762: CheckAddAddrU(start_, offset_)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start_, __pyx_v_offset_); if (unlikely(__pyx_t_9 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3762, __pyx_L1_error)
+03763: return start_ + offset_
__pyx_r = (__pyx_v_start_ + __pyx_v_offset_); goto __pyx_L0;
+03764: return ADDR_MAX
__pyx_r = ADDR_MAX; goto __pyx_L0;
03765:
03766:
+03767: cdef object Memory_Find(const Memory_* that, object item, object start, object endex):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Find(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; byte_t __pyx_v_item_value; __Pyx_memviewslice __pyx_v_item_view = { 0, 0, { 0 }, { 0 }, { 0 } }; size_t __pyx_v_item_size; byte_t const *__pyx_v_item_ptr; addr_t __pyx_v_address; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Find", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_4, 1); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.Memory_Find", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_item_view, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03768: cdef:
03769: addr_t start_
03770: addr_t endex_
03771: byte_t item_value
03772: const byte_t[:] item_view
03773: size_t item_size
03774: const byte_t* item_ptr
03775: addr_t address
03776:
+03777: if isinstance(item, int):
__pyx_t_1 = PyInt_Check(__pyx_v_item);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+03778: item_value = <byte_t>item
__pyx_t_3 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_3 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3778, __pyx_L1_error) __pyx_v_item_value = ((byte_t)__pyx_t_3);
+03779: item_size = 1
__pyx_v_item_size = 1;
+03780: item_ptr = &item_value
__pyx_v_item_ptr = (&__pyx_v_item_value);
03781: else:
+03782: item_view = item
/*else*/ { __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_item, 0); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3782, __pyx_L1_error) __pyx_v_item_view = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+03783: item_size = 1
__pyx_v_item_size = 1;
03784: with cython.boundscheck(False):
+03785: item_ptr = &item_view[0]
__pyx_t_5 = 0; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_item_view.shape[0]; __pyx_v_item_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_item_view.data + __pyx_t_5 * __pyx_v_item_view.strides[0]) )))); } __pyx_L3:;
03786:
03787: # Faster code for unbounded slice
+03788: if start is None and endex is None:
__pyx_t_1 = (__pyx_v_start == Py_None); __pyx_t_6 = (__pyx_t_1 != 0); if (__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L5_bool_binop_done; } __pyx_t_6 = (__pyx_v_endex == Py_None); __pyx_t_1 = (__pyx_t_6 != 0); __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+03789: address = Memory_FindUnbounded_(that, item_size, item_ptr)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_FindUnbounded_(__pyx_v_that, __pyx_v_item_size, __pyx_v_item_ptr); if (unlikely(__pyx_t_7 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3789, __pyx_L1_error) __pyx_v_address = __pyx_t_7;
+03790: return -1 if address == ADDR_MAX else <object>address
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_address == ADDR_MAX) != 0)) { __Pyx_INCREF(__pyx_int_neg_1); __pyx_t_8 = __pyx_int_neg_1; } else { __pyx_t_9 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_t_9)); __pyx_t_8 = __pyx_t_9; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
03791:
03792: # Bounded slice
+03793: start_, endex_ = Memory_Bound(that, start, endex)
__pyx_t_10 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3793, __pyx_L1_error)
__pyx_t_7 = __pyx_t_10.f0;
__pyx_t_11 = __pyx_t_10.f1;
__pyx_v_start_ = __pyx_t_7;
__pyx_v_endex_ = __pyx_t_11;
+03794: address = Memory_FindBounded_(that, item_size, item_ptr, start_, endex_)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Memory_FindBounded_(__pyx_v_that, __pyx_v_item_size, __pyx_v_item_ptr, __pyx_v_start_, __pyx_v_endex_); if (unlikely(__pyx_t_11 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3794, __pyx_L1_error) __pyx_v_address = __pyx_t_11;
+03795: return -1 if address == ADDR_MAX else <object>address
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_address == ADDR_MAX) != 0)) { __Pyx_INCREF(__pyx_int_neg_1); __pyx_t_8 = __pyx_int_neg_1; } else { __pyx_t_9 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_t_9)); __pyx_t_8 = __pyx_t_9; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
03796:
03797:
+03798: cdef addr_t Memory_RevFindUnbounded_(const Memory_* that, size_t size, const byte_t* buffer) except? -1:
static addr_t __pyx_f_11cbytesparse_1c_Memory_RevFindUnbounded_(Memory_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; Py_ssize_t __pyx_v_offset; addr_t __pyx_v_start_; addr_t __pyx_v_offset_; addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_RevFindUnbounded_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_RevFindUnbounded_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1LL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03799: cdef:
+03800: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
03801: size_t block_index
03802: const Block_* block
03803: ssize_t offset
03804: addr_t start_
03805: addr_t offset_
03806:
+03807: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+03808: for block_index in range(Rack_Length(blocks), 0, -1):
for (__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks) + 1; __pyx_t_3 > 0 + 1; ) { __pyx_t_3-=1; __pyx_v_block_index = __pyx_t_3;
+03809: block = Rack_Get__(blocks, block_index - 1)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, (__pyx_v_block_index - 1));
+03810: offset = Block_ReverseFind_(block, 0, SIZE_MAX, size, buffer)
__pyx_v_offset = __pyx_f_11cbytesparse_1c_Block_ReverseFind_(__pyx_v_block, 0, SIZE_MAX, __pyx_v_size, __pyx_v_buffer);
+03811: if offset >= 0:
__pyx_t_2 = ((__pyx_v_offset >= 0) != 0); if (__pyx_t_2) { /* … */ } }
+03812: start_ = Block_Start(block)
__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+03813: offset_ = <addr_t><size_t>offset
__pyx_v_offset_ = ((addr_t)((size_t)__pyx_v_offset));
+03814: CheckAddAddrU(start_, offset_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start_, __pyx_v_offset_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3814, __pyx_L1_error)
+03815: return start_ + offset_
__pyx_r = (__pyx_v_start_ + __pyx_v_offset_); goto __pyx_L0;
+03816: return ADDR_MAX
__pyx_r = ADDR_MAX; goto __pyx_L0;
03817:
03818:
+03819: cdef addr_t Memory_RevFindBounded_(const Memory_* that, size_t size, const byte_t* buffer,
static addr_t __pyx_f_11cbytesparse_1c_Memory_RevFindBounded_(Memory_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer, addr_t __pyx_v_start, addr_t __pyx_v_endex) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; Py_ssize_t __pyx_v_offset; size_t __pyx_v_block_index_start; size_t __pyx_v_block_index_endex; size_t __pyx_v_slice_start; size_t __pyx_v_slice_endex; addr_t __pyx_v_start_; addr_t __pyx_v_offset_; addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_RevFindBounded_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_RevFindBounded_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1LL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03820: addr_t start, addr_t endex) except? -1:
03821: cdef:
+03822: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
03823: size_t block_index
03824: const Block_* block
03825: ssize_t offset
03826: size_t block_index_start
03827: size_t block_index_endex
03828: size_t slice_start
03829: size_t slice_endex
03830: addr_t start_
03831: addr_t offset_
03832:
+03833: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+03834: if endex < start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ }
+03835: endex = start
__pyx_v_endex = __pyx_v_start;
+03836: block_index_start = Rack_IndexStart(blocks, start)
__pyx_v_block_index_start = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_start);
+03837: block_index_endex = Rack_IndexEndex(blocks, endex)
__pyx_v_block_index_endex = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_v_endex);
03838:
+03839: for block_index in range(block_index_endex, block_index_start, -1):
__pyx_t_3 = __pyx_v_block_index_start; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = __pyx_v_block_index_endex + 1; __pyx_t_5 > __pyx_t_4 + 1; ) { __pyx_t_5-=1; __pyx_v_block_index = __pyx_t_5;
+03840: block = Rack_Get__(blocks, block_index - 1)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, (__pyx_v_block_index - 1));
+03841: slice_start, slice_endex = Block_BoundAddressSliceToOffset(block, start, endex)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Block_BoundAddressSliceToOffset(__pyx_v_block, __pyx_v_start, __pyx_v_endex); __pyx_t_7 = __pyx_t_6.f0; __pyx_t_8 = __pyx_t_6.f1; __pyx_v_slice_start = __pyx_t_7; __pyx_v_slice_endex = __pyx_t_8;
+03842: offset = Block_ReverseFind_(block, slice_start, slice_endex, size, buffer)
__pyx_v_offset = __pyx_f_11cbytesparse_1c_Block_ReverseFind_(__pyx_v_block, __pyx_v_slice_start, __pyx_v_slice_endex, __pyx_v_size, __pyx_v_buffer);
+03843: if offset >= 0:
__pyx_t_2 = ((__pyx_v_offset >= 0) != 0); if (__pyx_t_2) { /* … */ } }
+03844: start_ = Block_Start(block)
__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+03845: offset_ = <addr_t><size_t>offset
__pyx_v_offset_ = ((addr_t)((size_t)__pyx_v_offset));
+03846: CheckAddAddrU(start_, offset_)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start_, __pyx_v_offset_); if (unlikely(__pyx_t_9 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 3846, __pyx_L1_error)
+03847: return start_ + offset_
__pyx_r = (__pyx_v_start_ + __pyx_v_offset_); goto __pyx_L0;
+03848: return ADDR_MAX
__pyx_r = ADDR_MAX; goto __pyx_L0;
03849:
03850:
+03851: cdef object Memory_RevFind(const Memory_* that, object item, object start, object endex):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_RevFind(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; byte_t __pyx_v_item_value; __Pyx_memviewslice __pyx_v_item_view = { 0, 0, { 0 }, { 0 }, { 0 } }; size_t __pyx_v_item_size; byte_t const *__pyx_v_item_ptr; addr_t __pyx_v_address; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_RevFind", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_4, 1); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.Memory_RevFind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_item_view, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03852: cdef:
03853: addr_t start_
03854: addr_t endex_
03855: byte_t item_value
03856: const byte_t[:] item_view
03857: size_t item_size
03858: const byte_t* item_ptr
03859: addr_t address
03860:
+03861: if isinstance(item, int):
__pyx_t_1 = PyInt_Check(__pyx_v_item);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+03862: item_value = <byte_t>item
__pyx_t_3 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_3 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3862, __pyx_L1_error) __pyx_v_item_value = ((byte_t)__pyx_t_3);
+03863: item_size = 1
__pyx_v_item_size = 1;
+03864: item_ptr = &item_value
__pyx_v_item_ptr = (&__pyx_v_item_value);
03865: else:
+03866: item_view = item
/*else*/ { __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_item, 0); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3866, __pyx_L1_error) __pyx_v_item_view = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+03867: item_size = 1
__pyx_v_item_size = 1;
03868: with cython.boundscheck(False):
+03869: item_ptr = &item_view[0]
__pyx_t_5 = 0; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_item_view.shape[0]; __pyx_v_item_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_item_view.data + __pyx_t_5 * __pyx_v_item_view.strides[0]) )))); } __pyx_L3:;
03870:
03871: # Faster code for unbounded slice
+03872: if start is None and endex is None:
__pyx_t_1 = (__pyx_v_start == Py_None); __pyx_t_6 = (__pyx_t_1 != 0); if (__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L5_bool_binop_done; } __pyx_t_6 = (__pyx_v_endex == Py_None); __pyx_t_1 = (__pyx_t_6 != 0); __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+03873: address = Memory_RevFindUnbounded_(that, item_size, item_ptr)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_RevFindUnbounded_(__pyx_v_that, __pyx_v_item_size, __pyx_v_item_ptr); if (unlikely(__pyx_t_7 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3873, __pyx_L1_error) __pyx_v_address = __pyx_t_7;
+03874: return -1 if address == ADDR_MAX else <object>address
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_address == ADDR_MAX) != 0)) { __Pyx_INCREF(__pyx_int_neg_1); __pyx_t_8 = __pyx_int_neg_1; } else { __pyx_t_9 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_t_9)); __pyx_t_8 = __pyx_t_9; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
03875:
03876: # Bounded slice
+03877: start_, endex_ = Memory_Bound(that, start, endex)
__pyx_t_10 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3877, __pyx_L1_error)
__pyx_t_7 = __pyx_t_10.f0;
__pyx_t_11 = __pyx_t_10.f1;
__pyx_v_start_ = __pyx_t_7;
__pyx_v_endex_ = __pyx_t_11;
+03878: address = Memory_RevFindBounded_(that, item_size, item_ptr, start_, endex_)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Memory_RevFindBounded_(__pyx_v_that, __pyx_v_item_size, __pyx_v_item_ptr, __pyx_v_start_, __pyx_v_endex_); if (unlikely(__pyx_t_11 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3878, __pyx_L1_error) __pyx_v_address = __pyx_t_11;
+03879: return -1 if address == ADDR_MAX else <object>address
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_address == ADDR_MAX) != 0)) { __Pyx_INCREF(__pyx_int_neg_1); __pyx_t_8 = __pyx_int_neg_1; } else { __pyx_t_9 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_t_9)); __pyx_t_8 = __pyx_t_9; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
03880:
03881:
+03882: cdef object Memory_Index(const Memory_* that, object item, object start, object endex):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Index(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_v_offset = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Index", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory_Index", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_offset); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+03883: offset = Memory_Find(that, item, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Find(__pyx_v_that, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_offset = __pyx_t_1; __pyx_t_1 = 0;
+03884: if offset != -1:
__pyx_t_1 = __Pyx_PyInt_NeObjC(__pyx_v_offset, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3884, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3884, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(__pyx_t_2)) { /* … */ }
+03885: return offset
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_offset); __pyx_r = __pyx_v_offset; goto __pyx_L0;
03886: else:
+03887: raise ValueError('subsection not found')
/*else*/ { __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 3887, __pyx_L1_error) } /* … */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_subsection_not_found); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 3887, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16);
03888:
03889:
+03890: cdef object Memory_RevIndex(const Memory_* that, object item, object start, object endex):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_RevIndex(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_v_offset = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_RevIndex", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory_RevIndex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_offset); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+03891: offset = Memory_RevFind(that, item, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_RevFind(__pyx_v_that, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_offset = __pyx_t_1; __pyx_t_1 = 0;
+03892: if offset != -1:
__pyx_t_1 = __Pyx_PyInt_NeObjC(__pyx_v_offset, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3892, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(__pyx_t_2)) { /* … */ }
+03893: return offset
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_offset); __pyx_r = __pyx_v_offset; goto __pyx_L0;
03894: else:
+03895: raise ValueError('subsection not found')
/*else*/ { __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 3895, __pyx_L1_error) }
03896:
03897:
+03898: cdef bint Memory_Contains(const Memory_* that, object item) except -1:
static int __pyx_f_11cbytesparse_1c_Memory_Contains(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item) { byte_t __pyx_v_item_value; __Pyx_memviewslice __pyx_v_item_view = { 0, 0, { 0 }, { 0 }, { 0 } }; size_t __pyx_v_item_size; byte_t const *__pyx_v_item_ptr; addr_t __pyx_v_address; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Contains", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_4, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_Contains", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_item_view, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03899: cdef:
03900: byte_t item_value
03901: const byte_t[:] item_view
03902: size_t item_size
03903: const byte_t* item_ptr
03904: addr_t address
03905:
+03906: if isinstance(item, int):
__pyx_t_1 = PyInt_Check(__pyx_v_item);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+03907: item_value = <byte_t>item
__pyx_t_3 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_3 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3907, __pyx_L1_error) __pyx_v_item_value = ((byte_t)__pyx_t_3);
+03908: item_size = 1
__pyx_v_item_size = 1;
+03909: item_ptr = &item_value
__pyx_v_item_ptr = (&__pyx_v_item_value);
03910: else:
+03911: item_view = item
/*else*/ { __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_item, 0); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3911, __pyx_L1_error) __pyx_v_item_view = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+03912: item_size = 1
__pyx_v_item_size = 1;
03913: with cython.boundscheck(False):
+03914: item_ptr = &item_view[0]
__pyx_t_5 = 0; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_item_view.shape[0]; __pyx_v_item_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_item_view.data + __pyx_t_5 * __pyx_v_item_view.strides[0]) )))); } __pyx_L3:;
03915:
+03916: address = Memory_FindUnbounded_(that, item_size, item_ptr)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_FindUnbounded_(__pyx_v_that, __pyx_v_item_size, __pyx_v_item_ptr); if (unlikely(__pyx_t_6 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3916, __pyx_L1_error) __pyx_v_address = __pyx_t_6;
+03917: return address != ADDR_MAX
__pyx_r = (__pyx_v_address != ADDR_MAX); goto __pyx_L0;
03918:
03919:
+03920: cdef addr_t Memory_CountUnbounded_(const Memory_* that, size_t size, const byte_t* buffer) except? -1:
static addr_t __pyx_f_11cbytesparse_1c_Memory_CountUnbounded_(Memory_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; addr_t __pyx_v_count; addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_CountUnbounded_", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03921: cdef:
+03922: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
03923: size_t block_index
03924: const Block_* block
+03925: addr_t count = 0
__pyx_v_count = 0;
03926:
+03927: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+03928: for block_index in range(Rack_Length(blocks)):
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_block_index = __pyx_t_5;
+03929: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+03930: count += Block_Count_(block, 0, SIZE_MAX, size, buffer)
__pyx_v_count = (__pyx_v_count + __pyx_f_11cbytesparse_1c_Block_Count_(__pyx_v_block, 0, SIZE_MAX, __pyx_v_size, __pyx_v_buffer)); }
+03931: return count
__pyx_r = __pyx_v_count; goto __pyx_L0;
03932:
03933:
+03934: cdef addr_t Memory_CountBounded_(const Memory_* that, size_t size, const byte_t* buffer,
static addr_t __pyx_f_11cbytesparse_1c_Memory_CountBounded_(Memory_ const *__pyx_v_that, size_t __pyx_v_size, byte_t const *__pyx_v_buffer, addr_t __pyx_v_start, addr_t __pyx_v_endex) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; addr_t __pyx_v_count; size_t __pyx_v_block_index_start; size_t __pyx_v_block_index_endex; size_t __pyx_v_slice_start; size_t __pyx_v_slice_endex; addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_CountBounded_", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
03935: addr_t start, addr_t endex) except? -1:
03936: cdef:
+03937: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
03938: size_t block_index
03939: const Block_* block
+03940: addr_t count = 0
__pyx_v_count = 0;
03941: size_t block_index_start
03942: size_t block_index_endex
03943: addr_t block_start
03944: addr_t block_endex
03945: size_t slice_start
03946: size_t slice_endex
03947:
+03948: if size:
__pyx_t_2 = (__pyx_v_size != 0); if (__pyx_t_2) { /* … */ }
+03949: if endex < start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ }
+03950: endex = start
__pyx_v_endex = __pyx_v_start;
+03951: block_index_start = Rack_IndexStart(blocks, start)
__pyx_v_block_index_start = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_start);
+03952: block_index_endex = Rack_IndexEndex(blocks, endex)
__pyx_v_block_index_endex = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_v_endex);
03953:
+03954: for block_index in range(block_index_start, block_index_endex):
__pyx_t_3 = __pyx_v_block_index_endex; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = __pyx_v_block_index_start; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_block_index = __pyx_t_5;
+03955: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+03956: slice_start, slice_endex = Block_BoundAddressSliceToOffset(block, start, endex)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Block_BoundAddressSliceToOffset(__pyx_v_block, __pyx_v_start, __pyx_v_endex); __pyx_t_7 = __pyx_t_6.f0; __pyx_t_8 = __pyx_t_6.f1; __pyx_v_slice_start = __pyx_t_7; __pyx_v_slice_endex = __pyx_t_8;
+03957: count += Block_Count_(block, slice_start, slice_endex, size, buffer)
__pyx_v_count = (__pyx_v_count + __pyx_f_11cbytesparse_1c_Block_Count_(__pyx_v_block, __pyx_v_slice_start, __pyx_v_slice_endex, __pyx_v_size, __pyx_v_buffer)); }
+03958: return count
__pyx_r = __pyx_v_count; goto __pyx_L0;
03959:
03960:
+03961: cdef addr_t Memory_Count(const Memory_* that, object item, object start, object endex) except? -1:
static addr_t __pyx_f_11cbytesparse_1c_Memory_Count(Memory_ const *__pyx_v_that, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; byte_t __pyx_v_item_value; __Pyx_memviewslice __pyx_v_item_view = { 0, 0, { 0 }, { 0 }, { 0 } }; size_t __pyx_v_item_size; byte_t const *__pyx_v_item_ptr; addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Count", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_4, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_Count", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1LL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_item_view, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03962: cdef:
03963: addr_t start_
03964: addr_t endex_
03965: byte_t item_value
03966: const byte_t[:] item_view
03967: size_t item_size
03968: const byte_t* item_ptr
03969:
+03970: if isinstance(item, int):
__pyx_t_1 = PyInt_Check(__pyx_v_item);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+03971: item_value = <byte_t>item
__pyx_t_3 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_3 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3971, __pyx_L1_error) __pyx_v_item_value = ((byte_t)__pyx_t_3);
+03972: item_size = 1
__pyx_v_item_size = 1;
+03973: item_ptr = &item_value
__pyx_v_item_ptr = (&__pyx_v_item_value);
03974: else:
+03975: item_view = item
/*else*/ { __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_item, 0); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3975, __pyx_L1_error) __pyx_v_item_view = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+03976: item_size = 1
__pyx_v_item_size = 1;
03977: with cython.boundscheck(False):
+03978: item_ptr = &item_view[0]
__pyx_t_5 = 0; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_item_view.shape[0]; __pyx_v_item_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_item_view.data + __pyx_t_5 * __pyx_v_item_view.strides[0]) )))); } __pyx_L3:;
03979:
03980: # Faster code for unbounded slice
+03981: if start is None and endex is None:
__pyx_t_1 = (__pyx_v_start == Py_None); __pyx_t_6 = (__pyx_t_1 != 0); if (__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L5_bool_binop_done; } __pyx_t_6 = (__pyx_v_endex == Py_None); __pyx_t_1 = (__pyx_t_6 != 0); __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+03982: return Memory_CountUnbounded_(that, item_size, item_ptr)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_CountUnbounded_(__pyx_v_that, __pyx_v_item_size, __pyx_v_item_ptr); if (unlikely(__pyx_t_7 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3982, __pyx_L1_error) __pyx_r = __pyx_t_7; goto __pyx_L0;
03983:
03984: # Bounded slice
+03985: start_, endex_ = Memory_Bound(that, start, endex)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3985, __pyx_L1_error)
__pyx_t_7 = __pyx_t_8.f0;
__pyx_t_9 = __pyx_t_8.f1;
__pyx_v_start_ = __pyx_t_7;
__pyx_v_endex_ = __pyx_t_9;
+03986: return Memory_CountBounded_(that, item_size, item_ptr, start_, endex_)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Memory_CountBounded_(__pyx_v_that, __pyx_v_item_size, __pyx_v_item_ptr, __pyx_v_start_, __pyx_v_endex_); if (unlikely(__pyx_t_9 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3986, __pyx_L1_error) __pyx_r = __pyx_t_9; goto __pyx_L0;
03987:
03988:
+03989: cdef object Memory_GetItem(const Memory_* that, object key):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_GetItem(Memory_ const *__pyx_v_that, PyObject *__pyx_v_key) { PyObject *__pyx_v_key_ = 0; addr_t __pyx_v_start; addr_t __pyx_v_endex; Block_ *__pyx_v_pattern; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory = 0; int __pyx_v_value; PyObject *__pyx_v_key_start = NULL; PyObject *__pyx_v_key_endex = NULL; PyObject *__pyx_v_key_step = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_GetItem", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_18); __Pyx_AddTraceback("cbytesparse.c.Memory_GetItem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_key_); __Pyx_XDECREF((PyObject *)__pyx_v_memory); __Pyx_XDECREF(__pyx_v_key_start); __Pyx_XDECREF(__pyx_v_key_endex); __Pyx_XDECREF(__pyx_v_key_step); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
03990: cdef:
03991: slice key_
03992: addr_t start
03993: addr_t endex
+03994: Block_* pattern = NULL
__pyx_v_pattern = NULL;
03995: Memory memory
03996: int value
03997:
+03998: if isinstance(key, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_key);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
+03999: key_ = <slice>key
__pyx_t_3 = __pyx_v_key;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_ = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
+04000: key_start = key_.start
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->start;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_start = __pyx_t_3;
__pyx_t_3 = 0;
+04001: key_endex = key_.stop
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->stop;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_endex = __pyx_t_3;
__pyx_t_3 = 0;
+04002: start = Memory_Start(that) if key_start is None else <addr_t>key_start
__pyx_t_2 = (__pyx_v_key_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_start); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4002, __pyx_L1_error) __pyx_t_4 = ((addr_t)__pyx_t_5); } __pyx_v_start = __pyx_t_4;
+04003: endex = Memory_Endex(that) if key_endex is None else <addr_t>key_endex
__pyx_t_2 = (__pyx_v_key_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); } else { __pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_endex); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4003, __pyx_L1_error) __pyx_t_4 = ((addr_t)__pyx_t_5); } __pyx_v_endex = __pyx_t_4;
+04004: key_step = key_.step
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->step;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_step = __pyx_t_3;
__pyx_t_3 = 0;
04005:
+04006: if key_step is None or key_step is 1 or key_step == 1:
__pyx_t_1 = (__pyx_v_key_step == Py_None); __pyx_t_6 = (__pyx_t_1 != 0); if (!__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L5_bool_binop_done; } __pyx_t_6 = (__pyx_v_key_step == __pyx_int_1); __pyx_t_1 = (__pyx_t_6 != 0); if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_key_step, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 4006, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+04007: return Memory_Extract_(that, start, endex, 0, NULL, 1, True)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0, NULL, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
04008:
+04009: elif isinstance(key_step, int):
__pyx_t_2 = PyInt_Check(__pyx_v_key_step);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
}
+04010: if key_step > 1:
__pyx_t_3 = PyObject_RichCompare(__pyx_v_key_step, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4010, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 4010, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* … */ }
+04011: return Memory_Extract_(that, start, endex, 0, NULL, <saddr_t>key_step, True)
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyInt_As_int_fast64_t(__pyx_v_key_step); if (unlikely((__pyx_t_7 == ((saddr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4011, __pyx_L1_error) __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0, NULL, ((saddr_t)__pyx_t_7), 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
04012: else:
+04013: return Memory() # empty
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; }
04014:
04015: else:
+04016: pattern = Block_FromObject(0, key_step, True)
/*else*/ {
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_FromObject(0, __pyx_v_key_step, 1); if (unlikely(__pyx_t_8 == ((Block_ *)NULL))) __PYX_ERR(0, 4016, __pyx_L1_error)
__pyx_v_pattern = __pyx_t_8;
+04017: try:
/*try:*/ {
+04018: memory = Memory_Extract_(that, start, endex, Block_Length(pattern), Block_At__(pattern, 0), 1, True)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_that, __pyx_v_start, __pyx_v_endex, __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_pattern), __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_pattern, 0), 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4018, __pyx_L10_error) __Pyx_GOTREF(__pyx_t_3); if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 4018, __pyx_L10_error) __pyx_v_memory = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_3); __pyx_t_3 = 0; }
04019: finally:
+04020: Block_Free(pattern) # orphan
/*finally:*/ { /*normal exit:*/{ (void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_pattern)); goto __pyx_L11; } __pyx_L10_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; { (void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_pattern)); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); } __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; goto __pyx_L1_error; } __pyx_L11:; }
+04021: return memory
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_memory)); __pyx_r = ((PyObject *)__pyx_v_memory); goto __pyx_L0; }
04022: else:
+04023: value = Memory_Peek_(that, <addr_t>key)
/*else*/ { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4023, __pyx_L1_error) __pyx_v_value = __pyx_f_11cbytesparse_1c_Memory_Peek_(__pyx_v_that, ((addr_t)__pyx_t_4));
+04024: return None if value < 0 else value
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_value < 0) != 0)) { __Pyx_INCREF(Py_None); __pyx_t_3 = Py_None; } else { __pyx_t_18 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_3 = __pyx_t_18; __pyx_t_18 = 0; } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; }
04025:
04026:
+04027: cdef object Memory_SetItem(Memory_* that, object key, object value):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_SetItem(Memory_ *__pyx_v_that, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { PyObject *__pyx_v_key_ = 0; addr_t __pyx_v_start; addr_t __pyx_v_endex; addr_t __pyx_v_step; addr_t __pyx_v_address; addr_t __pyx_v_slice_size; Block_ *__pyx_v_value_; size_t __pyx_v_value_size; addr_t __pyx_v_del_start; addr_t __pyx_v_del_endex; size_t __pyx_v_offset; PyObject *__pyx_v_key_start = NULL; PyObject *__pyx_v_key_endex = NULL; PyObject *__pyx_v_key_step = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_SetItem", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("cbytesparse.c.Memory_SetItem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_key_); __Pyx_XDECREF(__pyx_v_key_start); __Pyx_XDECREF(__pyx_v_key_endex); __Pyx_XDECREF(__pyx_v_key_step); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04028: cdef:
04029: slice key_
04030: addr_t start
04031: addr_t endex
+04032: addr_t step = 0 # indefinite
__pyx_v_step = 0;
04033: addr_t address
04034: addr_t slice_size
+04035: Block_* value_ = NULL
__pyx_v_value_ = NULL;
04036: size_t value_size
04037: addr_t del_start
04038: addr_t del_endex
04039: size_t offset
04040:
+04041: if isinstance(key, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_key);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+04042: key_ = <slice>key
__pyx_t_3 = __pyx_v_key;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_ = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
+04043: key_start = key_.start
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->start;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_start = __pyx_t_3;
__pyx_t_3 = 0;
+04044: key_endex = key_.stop
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->stop;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_endex = __pyx_t_3;
__pyx_t_3 = 0;
+04045: start = Memory_Start(that) if key_start is None else <addr_t>key_start
__pyx_t_2 = (__pyx_v_key_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_start); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4045, __pyx_L1_error) __pyx_t_4 = ((addr_t)__pyx_t_5); } __pyx_v_start = __pyx_t_4;
+04046: endex = Memory_Endex(that) if key_endex is None else <addr_t>key_endex
__pyx_t_2 = (__pyx_v_key_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); } else { __pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_endex); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4046, __pyx_L1_error) __pyx_t_4 = ((addr_t)__pyx_t_5); } __pyx_v_endex = __pyx_t_4;
+04047: if endex < start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ }
+04048: endex = start
__pyx_v_endex = __pyx_v_start;
04049:
+04050: key_step = key_.step
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->step;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_step = __pyx_t_3;
__pyx_t_3 = 0;
+04051: if isinstance(key_step, int):
__pyx_t_2 = PyInt_Check(__pyx_v_key_step);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
}
+04052: if key_step is None or key_step is 1 or key_step == 1:
__pyx_t_2 = (__pyx_v_key_step == Py_None); __pyx_t_6 = (__pyx_t_2 != 0); if (!__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L7_bool_binop_done; } __pyx_t_6 = (__pyx_v_key_step == __pyx_int_1); __pyx_t_2 = (__pyx_t_6 != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L7_bool_binop_done; } __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_key_step, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4052, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __pyx_t_2; __pyx_L7_bool_binop_done:; if (__pyx_t_1) { goto __pyx_L6; }
04053: pass
+04054: elif key_step > 1:
__pyx_t_3 = PyObject_RichCompare(__pyx_v_key_step, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4054, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 4054, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+04055: step = <addr_t>key_step
__pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_step); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4055, __pyx_L1_error) __pyx_v_step = ((addr_t)__pyx_t_4);
04056: else:
+04057: return # empty range
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; } __pyx_L6:;
04058:
+04059: if value is None:
__pyx_t_1 = (__pyx_v_value == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
04060: # Clear range
+04061: if not step:
__pyx_t_2 = ((!(__pyx_v_step != 0)) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L11; }
+04062: Memory_Erase__(that, start, endex, False) # clear
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4062, __pyx_L1_error)
04063: else:
+04064: address = start
/*else*/ { __pyx_v_address = __pyx_v_start;
+04065: while address < endex:
while (1) { __pyx_t_2 = ((__pyx_v_address < __pyx_v_endex) != 0); if (!__pyx_t_2) break;
+04066: Memory_Erase__(that, address, address + 1, False) # clear
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_address, (__pyx_v_address + 1), 0); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4066, __pyx_L1_error)
+04067: if CannotAddAddrU(address, step):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_CannotAddAddrU(__pyx_v_address, __pyx_v_step) != 0); if (__pyx_t_2) { /* … */ }
+04068: break
goto __pyx_L13_break;
+04069: address += step
__pyx_v_address = (__pyx_v_address + __pyx_v_step); } __pyx_L13_break:; } __pyx_L11:;
+04070: return # nothing to write
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
04071:
+04072: slice_size = endex - start
__pyx_v_slice_size = (__pyx_v_endex - __pyx_v_start);
+04073: if step:
__pyx_t_2 = (__pyx_v_step != 0); if (__pyx_t_2) { /* … */ }
04074: with cython.cdivision(True):
+04075: slice_size = (slice_size + step - 1) // step
__pyx_v_slice_size = (((__pyx_v_slice_size + __pyx_v_step) - 1) / __pyx_v_step);
+04076: CheckAddrToSizeU(slice_size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_slice_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4076, __pyx_L1_error)
04077:
+04078: value_ = Block_FromObject(0, value, False)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_FromObject(0, __pyx_v_value, 0); if (unlikely(__pyx_t_8 == ((Block_ *)NULL))) __PYX_ERR(0, 4078, __pyx_L1_error)
__pyx_v_value_ = __pyx_t_8;
+04079: try:
/*try:*/ {
+04080: if isinstance(value, int):
__pyx_t_2 = PyInt_Check(__pyx_v_value);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
}
+04081: value_ = Block_Repeat(value_, <size_t>slice_size)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Repeat(__pyx_v_value_, ((size_t)__pyx_v_slice_size)); if (unlikely(__pyx_t_8 == ((Block_ *)NULL))) __PYX_ERR(0, 4081, __pyx_L17_error)
__pyx_v_value_ = __pyx_t_8;
+04082: value_size = Block_Length(value_)
__pyx_v_value_size = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_value_);
04083:
+04084: if value_size < slice_size:
__pyx_t_1 = ((__pyx_v_value_size < __pyx_v_slice_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L20; }
04085: # Shrink: remove excess, overwrite existing
+04086: if not step:
__pyx_t_1 = ((!(__pyx_v_step != 0)) != 0); if (likely(__pyx_t_1)) { /* … */ goto __pyx_L21; }
+04087: if CannotAddAddrU(start, value_size):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddAddrU(__pyx_v_start, __pyx_v_value_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L22; }
+04088: del_start = ADDR_MAX
__pyx_v_del_start = ADDR_MAX;
04089: else:
+04090: del_start = start + value_size
/*else*/ { __pyx_v_del_start = (__pyx_v_start + __pyx_v_value_size); } __pyx_L22:;
+04091: if CannotAddAddrU(del_start, (slice_size - value_size)):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddAddrU(__pyx_v_del_start, (__pyx_v_slice_size - __pyx_v_value_size)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L23; }
+04092: del_endex = ADDR_MAX
__pyx_v_del_endex = ADDR_MAX;
04093: else:
+04094: del_endex = del_start + (slice_size - value_size)
/*else*/ { __pyx_v_del_endex = (__pyx_v_del_start + (__pyx_v_slice_size - __pyx_v_value_size)); } __pyx_L23:;
+04095: Memory_Erase__(that, del_start, del_endex, True) # delete
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_del_start, __pyx_v_del_endex, 1); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4095, __pyx_L17_error)
+04096: if value_size:
__pyx_t_1 = (__pyx_v_value_size != 0); if (__pyx_t_1) { /* … */ }
+04097: Memory_WriteRaw_(that, start, value_size, Block_At__(value_, 0))
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(__pyx_v_that, __pyx_v_start, __pyx_v_value_size, __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_value_, 0)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4097, __pyx_L17_error)
04098: else:
+04099: raise ValueError(f'attempt to assign bytes of size {value_size}'
/*else*/ { __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4099, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = 0; __pyx_t_10 = 127; __Pyx_INCREF(__pyx_kp_u_attempt_to_assign_bytes_of_size); __pyx_t_9 += 32; __Pyx_GIVEREF(__pyx_kp_u_attempt_to_assign_bytes_of_size); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_attempt_to_assign_bytes_of_size); __pyx_t_11 = __Pyx_PyUnicode_From_size_t(__pyx_v_value_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4099, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_11); __pyx_t_11 = 0; __Pyx_INCREF(__pyx_kp_u_to_extended_slice_of_size); __pyx_t_9 += 27; __Pyx_GIVEREF(__pyx_kp_u_to_extended_slice_of_size); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_to_extended_slice_of_size); /* … */ __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_3, 4, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4099, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4099, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 4099, __pyx_L17_error) } __pyx_L21:;
+04100: f' to extended slice of size {slice_size}')
__pyx_t_11 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_slice_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4100, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4100, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) : __pyx_t_10; __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_12); __pyx_t_12 = 0;
+04101: elif slice_size < value_size:
__pyx_t_1 = ((__pyx_v_slice_size < __pyx_v_value_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L20; }
04102: # Enlarge: insert excess, overwrite existing
+04103: if not step:
__pyx_t_1 = ((!(__pyx_v_step != 0)) != 0); if (likely(__pyx_t_1)) { /* … */ goto __pyx_L25; }
+04104: Memory_InsertRaw_(that, endex, value_size - slice_size, Block_At__(value_, slice_size))
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_InsertRaw_(__pyx_v_that, __pyx_v_endex, (__pyx_v_value_size - __pyx_v_slice_size), __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_value_, __pyx_v_slice_size)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4104, __pyx_L17_error)
+04105: Memory_WriteRaw_(that, start, slice_size, Block_At__(value_, 0))
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(__pyx_v_that, __pyx_v_start, __pyx_v_slice_size, __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_value_, 0)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4105, __pyx_L17_error)
04106: else:
+04107: raise ValueError(f'attempt to assign bytes of size {value_size}'
/*else*/ { __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4107, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = 0; __pyx_t_10 = 127; __Pyx_INCREF(__pyx_kp_u_attempt_to_assign_bytes_of_size); __pyx_t_9 += 32; __Pyx_GIVEREF(__pyx_kp_u_attempt_to_assign_bytes_of_size); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_attempt_to_assign_bytes_of_size); __pyx_t_12 = __Pyx_PyUnicode_From_size_t(__pyx_v_value_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4107, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_12); __pyx_t_12 = 0; __Pyx_INCREF(__pyx_kp_u_to_extended_slice_of_size); __pyx_t_9 += 27; __Pyx_GIVEREF(__pyx_kp_u_to_extended_slice_of_size); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_to_extended_slice_of_size); /* … */ __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_3, 4, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4107, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4107, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 4107, __pyx_L17_error) } __pyx_L25:;
+04108: f' to extended slice of size {slice_size}')
__pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_slice_size); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4108, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4108, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_10; __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_11); __pyx_t_11 = 0;
04109: else:
04110: # Same size: overwrite existing
+04111: if not step:
/*else*/ { __pyx_t_1 = ((!(__pyx_v_step != 0)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L26; }
+04112: Memory_WriteRaw_(that, start, value_size, Block_At__(value_, 0))
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(__pyx_v_that, __pyx_v_start, __pyx_v_value_size, __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_value_, 0)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4112, __pyx_L17_error)
04113: else:
+04114: CheckMulAddrU(step, value_size)
/*else*/ {
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckMulAddrU(__pyx_v_step, __pyx_v_value_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4114, __pyx_L17_error)
+04115: CheckAddAddrU(start, step * value_size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start, (__pyx_v_step * __pyx_v_value_size)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4115, __pyx_L17_error)
+04116: for offset in range(value_size):
__pyx_t_13 = __pyx_v_value_size; __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_offset = __pyx_t_15;
+04117: Memory_Poke_(that, start + (step * offset), Block_Get__(value_, offset))
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_that, (__pyx_v_start + (__pyx_v_step * __pyx_v_offset)), __pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_value_, __pyx_v_offset)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4117, __pyx_L17_error)
}
}
__pyx_L26:;
}
__pyx_L20:;
}
04118: finally:
+04119: Block_Free(value_) # orphan
/*finally:*/ { /*normal exit:*/{ (void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_value_)); goto __pyx_L18; } __pyx_L17_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { (void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_value_)); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); } __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L1_error; } __pyx_L18:; }
04120: else:
04121: # below: self.poke(key, value)
+04122: address = <addr_t>key
/*else*/ { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4122, __pyx_L1_error) __pyx_v_address = ((addr_t)__pyx_t_4);
+04123: if value is None:
__pyx_t_1 = (__pyx_v_value == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L31; }
+04124: Memory_PokeNone_(that, address)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_PokeNone_(__pyx_v_that, __pyx_v_address); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4124, __pyx_L1_error)
04125: else:
+04126: if isinstance(value, int):
/*else*/ {
__pyx_t_2 = PyInt_Check(__pyx_v_value);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L32;
}
+04127: Memory_Poke_(that, address, <byte_t>value)
__pyx_t_25 = __Pyx_PyInt_As_byte_t(__pyx_v_value); if (unlikely((__pyx_t_25 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4127, __pyx_L1_error) __pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_that, __pyx_v_address, ((byte_t)__pyx_t_25)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4127, __pyx_L1_error)
04128: else:
+04129: if len(value) != 1:
/*else*/ { __pyx_t_9 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4129, __pyx_L1_error) __pyx_t_1 = ((__pyx_t_9 != 1) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+04130: raise ValueError('expecting single item')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4130, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 4130, __pyx_L1_error) /* … */ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_expecting_single_item); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 4130, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17);
+04131: Memory_Poke_(that, address, <byte_t>value[0])
__pyx_t_3 = __Pyx_GetItemInt(__pyx_v_value, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_25 = __Pyx_PyInt_As_byte_t(__pyx_t_3); if (unlikely((__pyx_t_25 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_that, __pyx_v_address, ((byte_t)__pyx_t_25)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4131, __pyx_L1_error) } __pyx_L32:; } __pyx_L31:; } __pyx_L3:;
04132:
04133:
+04134: cdef vint Memory_DelItem(Memory_* that, object key) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_DelItem(Memory_ *__pyx_v_that, PyObject *__pyx_v_key) { PyObject *__pyx_v_key_ = 0; addr_t __pyx_v_start; addr_t __pyx_v_endex; addr_t __pyx_v_step; addr_t __pyx_v_address; PyObject *__pyx_v_key_start = NULL; PyObject *__pyx_v_key_endex = NULL; PyObject *__pyx_v_key_step = NULL; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_DelItem", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory_DelItem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_key_); __Pyx_XDECREF(__pyx_v_key_start); __Pyx_XDECREF(__pyx_v_key_endex); __Pyx_XDECREF(__pyx_v_key_step); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04135: cdef:
04136: slice key_
04137: addr_t start
04138: addr_t endex
04139: addr_t step
04140: addr_t address
04141:
+04142: if Rack_Bool(that.blocks):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0); if (__pyx_t_1) { /* … */ }
+04143: if isinstance(key, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_key);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L4;
}
+04144: key_ = <slice>key
__pyx_t_3 = __pyx_v_key;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_ = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
+04145: key_start = key_.start
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->start;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_start = __pyx_t_3;
__pyx_t_3 = 0;
+04146: key_endex = key_.stop
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->stop;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_endex = __pyx_t_3;
__pyx_t_3 = 0;
+04147: start = Memory_Start(that) if key_start is None else <addr_t>key_start
__pyx_t_2 = (__pyx_v_key_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_start); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4147, __pyx_L1_error) __pyx_t_4 = ((addr_t)__pyx_t_5); } __pyx_v_start = __pyx_t_4;
+04148: endex = Memory_Endex(that) if key_endex is None else <addr_t>key_endex
__pyx_t_2 = (__pyx_v_key_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); } else { __pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_endex); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4148, __pyx_L1_error) __pyx_t_4 = ((addr_t)__pyx_t_5); } __pyx_v_endex = __pyx_t_4;
04149:
+04150: if start < endex:
__pyx_t_2 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_2) { /* … */ }
+04151: key_step = key_.step
__pyx_t_3 = ((PySliceObject*)__pyx_v_key_)->step;
__Pyx_INCREF(__pyx_t_3);
__pyx_v_key_step = __pyx_t_3;
__pyx_t_3 = 0;
+04152: if key_step is None or key_step is 1 or key_step == 1:
__pyx_t_1 = (__pyx_v_key_step == Py_None); __pyx_t_6 = (__pyx_t_1 != 0); if (!__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L7_bool_binop_done; } __pyx_t_6 = (__pyx_v_key_step == __pyx_int_1); __pyx_t_1 = (__pyx_t_6 != 0); if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L7_bool_binop_done; } __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_key_step, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 4152, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L7_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L6; }
+04153: Memory_Erase__(that, start, endex, True) # delete
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 1); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4153, __pyx_L1_error)
04154:
+04155: elif key_step > 1:
__pyx_t_3 = PyObject_RichCompare(__pyx_v_key_step, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4155, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4155, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_2) { /* … */ } __pyx_L6:;
+04156: step = <addr_t>key_step - 1
__pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key_step); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4156, __pyx_L1_error) __pyx_v_step = (((addr_t)__pyx_t_4) - 1);
+04157: address = start
__pyx_v_address = __pyx_v_start;
+04158: while address < endex:
while (1) { __pyx_t_2 = ((__pyx_v_address < __pyx_v_endex) != 0); if (!__pyx_t_2) break;
+04159: Memory_Erase__(that, address, address + 1, True) # delete
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_address, (__pyx_v_address + 1), 1); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4159, __pyx_L1_error)
+04160: address += step
__pyx_v_address = (__pyx_v_address + __pyx_v_step);
+04161: endex -= 1
__pyx_v_endex = (__pyx_v_endex - 1); }
04162: else:
+04163: address = <addr_t>key
/*else*/ { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_key); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4163, __pyx_L1_error) __pyx_v_address = ((addr_t)__pyx_t_4);
+04164: Memory_Erase__(that, address, address + 1, True) # delete
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_address, (__pyx_v_address + 1), 1); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4164, __pyx_L1_error)
}
__pyx_L4:;
04165:
04166:
+04167: cdef vint Memory_Append_(Memory_* that, byte_t value) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Append_(Memory_ *__pyx_v_that, byte_t __pyx_v_value) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; Block_ *__pyx_v_block; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Append_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.Memory_Append_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04168: cdef:
+04169: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04170: size_t block_count
04171: Block_* block
04172:
+04173: block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
+04174: if block_count:
__pyx_t_2 = (__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+04175: block = Block_Append(Rack_Last_(blocks), value)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Append(__pyx_f_11cbytesparse_1c_Rack_Last_(__pyx_v_blocks), __pyx_v_value); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 4175, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+04176: Rack_Set__(blocks, block_count - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_block_count - 1), __pyx_v_block));
04177: else:
+04178: block = Block_Create(0, 1, &value)
/*else*/ {
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Create(0, 1, (&__pyx_v_value)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 4178, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+04179: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L1_error; __pyx_L9_try_end:; } } __pyx_L3:;
+04180: that.blocks = blocks = Rack_Append(blocks, block)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Append(__pyx_v_blocks, __pyx_v_block); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4180, __pyx_L4_error)
__pyx_v_that->blocks = __pyx_t_1;
__pyx_v_blocks = __pyx_t_1;
+04181: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Append_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 4181, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_9);
+04182: Block_Free(block) # orphan
(void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block));
+04183: raise
__Pyx_GIVEREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_8, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __PYX_ERR(0, 4183, __pyx_L6_except_error) } __pyx_L6_except_error:;
04184:
04185:
+04186: cdef vint Memory_Append(Memory_* that, object item) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Append(Memory_ *__pyx_v_that, PyObject *__pyx_v_item) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Append", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.Memory_Append", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+04187: if isinstance(item, int):
__pyx_t_1 = PyInt_Check(__pyx_v_item);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+04188: Memory_Append_(that, <byte_t>item)
__pyx_t_3 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_3 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4188, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Append_(__pyx_v_that, ((byte_t)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4188, __pyx_L1_error)
04189: else:
+04190: if len(item) != 1:
/*else*/ { __pyx_t_5 = PyObject_Length(__pyx_v_item); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4190, __pyx_L1_error) __pyx_t_2 = ((__pyx_t_5 != 1) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+04191: raise ValueError('expecting single item')
__pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 4191, __pyx_L1_error)
+04192: Memory_Append_(that, <byte_t>item[0])
__pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyInt_As_byte_t(__pyx_t_6); if (unlikely((__pyx_t_3 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4192, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Append_(__pyx_v_that, ((byte_t)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4192, __pyx_L1_error) } __pyx_L3:;
04193:
04194:
+04195: cdef vint Memory_ExtendSame_(Memory_* that, const Memory_* items, addr_t offset) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_ExtendSame_(Memory_ *__pyx_v_that, Memory_ const *__pyx_v_items, addr_t __pyx_v_offset) { addr_t __pyx_v_content_endex; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_ExtendSame_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_ExtendSame_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04196: cdef:
+04197: addr_t content_endex = Memory_ContentEndex(that)
__pyx_v_content_endex = __pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_that);
04198:
+04199: CheckAddAddrU(content_endex, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_content_endex, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4199, __pyx_L1_error)
+04200: offset += content_endex
__pyx_v_offset = (__pyx_v_offset + __pyx_v_content_endex);
+04201: Memory_WriteSame_(that, offset, items, False)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_that, __pyx_v_offset, __pyx_v_items, 0); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4201, __pyx_L1_error)
04202:
04203:
+04204: cdef vint Memory_ExtendRaw_(Memory_* that, size_t items_size, const byte_t* items_ptr, addr_t offset) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_ExtendRaw_(Memory_ *__pyx_v_that, size_t __pyx_v_items_size, byte_t const *__pyx_v_items_ptr, addr_t __pyx_v_offset) { addr_t __pyx_v_content_endex; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_ExtendRaw_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_ExtendRaw_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04205: cdef:
+04206: addr_t content_endex = Memory_ContentEndex(that)
__pyx_v_content_endex = __pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_that);
04207:
+04208: CheckAddAddrU(content_endex, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_content_endex, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4208, __pyx_L1_error)
+04209: offset += content_endex
__pyx_v_offset = (__pyx_v_offset + __pyx_v_content_endex);
+04210: CheckAddAddrU(offset, items_size)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_offset, __pyx_v_items_size); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4210, __pyx_L1_error)
+04211: Memory_WriteRaw_(that, offset, items_size, items_ptr)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(__pyx_v_that, __pyx_v_offset, __pyx_v_items_size, __pyx_v_items_ptr); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4211, __pyx_L1_error)
04212:
04213:
+04214: cdef vint Memory_Extend(Memory_* that, object items, object offset) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Extend(Memory_ *__pyx_v_that, PyObject *__pyx_v_items, PyObject *__pyx_v_offset) { __Pyx_memviewslice __pyx_v_items_view = { 0, 0, { 0 }, { 0 }, { 0 } }; byte_t __pyx_v_items_value; size_t __pyx_v_items_size; byte_t const *__pyx_v_items_ptr; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Extend", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_Extend", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_items_view, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04215: cdef:
04216: const byte_t[:] items_view
04217: byte_t items_value
04218: size_t items_size
04219: const byte_t* items_ptr
04220:
+04221: if offset < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4221, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4221, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+04222: raise ValueError('negative extension offset')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4222, __pyx_L1_error) /* … */ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_negative_extension_offset); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 4222, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18);
04223:
+04224: if isinstance(items, Memory):
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_items, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L4;
}
+04225: Memory_ExtendSame_(that, (<Memory>items)._, <addr_t>offset)
__pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_offset); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4225, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_ExtendSame_(__pyx_v_that, ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_items)->_, ((addr_t)__pyx_t_4)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4225, __pyx_L1_error)
04226: else:
+04227: if isinstance(items, int):
/*else*/ {
__pyx_t_3 = PyInt_Check(__pyx_v_items);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L5;
}
+04228: items_value = <byte_t>items
__pyx_t_6 = __Pyx_PyInt_As_byte_t(__pyx_v_items); if (unlikely((__pyx_t_6 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4228, __pyx_L1_error) __pyx_v_items_value = ((byte_t)__pyx_t_6);
+04229: items_size = 1
__pyx_v_items_size = 1;
+04230: items_ptr = &items_value
__pyx_v_items_ptr = (&__pyx_v_items_value);
04231: else:
+04232: items_view = items
/*else*/ { __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_items, 0); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 4232, __pyx_L1_error) __pyx_v_items_view = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+04233: items_size = len(items_view)
__pyx_t_8 = __Pyx_MemoryView_Len(__pyx_v_items_view);
__pyx_v_items_size = __pyx_t_8;
04234: with cython.boundscheck(False):
+04235: items_ptr = &items_view[0]
__pyx_t_9 = 0; if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_v_items_view.shape[0]; __pyx_v_items_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_items_view.data + __pyx_t_9 * __pyx_v_items_view.strides[0]) )))); } __pyx_L5:;
04236:
+04237: Memory_ExtendRaw_(that, items_size, items_ptr, <addr_t>offset)
__pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_offset); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4237, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_ExtendRaw_(__pyx_v_that, __pyx_v_items_size, __pyx_v_items_ptr, ((addr_t)__pyx_t_4)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4237, __pyx_L1_error) } __pyx_L4:;
04238:
04239:
+04240: cdef int Memory_PopLast_(Memory_* that) except -2:
static int __pyx_f_11cbytesparse_1c_Memory_PopLast_(Memory_ *__pyx_v_that) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; Block_ *__pyx_v_block; size_t __pyx_v_length; byte_t __pyx_v_backup; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PopLast_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory_PopLast_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -2; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04241: cdef:
+04242: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
+04243: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
04244: Block_* block
04245: size_t length
04246: byte_t backup
04247:
+04248: if block_count:
__pyx_t_2 = (__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ }
+04249: block = Rack_Last_(blocks)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Last_(__pyx_v_blocks);
+04250: length = Block_Length(block)
__pyx_v_length = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block);
+04251: if length > 1:
__pyx_t_2 = ((__pyx_v_length > 1) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+04252: block = Block_Pop__(block, &backup)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Pop__(__pyx_v_block, (&__pyx_v_backup)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 4252, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+04253: Rack_Set__(blocks, block_count - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_block_count - 1), __pyx_v_block));
+04254: elif length == 1:
__pyx_t_2 = ((__pyx_v_length == 1) != 0); if (likely(__pyx_t_2)) { /* … */ goto __pyx_L4; }
+04255: backup = Block_Get__(block, 0)
__pyx_v_backup = __pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, 0);
+04256: that.blocks = blocks = Rack_Pop__(blocks, NULL) # update pointer
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Pop__(__pyx_v_blocks, NULL); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4256, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_1;
__pyx_v_blocks = __pyx_t_1;
04257: else:
+04258: raise RuntimeError('empty block')
/*else*/ { __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 4258, __pyx_L1_error) } __pyx_L4:; /* … */ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_empty_block); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 4258, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19);
+04259: return backup
__pyx_r = __pyx_v_backup; goto __pyx_L0;
04260: else:
+04261: return -1
/*else*/ { __pyx_r = -1; goto __pyx_L0; }
04262:
04263:
+04264: cdef int Memory_PopAt_(Memory_* that, addr_t address) except -2:
static int __pyx_f_11cbytesparse_1c_Memory_PopAt_(Memory_ *__pyx_v_that, addr_t __pyx_v_address) { int __pyx_v_backup; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PopAt_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_PopAt_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -2; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04265: cdef:
04266: int backup
04267:
+04268: backup = Memory_Peek_(that, address)
__pyx_v_backup = __pyx_f_11cbytesparse_1c_Memory_Peek_(__pyx_v_that, __pyx_v_address);
+04269: Memory_Erase__(that, address, address + 1, True) # delete
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_address, (__pyx_v_address + 1), 1); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4269, __pyx_L1_error)
+04270: return backup
__pyx_r = __pyx_v_backup; goto __pyx_L0;
04271:
04272:
+04273: cdef object Memory_Pop(Memory_* that, object address, object default):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Pop(Memory_ *__pyx_v_that, PyObject *__pyx_v_address, PyObject *__pyx_v_default) { int __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Pop", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.Memory_Pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04274: cdef:
04275: int value
04276:
+04277: if address is None:
__pyx_t_1 = (__pyx_v_address == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+04278: value = Memory_PopLast_(that)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_PopLast_(__pyx_v_that); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 4278, __pyx_L1_error)
__pyx_v_value = __pyx_t_3;
04279: else:
+04280: value = Memory_PopAt_(that, <addr_t>address)
/*else*/ { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4280, __pyx_L1_error) __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_PopAt_(__pyx_v_that, ((addr_t)__pyx_t_4)); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 4280, __pyx_L1_error) __pyx_v_value = __pyx_t_3; } __pyx_L3:;
+04281: return default if value < 0 else value
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_value < 0) != 0)) { __Pyx_INCREF(__pyx_v_default); __pyx_t_5 = __pyx_v_default; } else { __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __pyx_t_6; __pyx_t_6 = 0; } __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
04282:
04283:
+04284: cdef (addr_t, int) Memory_PopItem(Memory_* that) except *:
static __pyx_ctuple_addr_t__and_int __pyx_f_11cbytesparse_1c_Memory_PopItem(Memory_ *__pyx_v_that) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; Block_ *__pyx_v_block; size_t __pyx_v_length; addr_t __pyx_v_address; byte_t __pyx_v_backup; __pyx_ctuple_addr_t__and_int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PopItem", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory_PopItem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_pretend_to_initialize(&__pyx_r); __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04285: cdef:
+04286: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
+04287: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
04288: Block_* block
04289: size_t length
04290: addr_t address
04291: byte_t backup
04292:
+04293: if block_count:
__pyx_t_2 = (__pyx_v_block_count != 0); if (likely(__pyx_t_2)) { /* … */ }
+04294: block = Rack_Last_(blocks)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Last_(__pyx_v_blocks);
+04295: length = Block_Length(block)
__pyx_v_length = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block);
+04296: address = Block_Start(block) + length - 1
__pyx_v_address = ((__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block) + __pyx_v_length) - 1);
+04297: if length > 1:
__pyx_t_2 = ((__pyx_v_length > 1) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+04298: block = Block_Pop__(block, &backup)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Pop__(__pyx_v_block, (&__pyx_v_backup)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 4298, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+04299: Rack_Set__(blocks, block_count - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_block_count - 1), __pyx_v_block));
+04300: elif length == 1:
__pyx_t_2 = ((__pyx_v_length == 1) != 0); if (likely(__pyx_t_2)) { /* … */ goto __pyx_L4; }
+04301: backup = Block_Get__(block, 0)
__pyx_v_backup = __pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, 0);
+04302: that.blocks = blocks = Rack_Pop__(blocks, NULL) # update pointer
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Pop__(__pyx_v_blocks, NULL); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4302, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_1;
__pyx_v_blocks = __pyx_t_1;
04303: else:
+04304: raise RuntimeError('empty block')
/*else*/ { __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 4304, __pyx_L1_error) } __pyx_L4:;
+04305: return address, backup
__pyx_t_5.f0 = __pyx_v_address; __pyx_t_5.f1 = __pyx_v_backup; __pyx_r = __pyx_t_5; goto __pyx_L0;
04306: else:
+04307: raise KeyError('empty')
/*else*/ { __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 4307, __pyx_L1_error) }
04308:
04309:
+04310: cdef BlockView Memory_View_(const Memory_* that, addr_t start, addr_t endex):
static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_f_11cbytesparse_1c_Memory_View_(Memory_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex) { Rack_ const *__pyx_v_blocks; Block_ *__pyx_v_block; Py_ssize_t __pyx_v_block_index; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_View_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory_View_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04311: cdef:
04312: const Rack_* blocks
04313: Block_* block
04314: ssize_t block_index
04315: addr_t block_start
04316: addr_t block_endex
04317:
+04318: if start < endex:
__pyx_t_1 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_1) { /* … */ }
+04319: blocks = that.blocks
__pyx_t_2 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_2;
+04320: block_index = Rack_IndexAt(blocks, start)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexAt(__pyx_v_blocks, __pyx_v_start);
04321:
+04322: if block_index >= 0:
__pyx_t_1 = ((__pyx_v_block_index >= 0) != 0); if (__pyx_t_1) { /* … */ }
+04323: block = Rack_Get__(blocks, <size_t>block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, ((size_t)__pyx_v_block_index));
+04324: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
04325:
+04326: if endex <= block_endex:
__pyx_t_1 = ((__pyx_v_endex <= __pyx_v_block_endex) != 0); if (__pyx_t_1) { /* … */ }
+04327: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+04328: start -= block_start
__pyx_v_start = (__pyx_v_start - __pyx_v_block_start);
+04329: endex -= block_start
__pyx_v_endex = (__pyx_v_endex - __pyx_v_block_start);
+04330: return Block_ViewSlice_(block, <size_t>start, <size_t>endex)
__Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_3 = ((PyObject *)__pyx_f_11cbytesparse_1c_Block_ViewSlice_(__pyx_v_block, ((size_t)__pyx_v_start), ((size_t)__pyx_v_endex))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
04331:
+04332: raise ValueError('non-contiguous data within range')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 4332, __pyx_L1_error) /* … */ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_non_contiguous_data_within_range); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 4332, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20);
04333: else:
+04334: return Block_ViewSlice_(_empty_block, 0, 0)
/*else*/ { __Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_3 = ((PyObject *)__pyx_f_11cbytesparse_1c_Block_ViewSlice_(__pyx_v_11cbytesparse_1c__empty_block, 0, 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; }
04335:
04336:
+04337: cdef BlockView Memory_View(const Memory_* that, object start, object endex):
static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_f_11cbytesparse_1c_Memory_View(Memory_ const *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_View", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory_View", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04338: cdef:
04339: addr_t start_
04340: addr_t endex_
04341:
+04342: start_, endex_ = Memory_Bound(that, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4342, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1.f0;
__pyx_t_3 = __pyx_t_1.f1;
__pyx_v_start_ = __pyx_t_2;
__pyx_v_endex_ = __pyx_t_3;
+04343: return Memory_View_(that, start_, endex_)
__Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_4 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_View_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L0;
04344:
04345:
+04346: cdef Memory_* Memory_Copy(const Memory_* that) except NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Copy(Memory_ const *__pyx_v_that) { Rack_ *__pyx_v_blocks; Memory_ *__pyx_v_memory; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Copy", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Copy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04347: cdef:
+04348: Rack_* blocks = Rack_Copy(that.blocks)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Copy(__pyx_v_that->blocks); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4348, __pyx_L1_error)
__pyx_v_blocks = __pyx_t_1;
+04349: Memory_* memory = NULL
__pyx_v_memory = NULL;
04350:
+04351: memory = <Memory_*>PyMem_Calloc(Memory_HEADING, 1)
__pyx_v_memory = ((Memory_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(Memory_HEADING, 1));
+04352: if memory == NULL:
__pyx_t_2 = ((__pyx_v_memory == NULL) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+04353: blocks = Rack_Free(blocks)
__pyx_v_blocks = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_blocks);
+04354: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 4354, __pyx_L1_error)
04355:
+04356: memory.blocks = blocks
__pyx_v_memory->blocks = __pyx_v_blocks;
+04357: memory.trim_start = that.trim_start
__pyx_t_3 = __pyx_v_that->trim_start; __pyx_v_memory->trim_start = __pyx_t_3;
+04358: memory.trim_endex = that.trim_endex
__pyx_t_3 = __pyx_v_that->trim_endex; __pyx_v_memory->trim_endex = __pyx_t_3;
+04359: memory.trim_start_ = that.trim_start_
__pyx_t_2 = __pyx_v_that->trim_start_; __pyx_v_memory->trim_start_ = __pyx_t_2;
+04360: memory.trim_endex_ = that.trim_endex_
__pyx_t_2 = __pyx_v_that->trim_endex_; __pyx_v_memory->trim_endex_ = __pyx_t_2;
+04361: return memory
__pyx_r = __pyx_v_memory; goto __pyx_L0;
04362:
04363:
+04364: cdef Memory_* Memory_Cut_(const Memory_* that, addr_t start, addr_t endex, bint bound) except NULL:
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Cut_(Memory_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex, int __pyx_v_bound) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; size_t __pyx_v_block_index_start; size_t __pyx_v_block_index_endex; Memory_ *__pyx_v_memory; Rack_ *__pyx_v_memory_blocks; Block_ *__pyx_v_block1; Block_ *__pyx_v_block2; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Cut_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("cbytesparse.c.Memory_Cut_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04365: cdef:
+04366: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04367: size_t block_count
04368: size_t block_index
04369: size_t block_index_start
04370: size_t block_index_endex
+04371: Memory_* memory = Memory_Alloc()
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Alloc(); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 4371, __pyx_L1_error)
__pyx_v_memory = __pyx_t_2;
04372: Rack_* memory_blocks
04373: Block_* block1
04374: Block_* block2
04375: addr_t block_start
04376: addr_t block_endex
04377:
+04378: if endex < start:
__pyx_t_3 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_3) { /* … */ }
+04379: endex = start
__pyx_v_endex = __pyx_v_start;
04380:
+04381: if start < endex and Rack_Bool(blocks):
__pyx_t_4 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L5_bool_binop_done; } __pyx_t_4 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); __pyx_t_3 = __pyx_t_4; __pyx_L5_bool_binop_done:; if (__pyx_t_3) { /* … */ }
04382: # Copy all the blocks except those completely outside selection
+04383: block_index_start = Rack_IndexStart(blocks, start)
__pyx_v_block_index_start = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_start);
+04384: block_index_endex = Rack_IndexEndex(blocks, endex)
__pyx_v_block_index_endex = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_v_endex);
+04385: block_count = block_index_endex - block_index_start
__pyx_v_block_count = (__pyx_v_block_index_endex - __pyx_v_block_index_start);
04386:
+04387: if block_count:
__pyx_t_3 = (__pyx_v_block_count != 0); if (__pyx_t_3) { /* … */ }
+04388: memory_blocks = memory.blocks
__pyx_t_1 = __pyx_v_memory->blocks; __pyx_v_memory_blocks = __pyx_t_1;
+04389: block_count = block_index_endex - block_index_start
__pyx_v_block_count = (__pyx_v_block_index_endex - __pyx_v_block_index_start);
+04390: try:
{ /*try:*/ { /* … */ } /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L13_try_end:; }
+04391: memory.blocks = memory_blocks = Rack_Reserve_(memory_blocks, 0, block_count)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_memory_blocks, 0, __pyx_v_block_count); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4391, __pyx_L8_error)
__pyx_v_memory->blocks = __pyx_t_1;
__pyx_v_memory_blocks = __pyx_t_1;
+04392: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Cut_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0) __PYX_ERR(0, 4392, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_14);
+04393: memory = Memory_Free(memory) # orphan
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4393, __pyx_L10_except_error) __pyx_v_memory = __pyx_t_2;
+04394: raise
__Pyx_GIVEREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestoreWithState(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __PYX_ERR(0, 4394, __pyx_L10_except_error) } __pyx_L10_except_error:;
04395: else:
+04396: for block_index in range(block_count):
/*else:*/ { __pyx_t_8 = __pyx_v_block_count; __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_block_index = __pyx_t_10;
+04397: block1 = Rack_Get_(blocks, block_index_start + block_index)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, (__pyx_v_block_index_start + __pyx_v_block_index)); if (unlikely(__pyx_t_11 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4397, __pyx_L10_except_error) __pyx_v_block1 = __pyx_t_11;
+04398: block1 = Block_Acquire(block1)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_block1); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4398, __pyx_L10_except_error)
__pyx_v_block1 = __pyx_t_11;
+04399: Rack_Set__(memory_blocks, block_index, block1)
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_memory_blocks, __pyx_v_block_index, __pyx_v_block1)); } } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L13_try_end; __pyx_L8_error:;
+04400: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L23_try_end; __pyx_L18_error:; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5); goto __pyx_L1_error; __pyx_L23_try_end:; }
04401: # Trim cloned data before the selection start address
+04402: block_index = 0
__pyx_v_block_index = 0;
+04403: block1 = Rack_Get_(memory_blocks, block_index)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_memory_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_11 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4403, __pyx_L18_error) __pyx_v_block1 = __pyx_t_11;
+04404: block_start = Block_Start(block1)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block1);
+04405: if block_start < start:
__pyx_t_3 = ((__pyx_v_block_start < __pyx_v_start) != 0); if (__pyx_t_3) { /* … */ }
+04406: try:
{ /*try:*/ { /* … */ } /* … */ __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); goto __pyx_L18_error; __pyx_L30_try_end:; }
+04407: block2 = NULL
__pyx_v_block2 = NULL;
+04408: block2 = Block_Copy(block1)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Copy(__pyx_v_block1); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4408, __pyx_L25_error)
__pyx_v_block2 = __pyx_t_11;
+04409: block2 = Block_DelSlice_(block2, 0, <size_t>(start - block_start))
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_block2, 0, ((size_t)(__pyx_v_start - __pyx_v_block_start))); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4409, __pyx_L25_error)
__pyx_v_block2 = __pyx_t_11;
+04410: block2.address = start
__pyx_v_block2->address = __pyx_v_start;
+04411: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Cut_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12) < 0) __PYX_ERR(0, 4411, __pyx_L27_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_12);
+04412: block2 = Block_Free(block2) # orphan
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block2);
+04413: raise
__Pyx_GIVEREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_14, __pyx_t_13, __pyx_t_12); __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 4413, __pyx_L27_except_error) } __pyx_L27_except_error:;
04414: else:
+04415: Rack_Set__(memory_blocks, block_index, block2)
/*else:*/ { (void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_memory_blocks, __pyx_v_block_index, __pyx_v_block2));
+04416: Block_Release(block1)
(void)(__pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_block1)); } __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; goto __pyx_L30_try_end; __pyx_L25_error:; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
04417:
04418: # Trim cloned data after the selection end address
+04419: block_index = block_count - 1
__pyx_v_block_index = (__pyx_v_block_count - 1);
+04420: block1 = Rack_Get_(memory_blocks, block_index)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_memory_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_11 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4420, __pyx_L18_error) __pyx_v_block1 = __pyx_t_11;
+04421: block_endex = Block_Endex(block1)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block1);
+04422: if endex < block_endex:
__pyx_t_3 = ((__pyx_v_endex < __pyx_v_block_endex) != 0); if (__pyx_t_3) { /* … */ }
+04423: block_start = Block_Start(block1)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block1);
+04424: if block_start < endex:
__pyx_t_3 = ((__pyx_v_block_start < __pyx_v_endex) != 0); if (__pyx_t_3) { /* … */ goto __pyx_L34; }
+04425: try:
{ /*try:*/ { /* … */ } /* … */ __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15); goto __pyx_L18_error; __pyx_L40_try_end:; }
+04426: block2 = NULL
__pyx_v_block2 = NULL;
+04427: block2 = Block_Copy(block1)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Copy(__pyx_v_block1); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4427, __pyx_L35_error)
__pyx_v_block2 = __pyx_t_11;
+04428: block2 = Block_DelSlice_(block2, <size_t>(endex - block_start), Block_Length(block2))
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_block2, ((size_t)(__pyx_v_endex - __pyx_v_block_start)), __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block2)); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4428, __pyx_L35_error)
__pyx_v_block2 = __pyx_t_11;
+04429: block2.address = block_start
__pyx_v_block2->address = __pyx_v_block_start;
+04430: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Cut_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0) __PYX_ERR(0, 4430, __pyx_L37_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_14);
+04431: block2 = Block_Free(block2) # orphan
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block2);
+04432: raise
__Pyx_GIVEREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ErrRestoreWithState(__pyx_t_12, __pyx_t_13, __pyx_t_14); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __PYX_ERR(0, 4432, __pyx_L37_except_error) } __pyx_L37_except_error:;
04433: else:
+04434: Rack_Set__(memory_blocks, block_index, block2)
/*else:*/ { (void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_memory_blocks, __pyx_v_block_index, __pyx_v_block2));
+04435: Block_Release(block1)
(void)(__pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_block1)); } __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; goto __pyx_L40_try_end; __pyx_L35_error:; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
04436: else:
+04437: memory.blocks = memory_blocks = Rack_Pop__(memory_blocks, &block2)
/*else*/ {
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Pop__(__pyx_v_memory_blocks, (&__pyx_v_block2)); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4437, __pyx_L18_error)
__pyx_v_memory->blocks = __pyx_t_1;
__pyx_v_memory_blocks = __pyx_t_1;
+04438: block2 = Block_Release(block2) # orphan
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_block2); } __pyx_L34:;
04439:
+04440: Memory_Erase__(that, start, endex, False) # clear
__pyx_t_18 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0); if (unlikely(__pyx_t_18 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4440, __pyx_L18_error)
04441:
+04442: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Cut_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12) < 0) __PYX_ERR(0, 4442, __pyx_L20_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_12);
+04443: memory = Memory_Free(memory) # orphan
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4443, __pyx_L20_except_error) __pyx_v_memory = __pyx_t_2;
+04444: raise
__Pyx_GIVEREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_14, __pyx_t_13, __pyx_t_12); __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 4444, __pyx_L20_except_error) } __pyx_L20_except_error:;
04445:
+04446: if bound:
__pyx_t_3 = (__pyx_v_bound != 0); if (__pyx_t_3) { /* … */ }
+04447: memory.trim_start = start
__pyx_v_memory->trim_start = __pyx_v_start;
+04448: memory.trim_endex = endex
__pyx_v_memory->trim_endex = __pyx_v_endex;
+04449: memory.trim_start_ = True
__pyx_v_memory->trim_start_ = 1;
+04450: memory.trim_endex_ = True
__pyx_v_memory->trim_endex_ = 1;
04451:
+04452: return memory
__pyx_r = __pyx_v_memory; goto __pyx_L0;
04453:
04454:
+04455: cdef object Memory_Cut(const Memory_* that, object start, object endex, bint bound):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Cut(Memory_ const *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, int __pyx_v_bound) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; Memory_ *__pyx_v_memory; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Cut", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory_Cut", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04456: cdef:
+04457: addr_t start_ = Memory_Start(that) if start is None else <addr_t>start
__pyx_t_2 = (__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4457, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_start_ = __pyx_t_1;
+04458: addr_t endex_ = Memory_Endex(that) if endex is None else <addr_t>endex
__pyx_t_2 = (__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4458, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_endex_ = __pyx_t_1;
+04459: Memory_* memory = Memory_Cut_(that, start_, endex_, bound)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Cut_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_, __pyx_v_bound); if (unlikely(__pyx_t_4 == ((Memory_ *)NULL))) __PYX_ERR(0, 4459, __pyx_L1_error)
__pyx_v_memory = __pyx_t_4;
04460:
+04461: return Memory_AsObject(memory)
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
04462:
04463:
04464:
+04465: cdef void Memory_Reverse(Memory_* that) nogil:
static void __pyx_f_11cbytesparse_1c_Memory_Reverse(Memory_ *__pyx_v_that) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; Block_ *__pyx_v_block; addr_t __pyx_v_start; addr_t __pyx_v_endex; /* … */ /* function exit code */ }
04466: cdef:
+04467: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
+04468: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
04469: size_t block_index
04470: Block_* block
04471: addr_t start
04472: addr_t endex
04473:
+04474: if block_count:
__pyx_t_2 = (__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ }
+04475: start = Memory_Start(that)
__pyx_v_start = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that);
+04476: endex = Memory_Endex(that)
__pyx_v_endex = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that);
04477:
+04478: for block_index in range(block_count):
__pyx_t_3 = __pyx_v_block_count; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_block_index = __pyx_t_5;
+04479: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+04480: Block_Reverse(block)
__pyx_f_11cbytesparse_1c_Block_Reverse(__pyx_v_block);
+04481: block.address = endex - Block_Endex(block) + start
__pyx_v_block->address = ((__pyx_v_endex - __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block)) + __pyx_v_start); }
04482:
+04483: Rack_Reverse(that.blocks)
__pyx_f_11cbytesparse_1c_Rack_Reverse(__pyx_v_that->blocks);
04484:
04485:
+04486: cdef bint Memory_Contiguous(const Memory_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Memory_Contiguous(Memory_ const *__pyx_v_that) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; addr_t __pyx_v_start; addr_t __pyx_v_endex; int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04487: cdef:
+04488: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
+04489: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
04490: addr_t start
04491: addr_t endex
04492:
+04493: if not block_count:
__pyx_t_2 = ((!(__pyx_v_block_count != 0)) != 0); if (__pyx_t_2) { /* … */ }
+04494: start = that.trim_start
__pyx_t_3 = __pyx_v_that->trim_start; __pyx_v_start = __pyx_t_3;
+04495: endex = that.trim_endex
__pyx_t_3 = __pyx_v_that->trim_endex; __pyx_v_endex = __pyx_t_3;
+04496: if that.trim_start_ and that.trim_endex_ and start < endex:
__pyx_t_4 = (__pyx_v_that->trim_start_ != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L5_bool_binop_done; } __pyx_t_4 = (__pyx_v_that->trim_endex_ != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L5_bool_binop_done; } __pyx_t_4 = ((__pyx_v_start < __pyx_v_endex) != 0); __pyx_t_2 = __pyx_t_4; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+04497: return False
__pyx_r = 0; goto __pyx_L0;
+04498: return True
__pyx_r = 1; goto __pyx_L0;
04499:
+04500: elif block_count == 1:
__pyx_t_2 = ((__pyx_v_block_count == 1) != 0); if (__pyx_t_2) { /* … */ }
+04501: start = that.trim_start
__pyx_t_3 = __pyx_v_that->trim_start; __pyx_v_start = __pyx_t_3;
+04502: if that.trim_start_:
__pyx_t_2 = (__pyx_v_that->trim_start_ != 0); if (__pyx_t_2) { /* … */ }
+04503: if start != Block_Start(Rack_First__(blocks)):
__pyx_t_2 = ((__pyx_v_start != __pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_blocks))) != 0); if (__pyx_t_2) { /* … */ }
+04504: return False
__pyx_r = 0; goto __pyx_L0;
+04505: endex = that.trim_endex
__pyx_t_3 = __pyx_v_that->trim_endex; __pyx_v_endex = __pyx_t_3;
+04506: if that.trim_endex_:
__pyx_t_2 = (__pyx_v_that->trim_endex_ != 0); if (__pyx_t_2) { /* … */ }
+04507: if endex != Block_Endex(Rack_Last__(blocks)):
__pyx_t_2 = ((__pyx_v_endex != __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks))) != 0); if (__pyx_t_2) { /* … */ }
+04508: return False
__pyx_r = 0; goto __pyx_L0;
+04509: return True
__pyx_r = 1; goto __pyx_L0;
04510:
+04511: return False
__pyx_r = 0; goto __pyx_L0;
04512:
04513:
+04514: cdef object Memory_GetTrimStart(const Memory_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_GetTrimStart(Memory_ const *__pyx_v_that) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_GetTrimStart", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory_GetTrimStart", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+04515: return that.trim_start if that.trim_start_ else None
__Pyx_XDECREF(__pyx_r); if ((__pyx_v_that->trim_start_ != 0)) { __pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_that->trim_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_1 = Py_None; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
04516:
04517:
+04518: cdef vint Memory_SetTrimStart(Memory_* that, object trim_start) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_SetTrimStart(Memory_ *__pyx_v_that, PyObject *__pyx_v_trim_start) { addr_t __pyx_v_trim_start_; addr_t __pyx_v_trim_endex_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_SetTrimStart", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_SetTrimStart", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04519: cdef:
04520: addr_t trim_start_
04521: addr_t trim_endex_
04522:
+04523: if trim_start is None:
__pyx_t_1 = (__pyx_v_trim_start == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+04524: trim_start_ = ADDR_MIN
__pyx_v_trim_start_ = ADDR_MIN;
+04525: that.trim_start_ = False
__pyx_v_that->trim_start_ = 0;
04526: else:
+04527: trim_start_ = <addr_t>trim_start
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_trim_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4527, __pyx_L1_error) __pyx_v_trim_start_ = ((addr_t)__pyx_t_3);
+04528: that.trim_start_ = True
__pyx_v_that->trim_start_ = 1; } __pyx_L3:;
04529:
+04530: trim_endex_ = that.trim_endex
__pyx_t_3 = __pyx_v_that->trim_endex; __pyx_v_trim_endex_ = __pyx_t_3;
+04531: if that.trim_start_ and that.trim_endex_ and trim_endex_ < trim_start_:
__pyx_t_1 = (__pyx_v_that->trim_start_ != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __pyx_t_1 = (__pyx_v_that->trim_endex_ != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __pyx_t_1 = ((__pyx_v_trim_endex_ < __pyx_v_trim_start_) != 0); __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+04532: that.trim_endex = trim_endex_ = trim_start_
__pyx_v_that->trim_endex = __pyx_v_trim_start_; __pyx_v_trim_endex_ = __pyx_v_trim_start_;
04533:
+04534: that.trim_start = trim_start_
__pyx_v_that->trim_start = __pyx_v_trim_start_;
+04535: if that.trim_start_:
__pyx_t_2 = (__pyx_v_that->trim_start_ != 0); if (__pyx_t_2) { /* … */ }
+04536: Memory_Crop_(that, trim_start_, trim_endex_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Crop_(__pyx_v_that, __pyx_v_trim_start_, __pyx_v_trim_endex_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4536, __pyx_L1_error)
04537:
04538:
+04539: cdef object Memory_GetTrimEndex(const Memory_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_GetTrimEndex(Memory_ const *__pyx_v_that) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_GetTrimEndex", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory_GetTrimEndex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+04540: return that.trim_endex if that.trim_endex_ else None
__Pyx_XDECREF(__pyx_r); if ((__pyx_v_that->trim_endex_ != 0)) { __pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_that->trim_endex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_1 = Py_None; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
04541:
04542:
+04543: cdef vint Memory_SetTrimEndex(Memory_* that, object trim_endex) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_SetTrimEndex(Memory_ *__pyx_v_that, PyObject *__pyx_v_trim_endex) { addr_t __pyx_v_trim_start_; addr_t __pyx_v_trim_endex_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_SetTrimEndex", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_SetTrimEndex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04544: cdef:
04545: addr_t trim_start_
04546: addr_t trim_endex_
04547:
+04548: if trim_endex is None:
__pyx_t_1 = (__pyx_v_trim_endex == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+04549: trim_endex_ = ADDR_MAX
__pyx_v_trim_endex_ = ADDR_MAX;
+04550: that.trim_endex_ = False
__pyx_v_that->trim_endex_ = 0;
04551: else:
+04552: trim_endex_ = <addr_t>trim_endex
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_trim_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4552, __pyx_L1_error) __pyx_v_trim_endex_ = ((addr_t)__pyx_t_3);
+04553: that.trim_endex_ = True
__pyx_v_that->trim_endex_ = 1; } __pyx_L3:;
04554:
+04555: trim_start_ = that.trim_start
__pyx_t_3 = __pyx_v_that->trim_start; __pyx_v_trim_start_ = __pyx_t_3;
+04556: if that.trim_start_ and that.trim_endex_ and trim_endex_ < trim_start_:
__pyx_t_1 = (__pyx_v_that->trim_start_ != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __pyx_t_1 = (__pyx_v_that->trim_endex_ != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __pyx_t_1 = ((__pyx_v_trim_endex_ < __pyx_v_trim_start_) != 0); __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+04557: that.trim_start = trim_start_ = trim_endex_
__pyx_v_that->trim_start = __pyx_v_trim_endex_; __pyx_v_trim_start_ = __pyx_v_trim_endex_;
04558:
+04559: that.trim_endex = trim_endex_
__pyx_v_that->trim_endex = __pyx_v_trim_endex_;
+04560: if that.trim_endex_:
__pyx_t_2 = (__pyx_v_that->trim_endex_ != 0); if (__pyx_t_2) { /* … */ }
+04561: Memory_Crop_(that, trim_start_, trim_endex_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Crop_(__pyx_v_that, __pyx_v_trim_start_, __pyx_v_trim_endex_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4561, __pyx_L1_error)
04562:
04563:
+04564: cdef object Memory_GetTrimSpan(const Memory_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_GetTrimSpan(Memory_ const *__pyx_v_that) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_GetTrimSpan", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory_GetTrimSpan", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+04565: return (that.trim_start if that.trim_start_ else None,
__Pyx_XDECREF(__pyx_r); if ((__pyx_v_that->trim_start_ != 0)) { __pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_that->trim_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_1 = Py_None; } /* … */ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
+04566: that.trim_endex if that.trim_endex_ else None)
if ((__pyx_v_that->trim_endex_ != 0)) { __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_that->trim_endex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_2 = Py_None; }
04567:
04568:
+04569: cdef vint Memory_SetTrimSpan(Memory_* that, object trim_span) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_SetTrimSpan(Memory_ *__pyx_v_that, PyObject *__pyx_v_trim_span) { PyObject *__pyx_v_trim_start = NULL; PyObject *__pyx_v_trim_endex = NULL; addr_t __pyx_v_trim_start_; addr_t __pyx_v_trim_endex_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_SetTrimSpan", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory_SetTrimSpan", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_trim_start); __Pyx_XDECREF(__pyx_v_trim_endex); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+04570: trim_start, trim_endex = trim_span
if ((likely(PyTuple_CheckExact(__pyx_v_trim_span))) || (PyList_CheckExact(__pyx_v_trim_span))) { PyObject* sequence = __pyx_v_trim_span; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 4570, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_trim_span); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 4570, __pyx_L1_error) __pyx_t_4 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 4570, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_trim_start = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_trim_endex = __pyx_t_2; __pyx_t_2 = 0;
04571:
+04572: if trim_start is None:
__pyx_t_5 = (__pyx_v_trim_start == Py_None); __pyx_t_6 = (__pyx_t_5 != 0); if (__pyx_t_6) { /* … */ goto __pyx_L5; }
+04573: trim_start_ = 0
__pyx_v_trim_start_ = 0;
+04574: that.trim_start_ = False
__pyx_v_that->trim_start_ = 0;
04575: else:
+04576: trim_start_ = <addr_t>trim_start
/*else*/ { __pyx_t_7 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_trim_start); if (unlikely((__pyx_t_7 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4576, __pyx_L1_error) __pyx_v_trim_start_ = ((addr_t)__pyx_t_7);
+04577: that.trim_start_ = True
__pyx_v_that->trim_start_ = 1; } __pyx_L5:;
04578:
+04579: if trim_endex is None:
__pyx_t_6 = (__pyx_v_trim_endex == Py_None); __pyx_t_5 = (__pyx_t_6 != 0); if (__pyx_t_5) { /* … */ goto __pyx_L6; }
+04580: trim_endex_ = ADDR_MAX
__pyx_v_trim_endex_ = ADDR_MAX;
+04581: that.trim_endex_ = False
__pyx_v_that->trim_endex_ = 0;
04582: else:
+04583: trim_endex_ = <addr_t>trim_endex
/*else*/ { __pyx_t_7 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_trim_endex); if (unlikely((__pyx_t_7 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4583, __pyx_L1_error) __pyx_v_trim_endex_ = ((addr_t)__pyx_t_7);
+04584: that.trim_endex_ = True
__pyx_v_that->trim_endex_ = 1; } __pyx_L6:;
04585:
+04586: if that.trim_start_ and that.trim_endex_ and trim_endex_ < trim_start_:
__pyx_t_6 = (__pyx_v_that->trim_start_ != 0); if (__pyx_t_6) { } else { __pyx_t_5 = __pyx_t_6; goto __pyx_L8_bool_binop_done; } __pyx_t_6 = (__pyx_v_that->trim_endex_ != 0); if (__pyx_t_6) { } else { __pyx_t_5 = __pyx_t_6; goto __pyx_L8_bool_binop_done; } __pyx_t_6 = ((__pyx_v_trim_endex_ < __pyx_v_trim_start_) != 0); __pyx_t_5 = __pyx_t_6; __pyx_L8_bool_binop_done:; if (__pyx_t_5) { /* … */ }
+04587: trim_endex_ = trim_start_
__pyx_v_trim_endex_ = __pyx_v_trim_start_;
04588:
+04589: that.trim_start = trim_start_
__pyx_v_that->trim_start = __pyx_v_trim_start_;
+04590: that.trim_endex = trim_endex_
__pyx_v_that->trim_endex = __pyx_v_trim_endex_;
+04591: if that.trim_start_ or that.trim_endex_:
__pyx_t_6 = (__pyx_v_that->trim_start_ != 0); if (!__pyx_t_6) { } else { __pyx_t_5 = __pyx_t_6; goto __pyx_L12_bool_binop_done; } __pyx_t_6 = (__pyx_v_that->trim_endex_ != 0); __pyx_t_5 = __pyx_t_6; __pyx_L12_bool_binop_done:; if (__pyx_t_5) { /* … */ }
+04592: Memory_Crop_(that, trim_start_, trim_endex_)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_Crop_(__pyx_v_that, __pyx_v_trim_start_, __pyx_v_trim_endex_); if (unlikely(__pyx_t_8 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4592, __pyx_L1_error)
04593:
04594:
+04595: cdef addr_t Memory_Start(const Memory_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Memory_Start(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04596: cdef:
04597: const Rack_* blocks
04598:
+04599: if not that.trim_start_:
__pyx_t_1 = ((!(__pyx_v_that->trim_start_ != 0)) != 0); if (__pyx_t_1) { /* … */ }
04600: # Return actual
+04601: blocks = that.blocks
__pyx_t_2 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_2;
+04602: if Rack_Bool(blocks):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_1) { /* … */ }
+04603: return Block_Start(Rack_First__(blocks))
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_blocks)); goto __pyx_L0;
04604: else:
+04605: return 0
/*else*/ { __pyx_r = 0; goto __pyx_L0; }
04606: else:
+04607: return that.trim_start
/*else*/ { __pyx_r = __pyx_v_that->trim_start; goto __pyx_L0; }
04608:
04609:
+04610: cdef addr_t Memory_Endex(const Memory_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Memory_Endex(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04611: cdef:
04612: const Rack_* blocks
04613:
+04614: if not that.trim_endex_:
__pyx_t_1 = ((!(__pyx_v_that->trim_endex_ != 0)) != 0); if (__pyx_t_1) { /* … */ }
04615: # Return actual
+04616: blocks = that.blocks
__pyx_t_2 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_2;
+04617: if Rack_Bool(blocks):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_1) { /* … */ }
+04618: return Block_Endex(Rack_Last__(blocks))
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks)); goto __pyx_L0;
04619: else:
+04620: return Memory_Start(that)
/*else*/ { __pyx_r = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); goto __pyx_L0; }
04621: else:
+04622: return that.trim_endex
/*else*/ { __pyx_r = __pyx_v_that->trim_endex; goto __pyx_L0; }
04623:
04624:
+04625: cdef (addr_t, addr_t) Memory_Span(const Memory_* that) nogil:
static __pyx_ctuple_addr_t__and_addr_t __pyx_f_11cbytesparse_1c_Memory_Span(Memory_ const *__pyx_v_that) { __pyx_ctuple_addr_t__and_addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+04626: return Memory_Start(that), Memory_Endex(that)
__pyx_t_1.f0 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); __pyx_t_1.f1 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); __pyx_r = __pyx_t_1; goto __pyx_L0;
04627:
04628:
+04629: cdef object Memory_Endin(const Memory_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Endin(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Endin", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory_Endin", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04630: cdef:
04631: const Rack_* blocks
04632:
+04633: if not that.trim_endex_:
__pyx_t_1 = ((!(__pyx_v_that->trim_endex_ != 0)) != 0); if (__pyx_t_1) { /* … */ }
04634: # Return actual
+04635: blocks = that.blocks
__pyx_t_2 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_2;
+04636: if Rack_Bool(blocks):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_1) { /* … */ }
+04637: return <object>Block_Endex(Rack_Last__(blocks)) - 1
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
04638: else:
+04639: return <object>Memory_Start(that) - 1
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_4, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; }
04640: else:
+04641: return <object>that.trim_endex - 1
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_that->trim_endex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; }
04642:
04643:
+04644: cdef addr_t Memory_ContentStart(const Memory_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Memory_ContentStart(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04645: cdef:
+04646: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04647:
+04648: if Rack_Bool(blocks):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_2) { /* … */ }
+04649: return Block_Start(Rack_First__(blocks))
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_blocks)); goto __pyx_L0;
+04650: elif not that.trim_start_:
__pyx_t_2 = ((!(__pyx_v_that->trim_start_ != 0)) != 0); if (__pyx_t_2) { /* … */ }
+04651: return 0
__pyx_r = 0; goto __pyx_L0;
04652: else:
+04653: return that.trim_start
/*else*/ { __pyx_r = __pyx_v_that->trim_start; goto __pyx_L0; }
04654:
04655:
+04656: cdef addr_t Memory_ContentEndex(const Memory_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Memory_ContentEndex(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04657: cdef:
+04658: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04659:
+04660: if Rack_Bool(blocks):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_2) { /* … */ }
+04661: return Block_Endex(Rack_Last__(blocks))
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks)); goto __pyx_L0;
+04662: elif not that.trim_start_:
__pyx_t_2 = ((!(__pyx_v_that->trim_start_ != 0)) != 0); if (__pyx_t_2) { /* … */ }
+04663: return 0 # default to start
__pyx_r = 0; goto __pyx_L0;
04664: else:
+04665: return that.trim_start # default to start
/*else*/ { __pyx_r = __pyx_v_that->trim_start; goto __pyx_L0; }
04666:
04667:
+04668: cdef (addr_t, addr_t) Memory_ContentSpan(const Memory_* that) nogil:
static __pyx_ctuple_addr_t__and_addr_t __pyx_f_11cbytesparse_1c_Memory_ContentSpan(Memory_ const *__pyx_v_that) { __pyx_ctuple_addr_t__and_addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+04669: return Memory_ContentStart(that), Memory_ContentEndex(that)
__pyx_t_1.f0 = __pyx_f_11cbytesparse_1c_Memory_ContentStart(__pyx_v_that); __pyx_t_1.f1 = __pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_that); __pyx_r = __pyx_t_1; goto __pyx_L0;
04670:
04671:
+04672: cdef object Memory_ContentEndin(const Memory_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_ContentEndin(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_ContentEndin", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory_ContentEndin", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04673: cdef:
+04674: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04675:
+04676: if Rack_Bool(blocks):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_2) { /* … */ }
+04677: return <object>Block_Endex(Rack_Last__(blocks)) - 1
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+04678: elif not that.trim_start_: # default to start-1
__pyx_t_2 = ((!(__pyx_v_that->trim_start_ != 0)) != 0); if (__pyx_t_2) { /* … */ }
+04679: return -1
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_int_neg_1); __pyx_r = __pyx_int_neg_1; goto __pyx_L0;
04680: else:
+04681: return <object>that.trim_start - 1 # default to start-1
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_that->trim_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_4, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; }
04682:
04683:
+04684: cdef addr_t Memory_ContentSize(const Memory_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Memory_ContentSize(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; addr_t __pyx_v_content_size; addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04685: cdef:
+04686: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04687: size_t block_index
04688: const Block_* block
+04689: addr_t content_size = 0
__pyx_v_content_size = 0;
04690:
+04691: for block_index in range(Rack_Length(blocks)):
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_block_index = __pyx_t_4;
+04692: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+04693: content_size += Block_Length(block)
__pyx_v_content_size = (__pyx_v_content_size + __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block)); }
+04694: return content_size
__pyx_r = __pyx_v_content_size; goto __pyx_L0;
04695:
04696:
+04697: cdef size_t Memory_ContentParts(const Memory_* that) nogil:
static size_t __pyx_f_11cbytesparse_1c_Memory_ContentParts(Memory_ const *__pyx_v_that) { size_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+04698: return Rack_Length(that.blocks)
__pyx_r = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_that->blocks); goto __pyx_L0;
04699:
04700:
+04701: cdef vint Memory_Validate(const Memory_* that) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Validate(Memory_ const *__pyx_v_that) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; addr_t __pyx_v_start; addr_t __pyx_v_endex; addr_t __pyx_v_previous_endex; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Validate", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.Memory_Validate", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04702: cdef:
+04703: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
+04704: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
04705:
04706: addr_t start
04707: addr_t endex
+04708: addr_t previous_endex = 0
__pyx_v_previous_endex = 0;
04709:
04710: size_t block_index
04711: const Block_* block
04712: addr_t block_start
04713: addr_t block_endex
04714:
+04715: start, endex = Memory_Bound(that, None, None)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, Py_None, Py_None); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4715, __pyx_L1_error)
__pyx_t_3 = __pyx_t_2.f0;
__pyx_t_4 = __pyx_t_2.f1;
__pyx_v_start = __pyx_t_3;
__pyx_v_endex = __pyx_t_4;
+04716: block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
04717:
+04718: if block_count:
__pyx_t_5 = (__pyx_v_block_count != 0); if (__pyx_t_5) { /* … */ goto __pyx_L3; }
+04719: if endex <= start:
__pyx_t_5 = ((__pyx_v_endex <= __pyx_v_start) != 0); if (unlikely(__pyx_t_5)) { /* … */ }
+04720: raise ValueError('invalid bounds')
__pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 4720, __pyx_L1_error) /* … */ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_invalid_bounds); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 4720, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21);
04721:
+04722: for block_index in range(block_count):
__pyx_t_7 = __pyx_v_block_count; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_block_index = __pyx_t_9;
+04723: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+04724: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+04725: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
04726:
+04727: if block_index: # skip first
__pyx_t_5 = (__pyx_v_block_index != 0); if (__pyx_t_5) { /* … */ }
+04728: if block_start <= previous_endex:
__pyx_t_5 = ((__pyx_v_block_start <= __pyx_v_previous_endex) != 0); if (unlikely(__pyx_t_5)) { /* … */ }
+04729: raise ValueError('invalid block interleaving')
__pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 4729, __pyx_L1_error) /* … */ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_invalid_block_interleaving); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 4729, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22);
04730:
+04731: if block_endex <= block_start:
__pyx_t_5 = ((__pyx_v_block_endex <= __pyx_v_block_start) != 0); if (unlikely(__pyx_t_5)) { /* … */ }
+04732: raise ValueError('invalid block data size')
__pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 4732, __pyx_L1_error)
04733:
+04734: if block_start < start or endex < block_endex:
__pyx_t_10 = ((__pyx_v_block_start < __pyx_v_start) != 0); if (!__pyx_t_10) { } else { __pyx_t_5 = __pyx_t_10; goto __pyx_L11_bool_binop_done; } __pyx_t_10 = ((__pyx_v_endex < __pyx_v_block_endex) != 0); __pyx_t_5 = __pyx_t_10; __pyx_L11_bool_binop_done:; if (unlikely(__pyx_t_5)) { /* … */ }
+04735: raise ValueError('invalid block bounds')
__pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 4735, __pyx_L1_error) /* … */ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_invalid_block_bounds); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 4735, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23);
04736:
+04737: previous_endex = block_endex
__pyx_v_previous_endex = __pyx_v_block_endex; }
04738:
04739: else:
+04740: if endex < start:
/*else*/ { __pyx_t_5 = ((__pyx_v_endex < __pyx_v_start) != 0); if (unlikely(__pyx_t_5)) { /* … */ } } __pyx_L3:;
+04741: raise ValueError('invalid bounds')
__pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 4741, __pyx_L1_error)
04742:
04743:
+04744: cdef (addr_t, addr_t) Memory_Bound_(const Memory_* that, addr_t start, addr_t endex,
static __pyx_ctuple_addr_t__and_addr_t __pyx_f_11cbytesparse_1c_Memory_Bound_(Memory_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex, int __pyx_v_start_, int __pyx_v_endex_) { addr_t __pyx_v_trim_start; addr_t __pyx_v_trim_endex; __pyx_ctuple_addr_t__and_addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04745: bint start_, bint endex_) nogil:
04746: cdef:
04747: addr_t trim_start
04748: addr_t trim_endex
04749:
+04750: trim_start = that.trim_start
__pyx_t_1 = __pyx_v_that->trim_start; __pyx_v_trim_start = __pyx_t_1;
+04751: trim_endex = that.trim_endex
__pyx_t_1 = __pyx_v_that->trim_endex; __pyx_v_trim_endex = __pyx_t_1;
04752:
+04753: if not start_:
__pyx_t_2 = ((!(__pyx_v_start_ != 0)) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+04754: if not that.trim_start_:
__pyx_t_2 = ((!(__pyx_v_that->trim_start_ != 0)) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+04755: if Rack_Bool(that.blocks):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+04756: start = Block_Start(Rack_First__(that.blocks))
__pyx_v_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_that->blocks));
04757: else:
+04758: start = 0
/*else*/ { __pyx_v_start = 0; } __pyx_L5:;
04759: else:
+04760: start = trim_start
/*else*/ { __pyx_v_start = __pyx_v_trim_start; } __pyx_L4:;
04761: else:
+04762: if that.trim_start_:
/*else*/ { __pyx_t_2 = (__pyx_v_that->trim_start_ != 0); if (__pyx_t_2) { /* … */ }
+04763: if start < trim_start:
__pyx_t_2 = ((__pyx_v_start < __pyx_v_trim_start) != 0); if (__pyx_t_2) { /* … */ }
+04764: start = trim_start
__pyx_v_start = __pyx_v_trim_start;
+04765: if endex_:
__pyx_t_2 = (__pyx_v_endex_ != 0); if (__pyx_t_2) { /* … */ } } __pyx_L3:;
+04766: if endex < start:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ }
+04767: endex = start
__pyx_v_endex = __pyx_v_start;
04768:
+04769: if not endex_:
__pyx_t_2 = ((!(__pyx_v_endex_ != 0)) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L10; }
+04770: if not that.trim_endex_:
__pyx_t_2 = ((!(__pyx_v_that->trim_endex_ != 0)) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L11; }
+04771: if Rack_Bool(that.blocks):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L12; }
+04772: endex = Block_Endex(Rack_Last__(that.blocks))
__pyx_v_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_that->blocks));
04773: else:
+04774: endex = start
/*else*/ { __pyx_v_endex = __pyx_v_start; } __pyx_L12:;
04775: else:
+04776: endex = trim_endex
/*else*/ { __pyx_v_endex = __pyx_v_trim_endex; } __pyx_L11:;
04777: else:
+04778: if that.trim_endex_:
/*else*/ { __pyx_t_2 = (__pyx_v_that->trim_endex_ != 0); if (__pyx_t_2) { /* … */ }
+04779: if endex > trim_endex:
__pyx_t_2 = ((__pyx_v_endex > __pyx_v_trim_endex) != 0); if (__pyx_t_2) { /* … */ }
+04780: endex = trim_endex
__pyx_v_endex = __pyx_v_trim_endex;
+04781: if start > endex:
__pyx_t_2 = ((__pyx_v_start > __pyx_v_endex) != 0); if (__pyx_t_2) { /* … */ } } __pyx_L10:;
+04782: start = endex
__pyx_v_start = __pyx_v_endex;
04783:
+04784: return start, endex
__pyx_t_3.f0 = __pyx_v_start; __pyx_t_3.f1 = __pyx_v_endex; __pyx_r = __pyx_t_3; goto __pyx_L0;
04785:
04786:
+04787: cdef (addr_t, addr_t) Memory_Bound(const Memory_* that, object start, object endex) except *:
static __pyx_ctuple_addr_t__and_addr_t __pyx_f_11cbytesparse_1c_Memory_Bound(Memory_ const *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { int __pyx_v_start__; int __pyx_v_endex__; addr_t __pyx_v_start_; addr_t __pyx_v_endex_; __pyx_ctuple_addr_t__and_addr_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Bound", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Bound", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_pretend_to_initialize(&__pyx_r); __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04788: cdef:
+04789: bint start__ = start is not None
__pyx_t_1 = (__pyx_v_start != Py_None); __pyx_v_start__ = __pyx_t_1;
+04790: bint endex__ = endex is not None
__pyx_t_1 = (__pyx_v_endex != Py_None); __pyx_v_endex__ = __pyx_t_1;
+04791: addr_t start_ = <addr_t>start if start__ else 0
if ((__pyx_v_start__ != 0)) { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4791, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_3); } else { __pyx_t_2 = 0; } __pyx_v_start_ = __pyx_t_2;
+04792: addr_t endex_ = <addr_t>endex if endex__ else start_
if ((__pyx_v_endex__ != 0)) { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4792, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_3); } else { __pyx_t_2 = __pyx_v_start_; } __pyx_v_endex_ = __pyx_t_2;
04793:
+04794: return Memory_Bound_(that, start_, endex_, start__, endex__)
__pyx_r = __pyx_f_11cbytesparse_1c_Memory_Bound_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_, __pyx_v_start__, __pyx_v_endex__); goto __pyx_L0;
04795:
04796:
+04797: cdef int Memory_Peek_(const Memory_* that, addr_t address) nogil:
static int __pyx_f_11cbytesparse_1c_Memory_Peek_(Memory_ const *__pyx_v_that, addr_t __pyx_v_address) { Rack_ const *__pyx_v_blocks; Py_ssize_t __pyx_v_block_index; Block_ const *__pyx_v_block; int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
04798: cdef:
+04799: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04800: ssize_t block_index
04801: const Block_* block
04802:
+04803: block_index = Rack_IndexAt(blocks, address)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexAt(__pyx_v_blocks, __pyx_v_address);
+04804: if block_index < 0:
__pyx_t_2 = ((__pyx_v_block_index < 0) != 0); if (__pyx_t_2) { /* … */ }
+04805: return -1
__pyx_r = -1; goto __pyx_L0;
04806: else:
+04807: block = Rack_Get__(blocks, <size_t>block_index)
/*else*/ { __pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, ((size_t)__pyx_v_block_index));
+04808: return Block_Get__(block, address - Block_Start(block))
__pyx_r = __pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, (__pyx_v_address - __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block))); goto __pyx_L0; }
04809:
04810:
+04811: cdef object Memory_Peek(const Memory_* that, object address):
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Peek(Memory_ const *__pyx_v_that, PyObject *__pyx_v_address) { int __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Peek", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory_Peek", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04812: cdef:
04813: int value
04814:
+04815: value = Memory_Peek_(that, <addr_t>address)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4815, __pyx_L1_error) __pyx_v_value = __pyx_f_11cbytesparse_1c_Memory_Peek_(__pyx_v_that, ((addr_t)__pyx_t_1));
+04816: return None if value < 0 else value
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_value < 0) != 0)) { __Pyx_INCREF(Py_None); __pyx_t_2 = Py_None; } else { __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
04817:
04818:
+04819: cdef vint Memory_PokeNone_(Memory_* that, addr_t address) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_PokeNone_(Memory_ *__pyx_v_that, addr_t __pyx_v_address) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PokeNone_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_PokeNone_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+04820: if address < that.trim_start:
__pyx_t_1 = ((__pyx_v_address < __pyx_v_that->trim_start) != 0); if (__pyx_t_1) { /* … */ }
+04821: return 0
__pyx_r = 0; goto __pyx_L0;
+04822: if address >= that.trim_endex:
__pyx_t_1 = ((__pyx_v_address >= __pyx_v_that->trim_endex) != 0); if (__pyx_t_1) { /* … */ }
+04823: return 0
__pyx_r = 0; goto __pyx_L0;
04824:
04825: # Standard clear method
+04826: Memory_Erase__(that, address, address + 1, False) # clear
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_address, (__pyx_v_address + 1), 0); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4826, __pyx_L1_error)
+04827: return 0
__pyx_r = 0; goto __pyx_L0;
04828:
04829:
+04830: cdef vint Memory_Poke_(Memory_* that, addr_t address, byte_t item) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Poke_(Memory_ *__pyx_v_that, addr_t __pyx_v_address, byte_t __pyx_v_item) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; Block_ *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; Block_ *__pyx_v_block2; addr_t __pyx_v_block_start2; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Poke_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Poke_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04831: cdef:
04832: Rack_* blocks
04833: size_t block_count
04834: size_t block_index
04835: Block_* block
04836: addr_t block_start
04837: addr_t block_endex
04838: Block_* block2
04839: addr_t block_start2
04840:
+04841: if address < that.trim_start:
__pyx_t_1 = ((__pyx_v_address < __pyx_v_that->trim_start) != 0); if (__pyx_t_1) { /* … */ }
+04842: return 0
__pyx_r = 0; goto __pyx_L0;
+04843: if address >= that.trim_endex:
__pyx_t_1 = ((__pyx_v_address >= __pyx_v_that->trim_endex) != 0); if (__pyx_t_1) { /* … */ }
+04844: return 0
__pyx_r = 0; goto __pyx_L0;
04845:
+04846: blocks = that.blocks
__pyx_t_2 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_2;
+04847: block_index = Rack_IndexEndex(blocks, address) - 1
__pyx_v_block_index = (__pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_v_address) - 1);
+04848: block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
04849:
+04850: if block_index < block_count:
__pyx_t_1 = ((__pyx_v_block_index < __pyx_v_block_count) != 0); if (__pyx_t_1) { /* … */ }
+04851: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+04852: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+04853: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
04854:
+04855: if block_start <= address < block_endex:
__pyx_t_1 = (__pyx_v_block_start <= __pyx_v_address); if (__pyx_t_1) { __pyx_t_1 = (__pyx_v_address < __pyx_v_block_endex); } __pyx_t_3 = (__pyx_t_1 != 0); if (__pyx_t_3) { /* … */ }
04856: # Address within existing block, update directly
+04857: address -= block_start
__pyx_v_address = (__pyx_v_address - __pyx_v_block_start);
+04858: Block_Set__(block, <size_t>address, item)
(void)(__pyx_f_11cbytesparse_1c_Block_Set__(__pyx_v_block, ((size_t)__pyx_v_address), __pyx_v_item));
+04859: return 0
__pyx_r = 0; goto __pyx_L0;
04860:
+04861: elif address == block_endex:
__pyx_t_3 = ((__pyx_v_address == __pyx_v_block_endex) != 0); if (__pyx_t_3) { /* … */ }
04862: # Address just after the end of the block, append
+04863: block = Block_Append(block, item)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_Append(__pyx_v_block, __pyx_v_item); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 4863, __pyx_L1_error)
__pyx_v_block = __pyx_t_4;
+04864: Rack_Set__(blocks, block_index, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block));
04865:
+04866: block_index += 1
__pyx_v_block_index = (__pyx_v_block_index + 1);
+04867: if block_index < block_count:
__pyx_t_3 = ((__pyx_v_block_index < __pyx_v_block_count) != 0); if (__pyx_t_3) { /* … */ }
+04868: block2 = Rack_Get__(blocks, block_index)
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+04869: block_start2 = Block_Start(block2)
__pyx_v_block_start2 = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block2);
04870:
+04871: if block_endex + 1 == block_start2:
__pyx_t_3 = (((__pyx_v_block_endex + 1) == __pyx_v_block_start2) != 0); if (__pyx_t_3) { /* … */ }
04872: # Merge with the following contiguous block
+04873: block = Block_Extend(block, block2)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_Extend(__pyx_v_block, __pyx_v_block2); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 4873, __pyx_L1_error)
__pyx_v_block = __pyx_t_4;
+04874: Rack_Set__(blocks, block_index - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_block_index - 1), __pyx_v_block));
+04875: that.blocks = blocks = Rack_Pop_(blocks, block_index, NULL)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Pop_(__pyx_v_blocks, __pyx_v_block_index, NULL); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 4875, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_2;
__pyx_v_blocks = __pyx_t_2;
+04876: return 0
__pyx_r = 0; goto __pyx_L0;
04877:
04878: else:
+04879: block_index += 1
/*else*/ { __pyx_v_block_index = (__pyx_v_block_index + 1);
+04880: if block_index < block_count:
__pyx_t_3 = ((__pyx_v_block_index < __pyx_v_block_count) != 0); if (__pyx_t_3) { /* … */ } }
+04881: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+04882: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
04883:
+04884: if address + 1 == block_start:
__pyx_t_3 = (((__pyx_v_address + 1) == __pyx_v_block_start) != 0); if (__pyx_t_3) { /* … */ }
04885: # Prepend to the next block
+04886: block = Block_AppendLeft(block, item)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_AppendLeft(__pyx_v_block, __pyx_v_item); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 4886, __pyx_L1_error)
__pyx_v_block = __pyx_t_4;
+04887: Rack_Set__(blocks, block_index, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block));
+04888: block.address -= 1 # update address
__pyx_v_block->address = (__pyx_v_block->address - 1);
+04889: return 0
__pyx_r = 0; goto __pyx_L0;
04890:
04891: # There is no faster way than the standard block writing method
+04892: Memory_Erase__(that, address, address + 1, False) # clear
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_address, (__pyx_v_address + 1), 0); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4892, __pyx_L1_error)
+04893: Memory_Place__(that, address, 1, &item, False) # write
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Place__(__pyx_v_that, __pyx_v_address, 1, (&__pyx_v_item), 0); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4893, __pyx_L1_error)
04894:
+04895: Memory_Crop_(that, that.trim_start, that.trim_endex)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Crop_(__pyx_v_that, __pyx_v_that->trim_start, __pyx_v_that->trim_endex); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4895, __pyx_L1_error)
+04896: return 0
__pyx_r = 0; goto __pyx_L0;
04897:
04898:
+04899: cdef vint Memory_Poke(Memory_* that, object address, object item) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Poke(Memory_ *__pyx_v_that, PyObject *__pyx_v_address, PyObject *__pyx_v_item) { addr_t __pyx_v_address_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Poke", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.Memory_Poke", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
04900: cdef:
+04901: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4901, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
04902:
+04903: if item is None:
__pyx_t_2 = (__pyx_v_item == Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* … */ goto __pyx_L3; }
+04904: Memory_PokeNone_(that, address_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_PokeNone_(__pyx_v_that, __pyx_v_address_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4904, __pyx_L1_error)
04905: else:
+04906: if isinstance(item, int):
/*else*/ {
__pyx_t_3 = PyInt_Check(__pyx_v_item);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L4;
}
+04907: Memory_Poke_(that, address_, <byte_t>item)
__pyx_t_5 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_5 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4907, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_that, __pyx_v_address_, ((byte_t)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4907, __pyx_L1_error)
04908: else:
+04909: if len(item) != 1:
/*else*/ { __pyx_t_6 = PyObject_Length(__pyx_v_item); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4909, __pyx_L1_error) __pyx_t_2 = ((__pyx_t_6 != 1) != 0); if (unlikely(__pyx_t_2)) { /* … */ }
+04910: raise ValueError('expecting single item')
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 4910, __pyx_L1_error)
+04911: Memory_Poke_(that, address_, <byte_t>item[0])
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyInt_As_byte_t(__pyx_t_7); if (unlikely((__pyx_t_5 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4911, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_that, __pyx_v_address_, ((byte_t)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4911, __pyx_L1_error) } __pyx_L4:; } __pyx_L3:;
04912:
04913:
+04914: cdef Memory_* Memory_Extract__(const Memory_* that, addr_t start, addr_t endex,
static Memory_ *__pyx_f_11cbytesparse_1c_Memory_Extract__(Memory_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex, size_t __pyx_v_pattern_size, byte_t const *__pyx_v_pattern_ptr, saddr_t __pyx_v_step, int __pyx_v_bound) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; size_t __pyx_v_block_index_start; size_t __pyx_v_block_index_endex; Memory_ *__pyx_v_memory; Block_ *__pyx_v_block2; addr_t __pyx_v_offset; Block_ *__pyx_v_pattern; int __pyx_v_value; CYTHON_UNUSED saddr_t __pyx_v_skip; Rover_ *__pyx_v_rover; Rack_ *__pyx_v_memory_blocks; PyObject *__pyx_v_block_start = NULL; addr_t __pyx_v_block_endex; Memory_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Extract__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_15); __Pyx_AddTraceback("cbytesparse.c.Memory_Extract__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_block_start); __Pyx_RefNannyFinishContext(); return __pyx_r; }
04915: size_t pattern_size, const byte_t* pattern_ptr,
04916: saddr_t step, bint bound) except NULL:
04917: cdef:
+04918: const Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
04919: size_t block_count
04920: size_t block_index
04921: size_t block_index_start
04922: size_t block_index_endex
+04923: Memory_* memory = Memory_Alloc()
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Alloc(); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 4923, __pyx_L1_error)
__pyx_v_memory = __pyx_t_2;
04924: Rack_* blocks2
04925: Block_* block2
04926: addr_t offset
+04927: Block_* pattern = NULL
__pyx_v_pattern = NULL;
04928: int value
04929: saddr_t skip
+04930: Rover_* rover = NULL
__pyx_v_rover = NULL;
04931:
+04932: if endex < start:
__pyx_t_3 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_3) { /* … */ }
+04933: endex = start
__pyx_v_endex = __pyx_v_start;
04934:
+04935: if step == 1:
__pyx_t_3 = ((__pyx_v_step == 1) != 0); if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+04936: if start < endex and Rack_Bool(blocks):
__pyx_t_4 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L6_bool_binop_done; } __pyx_t_4 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); __pyx_t_3 = __pyx_t_4; __pyx_L6_bool_binop_done:; if (__pyx_t_3) { /* … */ }
04937: # Copy all the blocks except those completely outside selection
+04938: block_index_start = Rack_IndexStart(blocks, start)
__pyx_v_block_index_start = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_start);
+04939: block_index_endex = Rack_IndexEndex(blocks, endex)
__pyx_v_block_index_endex = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_v_endex);
+04940: block_count = block_index_endex - block_index_start
__pyx_v_block_count = (__pyx_v_block_index_endex - __pyx_v_block_index_start);
04941:
+04942: if block_count:
__pyx_t_3 = (__pyx_v_block_count != 0); if (__pyx_t_3) { /* … */ }
+04943: memory_blocks = memory.blocks
__pyx_t_1 = __pyx_v_memory->blocks; __pyx_v_memory_blocks = __pyx_t_1;
+04944: block_count = block_index_endex - block_index_start
__pyx_v_block_count = (__pyx_v_block_index_endex - __pyx_v_block_index_start);
+04945: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L14_try_end; __pyx_L9_error:; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L14_try_end:; }
+04946: memory.blocks = memory_blocks = Rack_Reserve_(memory_blocks, 0, block_count)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Reserve_(__pyx_v_memory_blocks, 0, __pyx_v_block_count); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4946, __pyx_L9_error)
__pyx_v_memory->blocks = __pyx_t_1;
__pyx_v_memory_blocks = __pyx_t_1;
04947:
+04948: for block_index in range(block_count):
__pyx_t_8 = __pyx_v_block_count; __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_block_index = __pyx_t_10;
+04949: block2 = Rack_Get_(blocks, block_index_start + block_index)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, (__pyx_v_block_index_start + __pyx_v_block_index)); if (unlikely(__pyx_t_11 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4949, __pyx_L9_error) __pyx_v_block2 = __pyx_t_11;
+04950: block2 = Block_Copy(block2)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Copy(__pyx_v_block2); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4950, __pyx_L9_error)
__pyx_v_block2 = __pyx_t_11;
+04951: Rack_Set__(memory_blocks, block_index, block2) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_memory_blocks, __pyx_v_block_index, __pyx_v_block2)); }
04952:
04953: # Trim cloned data before the selection start address
+04954: block_index = 0
__pyx_v_block_index = 0;
+04955: block2 = Rack_Get_(memory_blocks, block_index)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_memory_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_11 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4955, __pyx_L9_error) __pyx_v_block2 = __pyx_t_11;
+04956: block_start = Block_Start(block2)
__pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block2)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4956, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_12); __pyx_v_block_start = __pyx_t_12; __pyx_t_12 = 0;
+04957: if block_start < start:
__pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4957, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyObject_RichCompare(__pyx_v_block_start, __pyx_t_12, Py_LT); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4957, __pyx_L9_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4957, __pyx_L9_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_3) { /* … */ }
+04958: block2 = Block_DelSlice_(block2, 0, <size_t>(start - block_start))
__pyx_t_13 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4958, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = PyNumber_Subtract(__pyx_t_13, __pyx_v_block_start); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4958, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_12); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4958, __pyx_L9_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_block2, 0, ((size_t)__pyx_t_8)); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4958, __pyx_L9_error) __pyx_v_block2 = __pyx_t_11;
+04959: block2.address = start
__pyx_v_block2->address = __pyx_v_start;
+04960: Rack_Set__(memory_blocks, block_index, block2)
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_memory_blocks, __pyx_v_block_index, __pyx_v_block2));
04961:
04962: # Trim cloned data after the selection end address
+04963: block_index = block_count - 1
__pyx_v_block_index = (__pyx_v_block_count - 1);
+04964: block2 = Rack_Get_(memory_blocks, block_index)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_memory_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_11 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4964, __pyx_L9_error) __pyx_v_block2 = __pyx_t_11;
+04965: block_endex = Block_Endex(block2)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block2);
+04966: if endex < block_endex:
__pyx_t_3 = ((__pyx_v_endex < __pyx_v_block_endex) != 0); if (__pyx_t_3) { /* … */ }
+04967: block_start = Block_Start(block2)
__pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block2)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4967, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF_SET(__pyx_v_block_start, __pyx_t_12); __pyx_t_12 = 0;
+04968: if block_start < endex:
__pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4968, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyObject_RichCompare(__pyx_v_block_start, __pyx_t_12, Py_LT); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4968, __pyx_L9_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4968, __pyx_L9_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L19; }
+04969: block2 = Block_DelSlice_(block2, <size_t>(endex - block_start), Block_Length(block2))
__pyx_t_13 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4969, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = PyNumber_Subtract(__pyx_t_13, __pyx_v_block_start); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4969, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_12); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4969, __pyx_L9_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_block2, ((size_t)__pyx_t_8), __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block2)); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4969, __pyx_L9_error) __pyx_v_block2 = __pyx_t_11;
+04970: block2.address = block_start
__pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_block_start); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4970, __pyx_L9_error) __pyx_v_block2->address = __pyx_t_14;
+04971: Rack_Set__(memory_blocks, block_index, block2) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_memory_blocks, __pyx_v_block_index, __pyx_v_block2));
04972: else:
+04973: memory.blocks = memory_blocks = Rack_Pop__(memory_blocks, &block2)
/*else*/ {
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Pop__(__pyx_v_memory_blocks, (&__pyx_v_block2)); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4973, __pyx_L9_error)
__pyx_v_memory->blocks = __pyx_t_1;
__pyx_v_memory_blocks = __pyx_t_1;
+04974: block2 = Block_Release(block2) # orphan
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_block2); } __pyx_L19:;
+04975: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Extract__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_15) < 0) __PYX_ERR(0, 4975, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_15);
+04976: memory = Memory_Free(memory) # orphan
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4976, __pyx_L11_except_error) __pyx_v_memory = __pyx_t_2;
+04977: raise
__Pyx_GIVEREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestoreWithState(__pyx_t_12, __pyx_t_13, __pyx_t_15); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_15 = 0; __PYX_ERR(0, 4977, __pyx_L11_except_error) } __pyx_L11_except_error:;
04978:
+04979: if pattern_size and pattern_ptr:
__pyx_t_4 = (__pyx_v_pattern_size != 0); if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L23_bool_binop_done; } __pyx_t_4 = (__pyx_v_pattern_ptr != 0); __pyx_t_3 = __pyx_t_4; __pyx_L23_bool_binop_done:; if (__pyx_t_3) { /* … */ }
+04980: pattern = Block_Create(0, pattern_size, pattern_ptr)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Create(0, __pyx_v_pattern_size, __pyx_v_pattern_ptr); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 4980, __pyx_L1_error)
__pyx_v_pattern = __pyx_t_11;
+04981: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L30_try_end; __pyx_L25_error:; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5); goto __pyx_L1_error; __pyx_L30_try_end:; }
+04982: Memory_Flood_(memory, start, endex, &pattern)
__pyx_t_16 = __pyx_f_11cbytesparse_1c_Memory_Flood_(__pyx_v_memory, __pyx_v_start, __pyx_v_endex, (&__pyx_v_pattern)); if (unlikely(__pyx_t_16 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 4982, __pyx_L25_error)
+04983: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Extract__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_13, &__pyx_t_12) < 0) __PYX_ERR(0, 4983, __pyx_L27_except_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_12);
+04984: Block_Free(pattern) # orphan
(void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_pattern));
+04985: memory = Memory_Free(memory) # orphan
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_memory); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4985, __pyx_L27_except_error) __pyx_v_memory = __pyx_t_2;
+04986: raise
__Pyx_GIVEREF(__pyx_t_15); __Pyx_GIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_15, __pyx_t_13, __pyx_t_12); __pyx_t_15 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 4986, __pyx_L27_except_error) } __pyx_L27_except_error:;
04987: else:
+04988: if step > 1:
/*else*/ { __pyx_t_3 = ((__pyx_v_step > 1) != 0); if (__pyx_t_3) { /* … */ } } __pyx_L4:;
+04989: block2 = NULL
__pyx_v_block2 = NULL;
+04990: offset = start
__pyx_v_offset = __pyx_v_start;
+04991: rover = Rover_Create(that, start, endex, pattern_size, pattern_ptr, True, False)
__pyx_t_17 = __pyx_f_11cbytesparse_1c_Rover_Create(__pyx_v_that, __pyx_v_start, __pyx_v_endex, __pyx_v_pattern_size, __pyx_v_pattern_ptr, 1, 0); if (unlikely(__pyx_t_17 == ((Rover_ *)NULL))) __PYX_ERR(0, 4991, __pyx_L1_error)
__pyx_v_rover = __pyx_t_17;
+04992: try:
/*try:*/ { { /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L42_try_end; __pyx_L37_error:; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L35_error; __pyx_L38_exception_handled:; __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_L42_try_end:; } }
+04993: while True:
while (1) {
+04994: value = Rover_Next_(rover)
__pyx_t_18 = __pyx_f_11cbytesparse_1c_Rover_Next_(__pyx_v_rover); if (unlikely(__pyx_t_18 == ((int)-2))) __PYX_ERR(0, 4994, __pyx_L37_error)
__pyx_v_value = __pyx_t_18;
+04995: if value < 0:
__pyx_t_3 = ((__pyx_v_value < 0) != 0); if (__pyx_t_3) { /* … */ goto __pyx_L45; }
+04996: if block2:
__pyx_t_3 = (__pyx_v_block2 != 0); if (__pyx_t_3) { /* … */ }
+04997: memory.blocks = Rack_Append(memory.blocks, block2)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Append(__pyx_v_memory->blocks, __pyx_v_block2); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 4997, __pyx_L37_error)
__pyx_v_memory->blocks = __pyx_t_1;
+04998: block2 = NULL
__pyx_v_block2 = NULL;
04999: else:
+05000: if not block2:
/*else*/ { __pyx_t_3 = ((!(__pyx_v_block2 != 0)) != 0); if (__pyx_t_3) { /* … */ }
+05001: block2 = Block_Alloc(offset, 0, False)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Alloc(__pyx_v_offset, 0, 0); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 5001, __pyx_L37_error)
__pyx_v_block2 = __pyx_t_11;
+05002: block2 = Block_Append(block2, <byte_t>value)
__pyx_t_11 = __pyx_f_11cbytesparse_1c_Block_Append(__pyx_v_block2, ((byte_t)__pyx_v_value)); if (unlikely(__pyx_t_11 == ((Block_ *)NULL))) __PYX_ERR(0, 5002, __pyx_L37_error)
__pyx_v_block2 = __pyx_t_11;
}
__pyx_L45:;
05003:
+05004: offset += 1
__pyx_v_offset = (__pyx_v_offset + 1);
+05005: for skip in range(step - 1):
__pyx_t_19 = (__pyx_v_step - 1); __pyx_t_20 = __pyx_t_19; for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) { __pyx_v_skip = __pyx_t_21;
+05006: Rover_Next_(rover)
__pyx_t_18 = __pyx_f_11cbytesparse_1c_Rover_Next_(__pyx_v_rover); if (unlikely(__pyx_t_18 == ((int)-2))) __PYX_ERR(0, 5006, __pyx_L37_error)
}
}
+05007: except StopIteration:
__pyx_t_18 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration); if (__pyx_t_18) { __Pyx_AddTraceback("cbytesparse.c.Memory_Extract__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_15) < 0) __PYX_ERR(0, 5007, __pyx_L39_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_15);
+05008: if block2:
__pyx_t_3 = (__pyx_v_block2 != 0); if (__pyx_t_3) { /* … */ } __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; goto __pyx_L38_exception_handled; } goto __pyx_L39_except_error; __pyx_L39_except_error:;
+05009: memory.blocks = Rack_Append(memory.blocks, block2)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Append(__pyx_v_memory->blocks, __pyx_v_block2); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 5009, __pyx_L39_except_error)
__pyx_v_memory->blocks = __pyx_t_1;
+05010: block2 = NULL
__pyx_v_block2 = NULL;
05011: finally:
+05012: block2 = Block_Free(block2) # orphan
/*finally:*/ { /*normal exit:*/{ __pyx_v_block2 = __pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block2); /* … */ __pyx_v_block2 = __pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block2);
+05013: rover = Rover_Free(rover)
__pyx_t_17 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_v_rover); if (unlikely(__pyx_t_17 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5013, __pyx_L1_error) __pyx_v_rover = __pyx_t_17; goto __pyx_L36; } __pyx_L35_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_24); __Pyx_XGOTREF(__pyx_t_25); __Pyx_XGOTREF(__pyx_t_26); __pyx_t_18 = __pyx_lineno; __pyx_t_22 = __pyx_clineno; __pyx_t_23 = __pyx_filename; { /* … */ __pyx_t_17 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_v_rover); if (unlikely(__pyx_t_17 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5013, __pyx_L54_error) __pyx_v_rover = __pyx_t_17; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_24); __Pyx_XGIVEREF(__pyx_t_25); __Pyx_XGIVEREF(__pyx_t_26); __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26); } __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_lineno = __pyx_t_18; __pyx_clineno = __pyx_t_22; __pyx_filename = __pyx_t_23; goto __pyx_L1_error; __pyx_L54_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_24); __Pyx_XGIVEREF(__pyx_t_25); __Pyx_XGIVEREF(__pyx_t_26); __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26); } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; goto __pyx_L1_error; } __pyx_L36:; }
05014:
+05015: if bound:
__pyx_t_3 = (__pyx_v_bound != 0); if (__pyx_t_3) { /* … */ }
+05016: endex = offset
__pyx_v_endex = __pyx_v_offset;
+05017: if bound:
__pyx_t_3 = (__pyx_v_bound != 0); if (__pyx_t_3) { /* … */ }
+05018: memory.trim_start = start
__pyx_v_memory->trim_start = __pyx_v_start;
+05019: memory.trim_endex = endex
__pyx_v_memory->trim_endex = __pyx_v_endex;
+05020: memory.trim_start_ = True
__pyx_v_memory->trim_start_ = 1;
+05021: memory.trim_endex_ = True
__pyx_v_memory->trim_endex_ = 1;
05022:
+05023: return memory
__pyx_r = __pyx_v_memory; goto __pyx_L0;
05024:
05025:
+05026: cdef object Memory_Extract_(const Memory_* that, addr_t start, addr_t endex,
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Extract_(Memory_ const *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex, size_t __pyx_v_pattern_size, byte_t const *__pyx_v_pattern_ptr, saddr_t __pyx_v_step, int __pyx_v_bound) { Memory_ *__pyx_v_memory_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Extract_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory_Extract_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
05027: size_t pattern_size, const byte_t* pattern_ptr,
05028: saddr_t step, bint bound):
05029: cdef:
+05030: Memory_* memory_ = Memory_Extract__(that, start, endex, pattern_size, pattern_ptr, step, bound)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Extract__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, __pyx_v_pattern_size, __pyx_v_pattern_ptr, __pyx_v_step, __pyx_v_bound); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 5030, __pyx_L1_error)
__pyx_v_memory_ = __pyx_t_1;
05031:
+05032: return Memory_AsObject(memory_)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
05033:
05034:
+05035: cdef object Memory_Extract(const Memory_* that, object start, object endex,
static PyObject *__pyx_f_11cbytesparse_1c_Memory_Extract(Memory_ const *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern, PyObject *__pyx_v_step, int __pyx_v_bound) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; __Pyx_memviewslice __pyx_v_pattern_view = { 0, 0, { 0 }, { 0 }, { 0 } }; byte_t __pyx_v_pattern_value; size_t __pyx_v_pattern_size; byte_t const *__pyx_v_pattern_ptr; saddr_t __pyx_v_step_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Extract", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cbytesparse.c.Memory_Extract", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_pattern_view, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
05036: object pattern, object step, bint bound):
05037: cdef:
05038: addr_t start_
05039: addr_t endex_
05040: const byte_t[:] pattern_view
05041: byte_t pattern_value
05042: size_t pattern_size
05043: const byte_t* pattern_ptr
+05044: saddr_t step_ = <saddr_t>1 if step is None else <saddr_t>step
__pyx_t_2 = (__pyx_v_step == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = ((saddr_t)1); } else { __pyx_t_3 = __Pyx_PyInt_As_int_fast64_t(__pyx_v_step); if (unlikely((__pyx_t_3 == ((saddr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5044, __pyx_L1_error) __pyx_t_1 = ((saddr_t)__pyx_t_3); } __pyx_v_step_ = __pyx_t_1;
05045:
+05046: if pattern is None:
__pyx_t_2 = (__pyx_v_pattern == Py_None); __pyx_t_4 = (__pyx_t_2 != 0); if (__pyx_t_4) { /* … */ goto __pyx_L3; }
+05047: pattern_size = 0
__pyx_v_pattern_size = 0;
+05048: pattern_ptr = NULL
__pyx_v_pattern_ptr = NULL;
05049:
+05050: elif isinstance(pattern, int):
__pyx_t_4 = PyInt_Check(__pyx_v_pattern);
__pyx_t_2 = (__pyx_t_4 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+05051: pattern_value = <byte_t>pattern
__pyx_t_5 = __Pyx_PyInt_As_byte_t(__pyx_v_pattern); if (unlikely((__pyx_t_5 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5051, __pyx_L1_error) __pyx_v_pattern_value = ((byte_t)__pyx_t_5);
+05052: pattern_size = 1
__pyx_v_pattern_size = 1;
+05053: pattern_ptr = &pattern_value
__pyx_v_pattern_ptr = (&__pyx_v_pattern_value);
05054:
05055: else:
+05056: pattern_view = pattern
/*else*/ { __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_pattern, 0); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 5056, __pyx_L1_error) __pyx_v_pattern_view = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+05057: pattern_size = len(pattern_view)
__pyx_t_7 = __Pyx_MemoryView_Len(__pyx_v_pattern_view);
__pyx_v_pattern_size = __pyx_t_7;
05058: with cython.boundscheck(False):
+05059: pattern_ptr = &pattern_view[0]
__pyx_t_8 = 0; if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_v_pattern_view.shape[0]; __pyx_v_pattern_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_pattern_view.data + __pyx_t_8 * __pyx_v_pattern_view.strides[0]) )))); } __pyx_L3:;
05060:
+05061: start_ = Memory_Start(that) if start is None else <addr_t>start
__pyx_t_2 = (__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_9 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_10 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_10 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5061, __pyx_L1_error) __pyx_t_9 = ((addr_t)__pyx_t_10); } __pyx_v_start_ = __pyx_t_9;
+05062: endex_ = Memory_Endex(that) if endex is None else <addr_t>endex
__pyx_t_2 = (__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_9 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); } else { __pyx_t_10 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_10 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5062, __pyx_L1_error) __pyx_t_9 = ((addr_t)__pyx_t_10); } __pyx_v_endex_ = __pyx_t_9;
05063:
+05064: return Memory_Extract_(that, start_, endex_, pattern_size, pattern_ptr, step_, bound)
__Pyx_XDECREF(__pyx_r); __pyx_t_11 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_, __pyx_v_pattern_size, __pyx_v_pattern_ptr, __pyx_v_step_, __pyx_v_bound); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_r = __pyx_t_11; __pyx_t_11 = 0; goto __pyx_L0;
05065:
05066:
+05067: cdef vint Memory_ShiftLeft_(Memory_* that, addr_t offset) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_ShiftLeft_(Memory_ *__pyx_v_that, addr_t __pyx_v_offset) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ *__pyx_v_block; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_ShiftLeft_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_ShiftLeft_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05068: cdef:
+05069: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
05070: size_t block_index
05071: Block_* block
05072:
+05073: if offset and Rack_Bool(blocks):
__pyx_t_3 = (__pyx_v_offset != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+05074: Memory_PretrimStart_(that, ADDR_MAX, offset)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_PretrimStart_(__pyx_v_that, ADDR_MAX, __pyx_v_offset); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5074, __pyx_L1_error)
+05075: blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
05076:
+05077: for block_index in range(Rack_Length(blocks)):
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_block_index = __pyx_t_7;
+05078: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+05079: block.address -= offset
__pyx_v_block->address = (__pyx_v_block->address - __pyx_v_offset); }
05080:
05081:
+05082: cdef vint Memory_ShiftRight_(Memory_* that, addr_t offset) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_ShiftRight_(Memory_ *__pyx_v_that, addr_t __pyx_v_offset) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ *__pyx_v_block; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_ShiftRight_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_ShiftRight_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05083: cdef:
+05084: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
05085: size_t block_index
05086: Block_* block
05087:
+05088: if offset and Rack_Bool(blocks):
__pyx_t_3 = (__pyx_v_offset != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+05089: Memory_PretrimEndex_(that, ADDR_MIN, offset)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_PretrimEndex_(__pyx_v_that, ADDR_MIN, __pyx_v_offset); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5089, __pyx_L1_error)
+05090: blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
05091:
+05092: for block_index in range(Rack_Length(blocks)):
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_block_index = __pyx_t_7;
+05093: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+05094: block.address += offset
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_offset); }
05095:
05096:
+05097: cdef vint Memory_Shift(Memory_* that, object offset) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Shift(Memory_ *__pyx_v_that, PyObject *__pyx_v_offset) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Shift", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory_Shift", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+05098: if offset:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_offset); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 5098, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+05099: if offset < 0:
__pyx_t_2 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5099, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 5099, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+05100: Memory_ShiftLeft_(that, <addr_t>-offset)
__pyx_t_2 = PyNumber_Negative(__pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5100, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_ShiftLeft_(__pyx_v_that, ((addr_t)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5100, __pyx_L1_error)
05101: else:
+05102: Memory_ShiftRight_(that, <addr_t>offset)
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_offset); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5102, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_ShiftRight_(__pyx_v_that, ((addr_t)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5102, __pyx_L1_error) } __pyx_L4:;
05103:
05104:
+05105: cdef vint Memory_Reserve_(Memory_* that, addr_t address, addr_t size) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Reserve_(Memory_ *__pyx_v_that, addr_t __pyx_v_address, addr_t __pyx_v_size) { addr_t __pyx_v_offset; Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; Block_ *__pyx_v_block; addr_t __pyx_v_block_start; Block_ *__pyx_v_block2; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Reserve_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cbytesparse.c.Memory_Reserve_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05106: cdef:
05107: addr_t offset
+05108: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
05109: size_t block_count
05110: size_t block_index
05111: Block_* block
05112: addr_t block_start
05113: Block_* block2
05114:
+05115: if size and Rack_Bool(blocks):
__pyx_t_3 = (__pyx_v_size != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+05116: Memory_PretrimEndex_(that, address, size)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_PretrimEndex_(__pyx_v_that, __pyx_v_address, __pyx_v_size); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5116, __pyx_L1_error)
05117:
+05118: block_index = Rack_IndexStart(blocks, address)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_address);
+05119: block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
05120:
+05121: if block_index < block_count:
__pyx_t_2 = ((__pyx_v_block_index < __pyx_v_block_count) != 0); if (__pyx_t_2) { /* … */ }
+05122: block = Rack_Get_(blocks, block_index)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_5 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5122, __pyx_L1_error) __pyx_v_block = __pyx_t_5;
+05123: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
05124:
+05125: if address > block_start:
__pyx_t_2 = ((__pyx_v_address > __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ }
05126: # Split into two blocks, reserving emptiness
+05127: CheckAddSizeU(block_count, 1) # ensure free slot
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddSizeU(__pyx_v_block_count, 1); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5127, __pyx_L1_error)
+05128: offset = address - block_start
__pyx_v_offset = (__pyx_v_address - __pyx_v_block_start);
+05129: block2 = Block_GetSlice_(block, offset, SIZE_HMAX)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_GetSlice_(__pyx_v_block, __pyx_v_offset, SIZE_HMAX); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5129, __pyx_L1_error)
__pyx_v_block2 = __pyx_t_5;
+05130: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L13_try_end; __pyx_L8_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); goto __pyx_L1_error; __pyx_L13_try_end:; }
+05131: block = Block_DelSlice_(block, offset, SIZE_HMAX)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_block, __pyx_v_offset, SIZE_HMAX); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5131, __pyx_L8_error)
__pyx_v_block = __pyx_t_5;
05132:
+05133: Rack_Set__(blocks, block_index, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block));
+05134: block_index += 1
__pyx_v_block_index = (__pyx_v_block_index + 1);
05135:
+05136: CheckAddAddrU(address, size)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address, __pyx_v_size); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5136, __pyx_L8_error)
+05137: block2.address = address + size
__pyx_v_block2->address = (__pyx_v_address + __pyx_v_size);
+05138: that.blocks = blocks = Rack_Insert(blocks, block_index, block2)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Insert(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block2); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 5138, __pyx_L8_error)
__pyx_v_that->blocks = __pyx_t_1;
__pyx_v_blocks = __pyx_t_1;
+05139: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Reserve_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 5139, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11);
+05140: block2 = Block_Free(block2) # orphan
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block2);
+05141: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __PYX_ERR(0, 5141, __pyx_L10_except_error) } __pyx_L10_except_error:;
+05142: block_index += 1
__pyx_v_block_index = (__pyx_v_block_index + 1);
05143:
+05144: for block_index in range(block_index, Rack_Length(blocks)):
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_13 = __pyx_t_12; for (__pyx_t_14 = __pyx_v_block_index; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_block_index = __pyx_t_14;
+05145: block = Rack_Get_(blocks, block_index)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_5 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5145, __pyx_L1_error) __pyx_v_block = __pyx_t_5;
+05146: block.address += size
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_size); }
05147:
05148:
+05149: cdef vint Memory_Reserve(Memory_* that, object address, object size) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Reserve(Memory_ *__pyx_v_that, PyObject *__pyx_v_address, PyObject *__pyx_v_size) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Reserve", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+05150: Memory_Reserve_(that, <addr_t>address, <addr_t>size)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5150, __pyx_L1_error) __pyx_t_2 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_2 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5150, __pyx_L1_error) __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Reserve_(__pyx_v_that, ((addr_t)__pyx_t_1), ((addr_t)__pyx_t_2)); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5150, __pyx_L1_error)
05151:
05152:
+05153: cdef vint Memory_Place__(Memory_* that, addr_t address, size_t size, const byte_t* buffer,
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Place__(Memory_ *__pyx_v_that, addr_t __pyx_v_address, size_t __pyx_v_size, byte_t const *__pyx_v_buffer, int __pyx_v_shift_after) { Rack_ *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; Block_ *__pyx_v_block2; addr_t __pyx_v_block_start2; size_t __pyx_v_offset; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Place__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("cbytesparse.c.Memory_Place__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05154: bint shift_after) except -1:
05155: cdef:
05156: Rack_* blocks
05157: size_t block_index
05158: Block_* block
05159: addr_t block_start
05160: addr_t block_endex
05161: Block_* block2
05162: addr_t block_start2
05163: size_t offset
05164:
+05165: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+05166: blocks = that.blocks
__pyx_t_2 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_2;
+05167: block_index = Rack_IndexStart(blocks, address)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_address);
05168:
+05169: if block_index:
__pyx_t_1 = (__pyx_v_block_index != 0); if (__pyx_t_1) { /* … */ }
+05170: block = Rack_Get_(blocks, block_index - 1)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, (__pyx_v_block_index - 1)); if (unlikely(__pyx_t_3 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5170, __pyx_L1_error) __pyx_v_block = __pyx_t_3;
+05171: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05172: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
05173:
+05174: if block_endex == address:
__pyx_t_1 = ((__pyx_v_block_endex == __pyx_v_address) != 0); if (__pyx_t_1) { /* … */ }
05175: # Extend previous block
+05176: block = Block_Extend_(block, size, buffer)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Extend_(__pyx_v_block, __pyx_v_size, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5176, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05177: Rack_Set__(blocks, block_index - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_block_index - 1), __pyx_v_block));
05178:
05179: # Shift blocks after
+05180: if shift_after:
__pyx_t_1 = (__pyx_v_shift_after != 0); if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+05181: for block_index in range(block_index, Rack_Length(blocks)):
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = __pyx_v_block_index; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_block_index = __pyx_t_6;
+05182: block = Rack_Get_(blocks, block_index)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_3 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5182, __pyx_L1_error) __pyx_v_block = __pyx_t_3;
+05183: CheckAddAddrU(block.address, size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block->address, __pyx_v_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5183, __pyx_L1_error)
+05184: block.address += size
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_size); }
05185: else:
+05186: if block_index < Rack_Length(blocks):
/*else*/ { __pyx_t_1 = ((__pyx_v_block_index < __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks)) != 0); if (__pyx_t_1) { /* … */ } } __pyx_L6:;
+05187: CheckAddAddrU(block_endex, size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block_endex, __pyx_v_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5187, __pyx_L1_error)
+05188: block_endex += size
__pyx_v_block_endex = (__pyx_v_block_endex + __pyx_v_size);
05189:
+05190: block2 = Rack_Get_(blocks, block_index)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_3 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5190, __pyx_L1_error) __pyx_v_block2 = __pyx_t_3;
+05191: block_start2 = Block_Start(block2)
__pyx_v_block_start2 = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block2);
05192:
05193: # Merge with next block
+05194: if block_endex == block_start2:
__pyx_t_1 = ((__pyx_v_block_endex == __pyx_v_block_start2) != 0); if (__pyx_t_1) { /* … */ }
+05195: block = Block_Extend(block, block2)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Extend(__pyx_v_block, __pyx_v_block2); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5195, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05196: Rack_Set__(blocks, block_index - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_block_index - 1), __pyx_v_block));
+05197: that.blocks = blocks = Rack_Pop_(blocks, block_index, NULL)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Pop_(__pyx_v_blocks, __pyx_v_block_index, NULL); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 5197, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_2;
__pyx_v_blocks = __pyx_t_2;
+05198: return 0
__pyx_r = 0; goto __pyx_L0;
05199:
+05200: if block_index < Rack_Length(blocks):
__pyx_t_1 = ((__pyx_v_block_index < __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks)) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L11; }
+05201: block = Rack_Get_(blocks, block_index)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_3 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5201, __pyx_L1_error) __pyx_v_block = __pyx_t_3;
+05202: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
05203:
+05204: if address < block_start:
__pyx_t_1 = ((__pyx_v_address < __pyx_v_block_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L12; }
+05205: if shift_after:
__pyx_t_1 = (__pyx_v_shift_after != 0); if (__pyx_t_1) { /* … */ goto __pyx_L13; }
05206: # Insert a standalone block before
+05207: block = Block_Create(address, size, buffer)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Create(__pyx_v_address, __pyx_v_size, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5207, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05208: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L19_try_end; __pyx_L14_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); goto __pyx_L1_error; __pyx_L19_try_end:; }
+05209: that.blocks = blocks = Rack_Insert(blocks, block_index, block)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Insert(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 5209, __pyx_L14_error)
__pyx_v_that->blocks = __pyx_t_2;
__pyx_v_blocks = __pyx_t_2;
+05210: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Place__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(0, 5210, __pyx_L16_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_13);
+05211: Block_Free(block) # orphan
(void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block));
+05212: raise
__Pyx_GIVEREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_12, __pyx_t_13); __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __PYX_ERR(0, 5212, __pyx_L16_except_error) } __pyx_L16_except_error:;
05213: else:
+05214: CheckAddAddrU(address, size)
/*else*/ {
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address, __pyx_v_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5214, __pyx_L1_error)
+05215: if address + size == block_start:
__pyx_t_1 = (((__pyx_v_address + __pyx_v_size) == __pyx_v_block_start) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L22; }
05216: # Merge with next block
+05217: block = Rack_Get_(blocks, block_index)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_blocks, __pyx_v_block_index); if (unlikely(__pyx_t_3 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5217, __pyx_L1_error) __pyx_v_block = __pyx_t_3;
+05218: block.address = address
__pyx_v_block->address = __pyx_v_address;
+05219: block = Block_ExtendLeft_(block, size, buffer)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_ExtendLeft_(__pyx_v_block, __pyx_v_size, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5219, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05220: Rack_Set__(blocks, block_index, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block));
05221: else:
05222: # Insert a standalone block before
+05223: block = Block_Create(address, size, buffer)
/*else*/ {
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Create(__pyx_v_address, __pyx_v_size, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5223, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05224: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L28_try_end; __pyx_L23_error:; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8); goto __pyx_L1_error; __pyx_L28_try_end:; } } __pyx_L22:; } __pyx_L13:;
+05225: that.blocks = blocks = Rack_Insert(blocks, block_index, block)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Insert(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 5225, __pyx_L23_error)
__pyx_v_that->blocks = __pyx_t_2;
__pyx_v_blocks = __pyx_t_2;
+05226: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Place__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11) < 0) __PYX_ERR(0, 5226, __pyx_L25_except_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_11);
+05227: Block_Free(block) # orphan
(void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block));
+05228: raise
__Pyx_GIVEREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_13, __pyx_t_12, __pyx_t_11); __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __PYX_ERR(0, 5228, __pyx_L25_except_error) } __pyx_L25_except_error:;
05229: else:
05230: # Insert buffer into the current block
+05231: CheckSubAddrU(address, block_start)
/*else*/ {
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_address, __pyx_v_block_start); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5231, __pyx_L1_error)
+05232: CheckAddrToSizeU(address - block_start)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU((__pyx_v_address - __pyx_v_block_start)); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5232, __pyx_L1_error)
+05233: offset = <size_t>(address - block_start)
__pyx_v_offset = ((size_t)(__pyx_v_address - __pyx_v_block_start));
+05234: block = Block_Reserve_(block, offset, size, False)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Reserve_(__pyx_v_block, __pyx_v_offset, __pyx_v_size, 0); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5234, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05235: block = Block_Write_(block, offset, size, buffer)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Write_(__pyx_v_block, __pyx_v_offset, __pyx_v_size, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5235, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05236: Rack_Set__(blocks, block_index, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block)); } __pyx_L12:;
05237:
05238: # Shift blocks after
+05239: if shift_after:
__pyx_t_1 = (__pyx_v_shift_after != 0); if (__pyx_t_1) { /* … */ }
+05240: for block_index in range(block_index + 1, Rack_Length(blocks)):
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_5 = __pyx_t_4; for (__pyx_t_6 = (__pyx_v_block_index + 1); __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_block_index = __pyx_t_6;
+05241: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+05242: CheckAddAddrU(block.address, size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block->address, __pyx_v_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5242, __pyx_L1_error)
+05243: block.address += size
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_size); }
05244:
05245: else:
05246: # Append a standalone block after
+05247: block = Block_Create(address, size, buffer)
/*else*/ {
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Block_Create(__pyx_v_address, __pyx_v_size, __pyx_v_buffer); if (unlikely(__pyx_t_3 == ((Block_ *)NULL))) __PYX_ERR(0, 5247, __pyx_L1_error)
__pyx_v_block = __pyx_t_3;
+05248: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L39_try_end; __pyx_L34_error:; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); goto __pyx_L1_error; __pyx_L39_try_end:; } } __pyx_L11:;
+05249: that.blocks = blocks = Rack_Append(blocks, block)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Append(__pyx_v_blocks, __pyx_v_block); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 5249, __pyx_L34_error)
__pyx_v_that->blocks = __pyx_t_2;
__pyx_v_blocks = __pyx_t_2;
+05250: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Place__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(0, 5250, __pyx_L36_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12); __Pyx_GOTREF(__pyx_t_13);
+05251: Block_Free(block) # orphan
(void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block));
+05252: raise
__Pyx_GIVEREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_12, __pyx_t_13); __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __PYX_ERR(0, 5252, __pyx_L36_except_error) } __pyx_L36_except_error:;
05253:
05254:
+05255: cdef vint Memory_Erase__(Memory_* that, addr_t start, addr_t endex, bint shift_after) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Erase__(Memory_ *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex, int __pyx_v_shift_after) { addr_t __pyx_v_size; addr_t __pyx_v_offset; Rack_ *__pyx_v_blocks; size_t __pyx_v_block_index; size_t __pyx_v_inner_start; size_t __pyx_v_inner_endex; Block_ *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; Block_ *__pyx_v_block2; addr_t __pyx_v_block_start2; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Erase__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cbytesparse.c.Memory_Erase__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05256: cdef:
05257: addr_t size
05258: addr_t offset
05259:
+05260: Rack_* blocks = that.blocks
__pyx_t_1 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_1;
05261: size_t block_index
05262: size_t inner_start
05263: size_t inner_endex
05264:
+05265: Block_* block = NULL
__pyx_v_block = NULL;
05266: addr_t block_start
05267: addr_t block_endex
05268:
+05269: Block_* block2 = NULL
__pyx_v_block2 = NULL;
05270: addr_t block_start2
05271:
+05272: if Rack_Bool(blocks) and endex > start:
__pyx_t_3 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = ((__pyx_v_endex > __pyx_v_start) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+05273: size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
+05274: block_index = Rack_IndexStart(blocks, start)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_start);
05275:
05276: # Delete final/inner part of deletion start block
+05277: if block_index < Rack_Length(blocks):
__pyx_t_2 = ((__pyx_v_block_index < __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks)) != 0); if (__pyx_t_2) { /* … */ }
+05278: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+05279: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05280: if start > block_start:
__pyx_t_2 = ((__pyx_v_start > __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ }
+05281: if shift_after:
__pyx_t_2 = (__pyx_v_shift_after != 0); if (__pyx_t_2) { /* … */ goto __pyx_L8; }
+05282: CheckAddrToSizeU(start - block_start)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU((__pyx_v_start - __pyx_v_block_start)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5282, __pyx_L1_error)
+05283: CheckAddrToSizeU(endex - block_start)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU((__pyx_v_endex - __pyx_v_block_start)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5283, __pyx_L1_error)
+05284: block = Block_DelSlice_(block, start - block_start, endex - block_start)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_block, (__pyx_v_start - __pyx_v_block_start), (__pyx_v_endex - __pyx_v_block_start)); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5284, __pyx_L1_error)
__pyx_v_block = __pyx_t_5;
+05285: Rack_Set__(blocks, block_index, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block));
05286: else:
+05287: try:
/*else*/ { { /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L14_try_end; __pyx_L9_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); goto __pyx_L1_error; __pyx_L14_try_end:; } } __pyx_L8:;
+05288: CheckAddrToSizeU(start - block_start)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU((__pyx_v_start - __pyx_v_block_start)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5288, __pyx_L9_error)
+05289: block = Block_GetSlice_(block, 0, start - block_start)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_GetSlice_(__pyx_v_block, 0, (__pyx_v_start - __pyx_v_block_start)); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5289, __pyx_L9_error)
__pyx_v_block = __pyx_t_5;
+05290: block.address = block_start
__pyx_v_block->address = __pyx_v_block_start;
+05291: that.blocks = blocks = Rack_Insert_(blocks, block_index, block)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_Insert_(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 5291, __pyx_L9_error)
__pyx_v_that->blocks = __pyx_t_1;
__pyx_v_blocks = __pyx_t_1;
+05292: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Erase__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 5292, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11);
+05293: block = Block_Free(block) # orphan
__pyx_v_block = __pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_block);
+05294: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __PYX_ERR(0, 5294, __pyx_L11_except_error) } __pyx_L11_except_error:;
+05295: block_index += 1 # skip this from inner part
__pyx_v_block_index = (__pyx_v_block_index + 1);
05296:
05297: # Delete initial part of deletion end block
+05298: inner_start = block_index
__pyx_v_inner_start = __pyx_v_block_index;
+05299: for block_index in range(block_index, Rack_Length(blocks)):
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_13 = __pyx_t_12; for (__pyx_t_14 = __pyx_v_block_index; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_block_index = __pyx_t_14;
+05300: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
05301:
+05302: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05303: if endex <= block_start:
__pyx_t_2 = ((__pyx_v_endex <= __pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ }
+05304: break # inner ends before here
goto __pyx_L18_break;
05305:
+05306: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+05307: if endex < block_endex:
__pyx_t_2 = ((__pyx_v_endex < __pyx_v_block_endex) != 0); if (__pyx_t_2) { /* … */ } } /*else*/ {
+05308: offset = endex - block_start
__pyx_v_offset = (__pyx_v_endex - __pyx_v_block_start);
+05309: CheckAddrToSizeU(offset)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_offset); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5309, __pyx_L1_error)
+05310: CheckAddAddrU(block.address, offset)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_block->address, __pyx_v_offset); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5310, __pyx_L1_error)
+05311: block = Block_DelSlice_(block, 0, <size_t>offset)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_DelSlice_(__pyx_v_block, 0, ((size_t)__pyx_v_offset)); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5311, __pyx_L1_error)
__pyx_v_block = __pyx_t_5;
+05312: block.address += offset # update address
__pyx_v_block->address = (__pyx_v_block->address + __pyx_v_offset);
+05313: Rack_Set__(blocks, block_index, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, __pyx_v_block_index, __pyx_v_block));
+05314: break # inner ends before here
goto __pyx_L18_break;
05315: else:
+05316: block_index = Rack_Length(blocks)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); } __pyx_L18_break:;
+05317: inner_endex = block_index
__pyx_v_inner_endex = __pyx_v_block_index;
05318:
+05319: if shift_after:
__pyx_t_2 = (__pyx_v_shift_after != 0); if (__pyx_t_2) { /* … */ }
05320: # Check if inner deletion can be merged
+05321: if inner_start and inner_endex < Rack_Length(blocks):
__pyx_t_3 = (__pyx_v_inner_start != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L23_bool_binop_done; } __pyx_t_3 = ((__pyx_v_inner_endex < __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks)) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L23_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+05322: block = Rack_Get__(blocks, inner_start - 1)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, (__pyx_v_inner_start - 1));
+05323: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
05324:
+05325: block2 = Rack_Get__(blocks, inner_endex)
__pyx_v_block2 = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_inner_endex);
+05326: block_start2 = Block_Start(block2)
__pyx_v_block_start2 = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block2);
05327:
+05328: if block_endex + size == block_start2:
__pyx_t_2 = (((__pyx_v_block_endex + __pyx_v_size) == __pyx_v_block_start2) != 0); if (__pyx_t_2) { /* … */ }
+05329: block = Block_Extend(block, block2) # merge deletion boundaries
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_Extend(__pyx_v_block, __pyx_v_block2); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5329, __pyx_L1_error)
__pyx_v_block = __pyx_t_5;
+05330: Rack_Set__(blocks, inner_start - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_inner_start - 1), __pyx_v_block));
+05331: inner_endex += 1 # add to inner deletion
__pyx_v_inner_endex = (__pyx_v_inner_endex + 1);
+05332: block_index += 1 # skip address update
__pyx_v_block_index = (__pyx_v_block_index + 1);
05333:
05334: # Shift blocks after deletion
+05335: for block_index in range(block_index, Rack_Length(blocks)):
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_13 = __pyx_t_12; for (__pyx_t_14 = __pyx_v_block_index; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_block_index = __pyx_t_14;
+05336: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+05337: CheckSubAddrU(block.address, size)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_block->address, __pyx_v_size); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5337, __pyx_L1_error)
+05338: block.address -= size # update address
__pyx_v_block->address = (__pyx_v_block->address - __pyx_v_size); }
05339:
05340: # Delete inner full blocks
+05341: if inner_start < inner_endex:
__pyx_t_2 = ((__pyx_v_inner_start < __pyx_v_inner_endex) != 0); if (__pyx_t_2) { /* … */ }
+05342: that.blocks = blocks = Rack_DelSlice_(blocks, inner_start, inner_endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rack_DelSlice_(__pyx_v_blocks, __pyx_v_inner_start, __pyx_v_inner_endex); if (unlikely(__pyx_t_1 == ((Rack_ *)NULL))) __PYX_ERR(0, 5342, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_1;
__pyx_v_blocks = __pyx_t_1;
05343:
05344:
+05345: cdef vint Memory_InsertSame_(Memory_* that, addr_t address, Memory_* data) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_InsertSame_(Memory_ *__pyx_v_that, addr_t __pyx_v_address, Memory_ *__pyx_v_data) { addr_t __pyx_v_data_start; addr_t __pyx_v_data_endex; addr_t __pyx_v_data_size; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_InsertSame_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_InsertSame_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05346: cdef:
+05347: addr_t data_start = Memory_Start(data)
__pyx_v_data_start = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_data);
+05348: addr_t data_endex = Memory_Endex(data)
__pyx_v_data_endex = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_data);
+05349: addr_t data_size = data_endex - data_start
__pyx_v_data_size = (__pyx_v_data_endex - __pyx_v_data_start);
05350:
+05351: if data_size:
__pyx_t_1 = (__pyx_v_data_size != 0); if (__pyx_t_1) { /* … */ }
+05352: Memory_Reserve_(that, address, data_size)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Reserve_(__pyx_v_that, __pyx_v_address, __pyx_v_data_size); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5352, __pyx_L1_error)
+05353: Memory_WriteSame_(that, address, data, True)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_that, __pyx_v_address, __pyx_v_data, 1); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5353, __pyx_L1_error)
05354:
05355:
+05356: cdef vint Memory_InsertRaw_(Memory_* that, addr_t address, size_t data_size, const byte_t* data_ptr) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_InsertRaw_(Memory_ *__pyx_v_that, addr_t __pyx_v_address, size_t __pyx_v_data_size, byte_t const *__pyx_v_data_ptr) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_InsertRaw_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_InsertRaw_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+05357: if data_size:
__pyx_t_1 = (__pyx_v_data_size != 0); if (__pyx_t_1) { /* … */ }
+05358: Memory_Reserve_(that, address, data_size)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Reserve_(__pyx_v_that, __pyx_v_address, __pyx_v_data_size); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5358, __pyx_L1_error)
+05359: Memory_WriteRaw_(that, address, data_size, data_ptr)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(__pyx_v_that, __pyx_v_address, __pyx_v_data_size, __pyx_v_data_ptr); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5359, __pyx_L1_error)
05360:
05361:
+05362: cdef vint Memory_Insert(Memory_* that, object address, object data) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Insert(Memory_ *__pyx_v_that, PyObject *__pyx_v_address, PyObject *__pyx_v_data) { addr_t __pyx_v_address_; __Pyx_memviewslice __pyx_v_data_view = { 0, 0, { 0 }, { 0 }, { 0 } }; byte_t __pyx_v_data_value; size_t __pyx_v_data_size; byte_t const *__pyx_v_data_ptr; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Insert", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_Insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_data_view, 1); __Pyx_RefNannyFinishContext(); return __pyx_r; }
05363: cdef:
+05364: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5364, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
05365: const byte_t[:] data_view
05366: byte_t data_value
05367: size_t data_size
05368: const byte_t* data_ptr
05369:
+05370: if isinstance(data, Memory):
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_data, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+05371: Memory_InsertSame_(that, address_, (<Memory>data)._)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_InsertSame_(__pyx_v_that, __pyx_v_address_, ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_data)->_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5371, __pyx_L1_error)
05372:
05373: else:
+05374: if isinstance(data, int):
/*else*/ {
__pyx_t_3 = PyInt_Check(__pyx_v_data);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L4;
}
+05375: data_value = <byte_t>data
__pyx_t_5 = __Pyx_PyInt_As_byte_t(__pyx_v_data); if (unlikely((__pyx_t_5 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5375, __pyx_L1_error) __pyx_v_data_value = ((byte_t)__pyx_t_5);
+05376: data_size = 1
__pyx_v_data_size = 1;
+05377: data_ptr = &data_value
__pyx_v_data_ptr = (&__pyx_v_data_value);
05378: else:
+05379: data_view = data
/*else*/ { __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_data, 0); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 5379, __pyx_L1_error) __pyx_v_data_view = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+05380: data_size = len(data_view)
__pyx_t_7 = __Pyx_MemoryView_Len(__pyx_v_data_view);
__pyx_v_data_size = __pyx_t_7;
05381: with cython.boundscheck(False):
+05382: data_ptr = &data_view[0]
__pyx_t_8 = 0; if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_v_data_view.shape[0]; __pyx_v_data_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_data_view.data + __pyx_t_8 * __pyx_v_data_view.strides[0]) )))); } __pyx_L4:;
05383:
+05384: Memory_InsertRaw_(that, address_, data_size, data_ptr)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_InsertRaw_(__pyx_v_that, __pyx_v_address_, __pyx_v_data_size, __pyx_v_data_ptr); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5384, __pyx_L1_error)
}
__pyx_L3:;
05385:
05386:
+05387: cdef vint Memory_Delete_(Memory_* that, addr_t start, addr_t endex) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Delete_(Memory_ *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Delete_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Delete_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+05388: if start < endex:
__pyx_t_1 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_1) { /* … */ }
+05389: Memory_Erase__(that, start, endex, True) # delete
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 1); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5389, __pyx_L1_error)
05390:
05391:
+05392: cdef vint Memory_Delete(Memory_* that, object start, object endex) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Delete(Memory_ *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Delete", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Delete", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05393: cdef:
+05394: addr_t start_ = Memory_Start(that) if start is None else <addr_t> start
__pyx_t_2 = (__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5394, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_start_ = __pyx_t_1;
+05395: addr_t endex_ = Memory_Endex(that) if endex is None else <addr_t> endex
__pyx_t_2 = (__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5395, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_endex_ = __pyx_t_1;
05396:
+05397: Memory_Delete_(that, start_, endex_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Delete_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5397, __pyx_L1_error)
05398:
05399:
+05400: cdef vint Memory_Clear_(Memory_* that, addr_t start, addr_t endex) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Clear_(Memory_ *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Clear_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Clear_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+05401: if start < endex:
__pyx_t_1 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_1) { /* … */ }
+05402: Memory_Erase__(that, start, endex, False) # clear
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5402, __pyx_L1_error)
05403:
05404:
+05405: cdef vint Memory_Clear(Memory_* that, object start, object endex) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Clear(Memory_ *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Clear", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05406: cdef:
+05407: addr_t start_ = Memory_Start(that) if start is None else <addr_t> start
__pyx_t_2 = (__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5407, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_start_ = __pyx_t_1;
+05408: addr_t endex_ = Memory_Endex(that) if endex is None else <addr_t> endex
__pyx_t_2 = (__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_that); } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5408, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_endex_ = __pyx_t_1;
05409:
+05410: Memory_Clear_(that, start_, endex_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Clear_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5410, __pyx_L1_error)
05411:
05412:
+05413: cdef vint Memory_PretrimStart_(Memory_* that, addr_t endex_max, addr_t size) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_PretrimStart_(Memory_ *__pyx_v_that, addr_t __pyx_v_endex_max, addr_t __pyx_v_size) { addr_t __pyx_v_content_start; addr_t __pyx_v_trim_start; addr_t __pyx_v_endex; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PretrimStart_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_PretrimStart_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05414: cdef:
05415: addr_t content_start
05416: addr_t trim_start
05417: addr_t endex
05418:
+05419: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+05420: trim_start = that.trim_start if that.trim_start_ else ADDR_MIN
if ((__pyx_v_that->trim_start_ != 0)) { __pyx_t_2 = __pyx_v_that->trim_start; } else { __pyx_t_2 = ADDR_MIN; } __pyx_v_trim_start = __pyx_t_2;
+05421: if CannotAddAddrU(trim_start, size):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotAddAddrU(__pyx_v_trim_start, __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+05422: endex = ADDR_MAX
__pyx_v_endex = ADDR_MAX;
05423: else:
+05424: endex = trim_start + size
/*else*/ { __pyx_v_endex = (__pyx_v_trim_start + __pyx_v_size); } __pyx_L4:;
05425:
+05426: if endex > endex_max:
__pyx_t_1 = ((__pyx_v_endex > __pyx_v_endex_max) != 0); if (__pyx_t_1) { /* … */ }
+05427: endex = endex_max
__pyx_v_endex = __pyx_v_endex_max;
05428:
+05429: content_start = Memory_ContentStart(that)
__pyx_v_content_start = __pyx_f_11cbytesparse_1c_Memory_ContentStart(__pyx_v_that);
+05430: Memory_Erase__(that, content_start, endex, False) # clear
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_content_start, __pyx_v_endex, 0); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5430, __pyx_L1_error)
05431:
05432:
+05433: cdef vint Memory_PretrimStart(Memory_* that, object endex_max, object size) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_PretrimStart(Memory_ *__pyx_v_that, PyObject *__pyx_v_endex_max, PyObject *__pyx_v_size) { addr_t __pyx_v_endex_max_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PretrimStart", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_PretrimStart", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05434: cdef:
+05435: addr_t endex_max_ = ADDR_MAX if endex_max is None else <addr_t>endex_max
__pyx_t_2 = (__pyx_v_endex_max == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = ADDR_MAX; } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex_max); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5435, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_endex_max_ = __pyx_t_1;
05436:
+05437: Memory_PretrimStart_(that, endex_max_, <addr_t>size)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5437, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_PretrimStart_(__pyx_v_that, __pyx_v_endex_max_, ((addr_t)__pyx_t_1)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5437, __pyx_L1_error)
05438:
05439:
+05440: cdef vint Memory_PretrimEndex_(Memory_* that, addr_t start_min, addr_t size) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_PretrimEndex_(Memory_ *__pyx_v_that, addr_t __pyx_v_start_min, addr_t __pyx_v_size) { addr_t __pyx_v_content_endex; addr_t __pyx_v_trim_endex; addr_t __pyx_v_start; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PretrimEndex_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_PretrimEndex_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05441: cdef:
05442: addr_t content_endex
05443: addr_t trim_endex
05444: addr_t start
05445:
+05446: if size:
__pyx_t_1 = (__pyx_v_size != 0); if (__pyx_t_1) { /* … */ }
+05447: trim_endex = that.trim_endex if that.trim_endex_ else ADDR_MAX
if ((__pyx_v_that->trim_endex_ != 0)) { __pyx_t_2 = __pyx_v_that->trim_endex; } else { __pyx_t_2 = ADDR_MAX; } __pyx_v_trim_endex = __pyx_t_2;
+05448: if CannotSubAddrU(trim_endex, size):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_CannotSubAddrU(__pyx_v_trim_endex, __pyx_v_size) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+05449: start = ADDR_MIN
__pyx_v_start = ADDR_MIN;
05450: else:
+05451: start = trim_endex - size
/*else*/ { __pyx_v_start = (__pyx_v_trim_endex - __pyx_v_size); } __pyx_L4:;
05452:
+05453: if start < start_min:
__pyx_t_1 = ((__pyx_v_start < __pyx_v_start_min) != 0); if (__pyx_t_1) { /* … */ }
+05454: start = start_min
__pyx_v_start = __pyx_v_start_min;
05455:
+05456: content_endex = Memory_ContentEndex(that)
__pyx_v_content_endex = __pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_that);
+05457: Memory_Erase__(that, start, content_endex, False) # clear
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_content_endex, 0); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5457, __pyx_L1_error)
05458:
05459:
+05460: cdef vint Memory_PretrimEndex(Memory_* that, object start_min, object size) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_PretrimEndex(Memory_ *__pyx_v_that, PyObject *__pyx_v_start_min, PyObject *__pyx_v_size) { addr_t __pyx_v_start_min_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_PretrimEndex", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_PretrimEndex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05461: cdef:
+05462: addr_t start_min_ = ADDR_MIN if start_min is None else <addr_t>start_min
__pyx_t_2 = (__pyx_v_start_min == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_1 = ADDR_MIN; } else { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start_min); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5462, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_3); } __pyx_v_start_min_ = __pyx_t_1;
05463:
+05464: Memory_PretrimEndex_(that, start_min_, <addr_t>size)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5464, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_PretrimEndex_(__pyx_v_that, __pyx_v_start_min_, ((addr_t)__pyx_t_1)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5464, __pyx_L1_error)
05465:
05466:
+05467: cdef vint Memory_Crop_(Memory_* that, addr_t start, addr_t endex) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Crop_(Memory_ *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex) { addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Crop_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Crop_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05468: cdef:
05469: addr_t block_start
05470: addr_t block_endex
05471:
05472: # Trim blocks exceeding before memory start
+05473: if Rack_Bool(that.blocks):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0); if (__pyx_t_1) { /* … */ }
+05474: block_start = Block_Start(Rack_First_(that.blocks))
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First_(__pyx_v_that->blocks));
05475:
+05476: if block_start < start:
__pyx_t_1 = ((__pyx_v_block_start < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+05477: Memory_Erase__(that, block_start, start, False) # clear
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_block_start, __pyx_v_start, 0); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5477, __pyx_L1_error)
05478:
05479: # Trim blocks exceeding after memory end
+05480: if Rack_Bool(that.blocks):
__pyx_t_1 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_that->blocks) != 0); if (__pyx_t_1) { /* … */ }
+05481: block_endex = Block_Endex(Rack_Last_(that.blocks))
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last_(__pyx_v_that->blocks));
05482:
+05483: if endex < block_endex:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_block_endex) != 0); if (__pyx_t_1) { /* … */ }
+05484: Memory_Erase__(that, endex, block_endex, False) # clear
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_endex, __pyx_v_block_endex, 0); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5484, __pyx_L1_error)
05485:
05486:
+05487: cdef vint Memory_Crop(Memory_* that, object start, object endex) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Crop(Memory_ *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Crop", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Crop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05488: cdef:
05489: addr_t start_
05490: addr_t endex_
05491:
+05492: start_, endex_ = Memory_Bound(that, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5492, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1.f0;
__pyx_t_3 = __pyx_t_1.f1;
__pyx_v_start_ = __pyx_t_2;
__pyx_v_endex_ = __pyx_t_3;
+05493: Memory_Crop_(that, start_, endex_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Crop_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5493, __pyx_L1_error)
05494:
05495:
+05496: cdef vint Memory_WriteSame_(Memory_* that, addr_t address, const Memory_* data, bint clear) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_WriteSame_(Memory_ *__pyx_v_that, addr_t __pyx_v_address, Memory_ const *__pyx_v_data, int __pyx_v_clear) { addr_t __pyx_v_start; addr_t __pyx_v_endex; addr_t __pyx_v_size; addr_t __pyx_v_delta; addr_t __pyx_v_trim_start; addr_t __pyx_v_trim_endex; int __pyx_v_trim_start_; int __pyx_v_trim_endex_; Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; size_t __pyx_v_block_size; size_t __pyx_v_block_offset; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_WriteSame_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_WriteSame_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05497: cdef:
+05498: addr_t start = Memory_Start(data)
__pyx_v_start = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_data);
+05499: addr_t endex = Memory_Endex(data)
__pyx_v_endex = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_data);
+05500: addr_t size = endex - start
__pyx_v_size = (__pyx_v_endex - __pyx_v_start);
05501: addr_t delta
05502:
05503: addr_t trim_start
05504: addr_t trim_endex
05505: bint trim_start_
05506: bint trim_endex_
05507:
05508: const Rack_* blocks
05509: size_t block_count
05510: size_t block_index
05511: const Block_* block
05512: addr_t block_start
05513: addr_t block_endex
05514: size_t block_size
05515: size_t block_offset
05516:
+05517: if not size:
__pyx_t_1 = ((!(__pyx_v_size != 0)) != 0); if (__pyx_t_1) { /* … */ }
+05518: return 0
__pyx_r = 0; goto __pyx_L0;
05519:
+05520: blocks = data.blocks
__pyx_t_2 = __pyx_v_data->blocks; __pyx_v_blocks = __pyx_t_2;
+05521: block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
+05522: if block_count:
__pyx_t_1 = (__pyx_v_block_count != 0); if (__pyx_t_1) { /* … */ }
+05523: CheckAddAddrU(Block_Endex(Rack_Last__(blocks)), address)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks)), __pyx_v_address); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5523, __pyx_L1_error)
05524:
+05525: CheckAddAddrU(endex, address)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_endex, __pyx_v_address); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5525, __pyx_L1_error)
+05526: endex += address
__pyx_v_endex = (__pyx_v_endex + __pyx_v_address);
+05527: trim_start_ = that.trim_start_
__pyx_t_1 = __pyx_v_that->trim_start_; __pyx_v_trim_start_ = __pyx_t_1;
+05528: trim_start = that.trim_start
__pyx_t_4 = __pyx_v_that->trim_start; __pyx_v_trim_start = __pyx_t_4;
05529:
+05530: if trim_start_ and endex <= trim_start:
__pyx_t_5 = (__pyx_v_trim_start_ != 0); if (__pyx_t_5) { } else { __pyx_t_1 = __pyx_t_5; goto __pyx_L6_bool_binop_done; } __pyx_t_5 = ((__pyx_v_endex <= __pyx_v_trim_start) != 0); __pyx_t_1 = __pyx_t_5; __pyx_L6_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05531: return 0
__pyx_r = 0; goto __pyx_L0;
05532:
+05533: CheckAddAddrU(start, address)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start, __pyx_v_address); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5533, __pyx_L1_error)
+05534: start += address
__pyx_v_start = (__pyx_v_start + __pyx_v_address);
+05535: trim_endex_ = that.trim_endex_
__pyx_t_1 = __pyx_v_that->trim_endex_; __pyx_v_trim_endex_ = __pyx_t_1;
+05536: trim_endex = that.trim_endex
__pyx_t_4 = __pyx_v_that->trim_endex; __pyx_v_trim_endex = __pyx_t_4;
05537:
+05538: if trim_endex_ and trim_endex <= start:
__pyx_t_5 = (__pyx_v_trim_endex_ != 0); if (__pyx_t_5) { } else { __pyx_t_1 = __pyx_t_5; goto __pyx_L9_bool_binop_done; } __pyx_t_5 = ((__pyx_v_trim_endex <= __pyx_v_start) != 0); __pyx_t_1 = __pyx_t_5; __pyx_L9_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05539: return 0
__pyx_r = 0; goto __pyx_L0;
05540:
+05541: if clear:
__pyx_t_1 = (__pyx_v_clear != 0); if (__pyx_t_1) { /* … */ goto __pyx_L11; }
05542: # Clear anything between source data boundaries
+05543: Memory_Erase__(that, start, endex, False) # clear
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5543, __pyx_L1_error)
05544: else:
05545: # Clear only overwritten ranges
+05546: for block_index in range(block_count):
/*else*/ { __pyx_t_6 = __pyx_v_block_count; __pyx_t_7 = __pyx_t_6; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_block_index = __pyx_t_8;
+05547: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+05548: block_start = Block_Start(block) + address
__pyx_v_block_start = (__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block) + __pyx_v_address);
+05549: block_endex = Block_Endex(block) + address
__pyx_v_block_endex = (__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) + __pyx_v_address);
+05550: Memory_Erase__(that, block_start, block_endex, False) # clear
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_block_start, __pyx_v_block_endex, 0); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5550, __pyx_L1_error)
}
}
__pyx_L11:;
05551:
+05552: for block_index in range(block_count):
__pyx_t_6 = __pyx_v_block_count; __pyx_t_7 = __pyx_t_6; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_block_index = __pyx_t_8;
+05553: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
05554:
+05555: block_endex = Block_Endex(block) + address
__pyx_v_block_endex = (__pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block) + __pyx_v_address);
+05556: if trim_start_ and block_endex <= trim_start:
__pyx_t_5 = (__pyx_v_trim_start_ != 0); if (__pyx_t_5) { } else { __pyx_t_1 = __pyx_t_5; goto __pyx_L17_bool_binop_done; } __pyx_t_5 = ((__pyx_v_block_endex <= __pyx_v_trim_start) != 0); __pyx_t_1 = __pyx_t_5; __pyx_L17_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05557: continue
goto __pyx_L14_continue;
05558:
+05559: block_start = Block_Start(block) + address
__pyx_v_block_start = (__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block) + __pyx_v_address);
+05560: if trim_endex_ and trim_endex <= block_start:
__pyx_t_5 = (__pyx_v_trim_endex_ != 0); if (__pyx_t_5) { } else { __pyx_t_1 = __pyx_t_5; goto __pyx_L20_bool_binop_done; } __pyx_t_5 = ((__pyx_v_trim_endex <= __pyx_v_block_start) != 0); __pyx_t_1 = __pyx_t_5; __pyx_L20_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05561: break
goto __pyx_L15_break;
05562:
+05563: block_size = block_endex - block_start
__pyx_v_block_size = (__pyx_v_block_endex - __pyx_v_block_start);
+05564: block_offset = 0
__pyx_v_block_offset = 0;
05565:
05566: # Trim before memory
+05567: if trim_start_ and block_start < trim_start:
__pyx_t_5 = (__pyx_v_trim_start_ != 0); if (__pyx_t_5) { } else { __pyx_t_1 = __pyx_t_5; goto __pyx_L23_bool_binop_done; } __pyx_t_5 = ((__pyx_v_block_start < __pyx_v_trim_start) != 0); __pyx_t_1 = __pyx_t_5; __pyx_L23_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05568: delta = trim_start - block_start
__pyx_v_delta = (__pyx_v_trim_start - __pyx_v_block_start);
+05569: CheckAddrToSizeU(delta)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_delta); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5569, __pyx_L1_error)
+05570: block_start += <size_t>delta
__pyx_v_block_start = (__pyx_v_block_start + ((size_t)__pyx_v_delta));
+05571: block_size -= <size_t>delta
__pyx_v_block_size = (__pyx_v_block_size - ((size_t)__pyx_v_delta));
+05572: block_offset = <size_t>delta
__pyx_v_block_offset = ((size_t)__pyx_v_delta);
05573:
05574: # Trim after memory
+05575: if trim_endex_ and trim_endex < block_endex:
__pyx_t_5 = (__pyx_v_trim_endex_ != 0); if (__pyx_t_5) { } else { __pyx_t_1 = __pyx_t_5; goto __pyx_L26_bool_binop_done; } __pyx_t_5 = ((__pyx_v_trim_endex < __pyx_v_block_endex) != 0); __pyx_t_1 = __pyx_t_5; __pyx_L26_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05576: delta = block_endex - trim_endex
__pyx_v_delta = (__pyx_v_block_endex - __pyx_v_trim_endex);
+05577: CheckAddrToSizeU(delta)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_delta); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5577, __pyx_L1_error)
+05578: block_endex -= <size_t>delta
__pyx_v_block_endex = (__pyx_v_block_endex - ((size_t)__pyx_v_delta));
+05579: block_size -= <size_t>delta
__pyx_v_block_size = (__pyx_v_block_size - ((size_t)__pyx_v_delta));
05580:
+05581: Memory_Place__(that, block_start, block_size, Block_At__(block, block_offset), False) # write
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Place__(__pyx_v_that, __pyx_v_block_start, __pyx_v_block_size, __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_block, __pyx_v_block_offset), 0); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5581, __pyx_L1_error)
__pyx_L14_continue:;
}
__pyx_L15_break:;
05582:
05583:
+05584: cdef vint Memory_WriteRaw_(Memory_* that, addr_t address, size_t data_size, const byte_t* data_ptr) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(Memory_ *__pyx_v_that, addr_t __pyx_v_address, size_t __pyx_v_data_size, byte_t const *__pyx_v_data_ptr) { addr_t __pyx_v_size; addr_t __pyx_v_start; addr_t __pyx_v_endex; addr_t __pyx_v_offset; addr_t __pyx_v_trim_start; addr_t __pyx_v_trim_endex; int __pyx_v_trim_start_; int __pyx_v_trim_endex_; Rack_ *__pyx_v_blocks; size_t __pyx_v_block_count; Block_ *__pyx_v_block; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_WriteRaw_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory_WriteRaw_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05585: cdef:
+05586: addr_t size = data_size
__pyx_v_size = __pyx_v_data_size;
05587: addr_t start
05588: addr_t endex
05589: addr_t offset
05590:
05591: addr_t trim_start
05592: addr_t trim_endex
05593: bint trim_start_
05594: bint trim_endex_
05595:
05596: Rack_* blocks
05597: size_t block_count
05598: Block_* block
05599:
+05600: if not size:
__pyx_t_1 = ((!(__pyx_v_size != 0)) != 0); if (__pyx_t_1) { /* … */ }
+05601: return 0
__pyx_r = 0; goto __pyx_L0;
+05602: elif size == 1:
__pyx_t_1 = ((__pyx_v_size == 1) != 0); if (__pyx_t_1) { /* … */ }
+05603: Memory_Poke(that, address, data_ptr[0]) # faster
__pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_byte_t((__pyx_v_data_ptr[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Poke(__pyx_v_that, __pyx_t_2, __pyx_t_3); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5603, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+05604: return 0
__pyx_r = 0; goto __pyx_L0;
05605:
+05606: CheckAddAddrU(address, size)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address, __pyx_v_size); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5606, __pyx_L1_error)
+05607: start = address
__pyx_v_start = __pyx_v_address;
+05608: endex = start + size
__pyx_v_endex = (__pyx_v_start + __pyx_v_size);
05609:
+05610: trim_start_ = that.trim_start_
__pyx_t_1 = __pyx_v_that->trim_start_; __pyx_v_trim_start_ = __pyx_t_1;
+05611: trim_start = that.trim_start
__pyx_t_5 = __pyx_v_that->trim_start; __pyx_v_trim_start = __pyx_t_5;
+05612: if trim_start_ and endex <= trim_start:
__pyx_t_6 = (__pyx_v_trim_start_ != 0); if (__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L5_bool_binop_done; } __pyx_t_6 = ((__pyx_v_endex <= __pyx_v_trim_start) != 0); __pyx_t_1 = __pyx_t_6; __pyx_L5_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05613: return 0
__pyx_r = 0; goto __pyx_L0;
05614:
+05615: trim_endex_ = that.trim_endex_
__pyx_t_1 = __pyx_v_that->trim_endex_; __pyx_v_trim_endex_ = __pyx_t_1;
+05616: trim_endex = that.trim_endex
__pyx_t_5 = __pyx_v_that->trim_endex; __pyx_v_trim_endex = __pyx_t_5;
+05617: if trim_endex_ and trim_endex <= start:
__pyx_t_6 = (__pyx_v_trim_endex_ != 0); if (__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L8_bool_binop_done; } __pyx_t_6 = ((__pyx_v_trim_endex <= __pyx_v_start) != 0); __pyx_t_1 = __pyx_t_6; __pyx_L8_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05618: return 0
__pyx_r = 0; goto __pyx_L0;
05619:
05620: # Trim before memory
+05621: if trim_start_ and start < trim_start:
__pyx_t_6 = (__pyx_v_trim_start_ != 0); if (__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L11_bool_binop_done; } __pyx_t_6 = ((__pyx_v_start < __pyx_v_trim_start) != 0); __pyx_t_1 = __pyx_t_6; __pyx_L11_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05622: offset = trim_start - start
__pyx_v_offset = (__pyx_v_trim_start - __pyx_v_start);
+05623: CheckAddrToSizeU(offset)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_offset); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5623, __pyx_L1_error)
+05624: start += offset
__pyx_v_start = (__pyx_v_start + __pyx_v_offset);
+05625: size -= <size_t>offset
__pyx_v_size = (__pyx_v_size - ((size_t)__pyx_v_offset));
+05626: data_ptr += <size_t>offset
__pyx_v_data_ptr = (__pyx_v_data_ptr + ((size_t)__pyx_v_offset));
05627:
05628: # Trim after memory
+05629: if trim_endex_ and trim_endex < endex:
__pyx_t_6 = (__pyx_v_trim_endex_ != 0); if (__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L14_bool_binop_done; } __pyx_t_6 = ((__pyx_v_trim_endex < __pyx_v_endex) != 0); __pyx_t_1 = __pyx_t_6; __pyx_L14_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05630: offset = endex - trim_endex
__pyx_v_offset = (__pyx_v_endex - __pyx_v_trim_endex);
+05631: CheckAddrToSizeU(offset)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_offset); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5631, __pyx_L1_error)
+05632: endex -= offset
__pyx_v_endex = (__pyx_v_endex - __pyx_v_offset);
+05633: size -= <size_t>offset
__pyx_v_size = (__pyx_v_size - ((size_t)__pyx_v_offset));
05634:
05635: # Check if extending the actual content
+05636: CheckAddrToSizeU(size)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_size); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5636, __pyx_L1_error)
+05637: blocks = that.blocks
__pyx_t_7 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_7;
+05638: block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
+05639: if block_count:
__pyx_t_1 = (__pyx_v_block_count != 0); if (__pyx_t_1) { /* … */ }
+05640: block = Rack_Last__(blocks)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks);
+05641: if start == Block_Endex(block):
__pyx_t_1 = ((__pyx_v_start == __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block)) != 0); if (__pyx_t_1) { /* … */ }
+05642: block = Block_Extend_(block, <size_t>size, data_ptr) # might be faster
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Extend_(__pyx_v_block, ((size_t)__pyx_v_size), __pyx_v_data_ptr); if (unlikely(__pyx_t_8 == ((Block_ *)NULL))) __PYX_ERR(0, 5642, __pyx_L1_error)
__pyx_v_block = __pyx_t_8;
+05643: Rack_Set__(blocks, block_count - 1, block) # update pointer
(void)(__pyx_f_11cbytesparse_1c_Rack_Set__(__pyx_v_blocks, (__pyx_v_block_count - 1), __pyx_v_block));
+05644: return 0
__pyx_r = 0; goto __pyx_L0;
05645:
05646: # Standard write method
+05647: Memory_Erase__(that, start, endex, False) # clear
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5647, __pyx_L1_error)
+05648: Memory_Place__(that, start, <size_t>size, data_ptr, False) # write
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Place__(__pyx_v_that, __pyx_v_start, ((size_t)__pyx_v_size), __pyx_v_data_ptr, 0); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5648, __pyx_L1_error)
+05649: return 0
__pyx_r = 0; goto __pyx_L0;
05650:
05651:
+05652: cdef vint Memory_Write(Memory_* that, object address, object data, bint clear) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Write(Memory_ *__pyx_v_that, PyObject *__pyx_v_address, PyObject *__pyx_v_data, int __pyx_v_clear) { addr_t __pyx_v_address_; __Pyx_memviewslice __pyx_v_data_view = { 0, 0, { 0 }, { 0 }, { 0 } }; byte_t __pyx_v_data_value; size_t __pyx_v_data_size; byte_t const *__pyx_v_data_ptr; addr_t __pyx_v_data_start; addr_t __pyx_v_data_endex; PyObject *__pyx_v_block_start = NULL; PyObject *__pyx_v_block_data = NULL; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Write", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __Pyx_AddTraceback("cbytesparse.c.Memory_Write", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_data_view, 1); __Pyx_XDECREF(__pyx_v_block_start); __Pyx_XDECREF(__pyx_v_block_data); __Pyx_RefNannyFinishContext(); return __pyx_r; }
05653: cdef:
+05654: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5654, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
05655: const byte_t[:] data_view
05656: byte_t data_value
05657: size_t data_size
05658: const byte_t* data_ptr
05659: addr_t data_start
05660: addr_t data_endex
05661:
+05662: if isinstance(data, Memory):
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_data, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+05663: Memory_WriteSame_(that, address_, (<Memory>data)._, clear)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_that, __pyx_v_address_, ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_data)->_, __pyx_v_clear); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5663, __pyx_L1_error)
05664:
+05665: elif isinstance(data, ImmutableMemory):
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyObject_IsInstance(__pyx_v_data, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 5665, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+05666: for block_start, block_data in data:
if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) { __pyx_t_5 = __pyx_v_data; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5666, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 5666, __pyx_L1_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 5666, __pyx_L1_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif } } else { __pyx_t_8 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 5666, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_8); } if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { PyObject* sequence = __pyx_t_8; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 5666, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_10 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_10); if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 5666, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 5666, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_block_start, __pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_block_data, __pyx_t_10); __pyx_t_10 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+05667: data_start = <addr_t>block_start
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_block_start); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5667, __pyx_L1_error) __pyx_v_data_start = ((addr_t)__pyx_t_1);
+05668: data_view = block_data
__pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_block_data, 0); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 5668, __pyx_L1_error) __PYX_XDEC_MEMVIEW(&__pyx_v_data_view, 1); __pyx_v_data_view = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
05669: with cython.boundscheck(False):
+05670: data_ptr = &data_view[0]
__pyx_t_14 = 0; if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_v_data_view.shape[0]; __pyx_v_data_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_data_view.data + __pyx_t_14 * __pyx_v_data_view.strides[0]) ))));
+05671: data_size = <size_t>len(data_view)
__pyx_t_15 = __Pyx_MemoryView_Len(__pyx_v_data_view);
__pyx_v_data_size = ((size_t)__pyx_t_15);
+05672: CheckAddAddrU(data_start, data_size)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_data_start, __pyx_v_data_size); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5672, __pyx_L1_error)
+05673: data_endex = data_start + data_size
__pyx_v_data_endex = (__pyx_v_data_start + __pyx_v_data_size);
+05674: CheckAddAddrU(data_start, address_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_data_start, __pyx_v_address_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5674, __pyx_L1_error)
+05675: CheckAddAddrU(data_endex, address_)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_data_endex, __pyx_v_address_); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5675, __pyx_L1_error)
05676:
+05677: Memory_WriteRaw_(that, data_start + address_, data_size, data_ptr)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(__pyx_v_that, (__pyx_v_data_start + __pyx_v_address_), __pyx_v_data_size, __pyx_v_data_ptr); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5677, __pyx_L1_error)
05678:
05679: else:
+05680: if isinstance(data, int):
/*else*/ {
__pyx_t_2 = PyInt_Check(__pyx_v_data);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L8;
}
+05681: data_value = <byte_t>data
__pyx_t_16 = __Pyx_PyInt_As_byte_t(__pyx_v_data); if (unlikely((__pyx_t_16 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5681, __pyx_L1_error) __pyx_v_data_value = ((byte_t)__pyx_t_16);
+05682: data_size = 1
__pyx_v_data_size = 1;
+05683: data_ptr = &data_value
__pyx_v_data_ptr = (&__pyx_v_data_value);
05684: else:
+05685: data_view = data
/*else*/ { __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_data, 0); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 5685, __pyx_L1_error) __pyx_v_data_view = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
+05686: data_size = <size_t>len(data_view)
__pyx_t_15 = __Pyx_MemoryView_Len(__pyx_v_data_view);
__pyx_v_data_size = ((size_t)__pyx_t_15);
05687: with cython.boundscheck(False):
+05688: data_ptr = &data_view[0]
__pyx_t_14 = 0; if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_v_data_view.shape[0]; __pyx_v_data_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_data_view.data + __pyx_t_14 * __pyx_v_data_view.strides[0]) )))); } __pyx_L8:;
05689:
+05690: Memory_WriteRaw_(that, address_, data_size, data_ptr)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_WriteRaw_(__pyx_v_that, __pyx_v_address_, __pyx_v_data_size, __pyx_v_data_ptr); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5690, __pyx_L1_error)
}
__pyx_L3:;
05691:
05692:
+05693: cdef vint Memory_Fill_(Memory_* that, addr_t start, addr_t endex, Block_** pattern, addr_t start_) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Fill_(Memory_ *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex, Block_ **__pyx_v_pattern, addr_t __pyx_v_start_) { size_t __pyx_v_offset; size_t __pyx_v_size; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Fill_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory_Fill_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05694: cdef:
05695: size_t offset
05696: size_t size
05697:
+05698: if start < endex:
__pyx_t_1 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_1) { /* … */ }
+05699: CheckAddrToSizeU(endex - start)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU((__pyx_v_endex - __pyx_v_start)); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5699, __pyx_L1_error)
+05700: if not Block_Bool(pattern[0]):
__pyx_t_1 = ((!(__pyx_f_11cbytesparse_1c_Block_Bool((__pyx_v_pattern[0])) != 0)) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+05701: raise ValueError('non-empty pattern required')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 5701, __pyx_L1_error) /* … */ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_non_empty_pattern_required); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 5701, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24);
05702:
+05703: if start > start_:
__pyx_t_1 = ((__pyx_v_start > __pyx_v_start_) != 0); if (__pyx_t_1) { /* … */ }
+05704: offset = start - start_
__pyx_v_offset = (__pyx_v_start - __pyx_v_start_);
+05705: CheckAddrToSizeU(offset)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_offset); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5705, __pyx_L1_error)
+05706: Block_RotateLeft_(pattern[0], <size_t>offset)
__pyx_f_11cbytesparse_1c_Block_RotateLeft_((__pyx_v_pattern[0]), ((size_t)__pyx_v_offset));
05707:
05708: # Resize the pattern to the target range
+05709: size = <size_t>(endex - start)
__pyx_v_size = ((size_t)(__pyx_v_endex - __pyx_v_start));
+05710: pattern[0] = Block_RepeatToSize(pattern[0], size)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Block_RepeatToSize((__pyx_v_pattern[0]), __pyx_v_size); if (unlikely(__pyx_t_4 == ((Block_ *)NULL))) __PYX_ERR(0, 5710, __pyx_L1_error)
(__pyx_v_pattern[0]) = __pyx_t_4;
05711:
05712: # Standard write method
+05713: Memory_Erase__(that, start, endex, False) # clear
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_that, __pyx_v_start, __pyx_v_endex, 0); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5713, __pyx_L1_error)
+05714: Memory_Place__(that, start, size, Block_At__(pattern[0], 0), False) # write
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Place__(__pyx_v_that, __pyx_v_start, __pyx_v_size, __pyx_f_11cbytesparse_1c_Block_At__((__pyx_v_pattern[0]), 0), 0); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5714, __pyx_L1_error)
05715:
05716:
+05717: cdef vint Memory_Fill(Memory_* that, object start, object endex, object pattern) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Fill(Memory_ *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { addr_t __pyx_v_start__; addr_t __pyx_v_start_; addr_t __pyx_v_endex_; Block_ *__pyx_v_pattern_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Fill", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory_Fill", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05718: cdef:
05719: addr_t start__
05720: addr_t start_
05721: addr_t endex_
+05722: Block_* pattern_ = NULL
__pyx_v_pattern_ = NULL;
05723:
+05724: start_, endex_ = Memory_Bound(that, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5724, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1.f0;
__pyx_t_3 = __pyx_t_1.f1;
__pyx_v_start_ = __pyx_t_2;
__pyx_v_endex_ = __pyx_t_3;
+05725: if start_ < endex_:
__pyx_t_4 = ((__pyx_v_start_ < __pyx_v_endex_) != 0); if (__pyx_t_4) { /* … */ }
+05726: pattern_ = Block_FromObject(0, pattern, False) # size checked later on
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_FromObject(0, __pyx_v_pattern, 0); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5726, __pyx_L1_error)
__pyx_v_pattern_ = __pyx_t_5;
+05727: try:
/*try:*/ {
+05728: start__ = Memory_Start(that) if start is None else <addr_t>start
__pyx_t_4 = (__pyx_v_start == Py_None); if ((__pyx_t_4 != 0)) { __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_that); } else { __pyx_t_2 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_2 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5728, __pyx_L5_error) __pyx_t_3 = ((addr_t)__pyx_t_2); } __pyx_v_start__ = __pyx_t_3;
+05729: Memory_Fill_(that, start_, endex_, &pattern_, start__)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Fill_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_, (&__pyx_v_pattern_), __pyx_v_start__); if (unlikely(__pyx_t_6 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5729, __pyx_L5_error)
}
05730: finally:
+05731: Block_Free(pattern_) # orphan
/*finally:*/ { /*normal exit:*/{ (void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_pattern_)); goto __pyx_L6; } __pyx_L5_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; { (void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_pattern_)); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); } __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; goto __pyx_L1_error; } __pyx_L6:; }
05732:
05733:
+05734: cdef vint Memory_Flood_(Memory_* that, addr_t start, addr_t endex, Block_** pattern) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Flood_(Memory_ *__pyx_v_that, addr_t __pyx_v_start, addr_t __pyx_v_endex, Block_ **__pyx_v_pattern) { Rack_ *__pyx_v_blocks; Block_ const *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; size_t __pyx_v_block_index_start; size_t __pyx_v_block_index_endex; addr_t __pyx_v_offset; size_t __pyx_v_size; size_t __pyx_v_block_index; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Flood_", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory_Flood_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05735: cdef:
05736: Rack_* blocks
05737: const Block_* block
05738: addr_t block_start
05739: addr_t block_endex
05740: size_t block_index_start
05741: size_t block_index_endex
05742: addr_t offset
05743:
+05744: if start < endex:
__pyx_t_1 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_1) { /* … */ }
+05745: blocks = that.blocks
__pyx_t_2 = __pyx_v_that->blocks; __pyx_v_blocks = __pyx_t_2;
+05746: block_index_start = Rack_IndexStart(blocks, start)
__pyx_v_block_index_start = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_start);
05747:
05748: # Check if touching previous block
+05749: if block_index_start:
__pyx_t_1 = (__pyx_v_block_index_start != 0); if (__pyx_t_1) { /* … */ }
+05750: block = Rack_Get__(blocks, block_index_start - 1)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, (__pyx_v_block_index_start - 1));
+05751: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05752: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+05753: if block_endex == start:
__pyx_t_1 = ((__pyx_v_block_endex == __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+05754: block_index_start -= 1
__pyx_v_block_index_start = (__pyx_v_block_index_start - 1);
05755:
05756: # Manage block near start
+05757: if block_index_start < Rack_Length(blocks):
__pyx_t_1 = ((__pyx_v_block_index_start < __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks)) != 0); if (__pyx_t_1) { /* … */ }
+05758: block = Rack_Get__(blocks, block_index_start)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index_start);
+05759: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05760: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
05761:
+05762: if block_start <= start and endex <= block_endex:
__pyx_t_3 = ((__pyx_v_block_start <= __pyx_v_start) != 0); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L8_bool_binop_done; } __pyx_t_3 = ((__pyx_v_endex <= __pyx_v_block_endex) != 0); __pyx_t_1 = __pyx_t_3; __pyx_L8_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+05763: return 0 # no emptiness to flood
__pyx_r = 0; goto __pyx_L0;
05764:
+05765: if block_start < start:
__pyx_t_1 = ((__pyx_v_block_start < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+05766: offset = start - block_start
__pyx_v_offset = (__pyx_v_start - __pyx_v_block_start);
+05767: CheckAddrToSizeU(offset)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_offset); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5767, __pyx_L1_error)
+05768: Block_RotateRight_(pattern[0], <size_t>offset)
__pyx_f_11cbytesparse_1c_Block_RotateRight_((__pyx_v_pattern[0]), ((size_t)__pyx_v_offset));
+05769: start = block_start
__pyx_v_start = __pyx_v_block_start;
05770:
05771: # Manage block near end
+05772: block_index_endex = Rack_IndexEndex(blocks, endex)
__pyx_v_block_index_endex = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_v_endex);
+05773: if block_index_start < block_index_endex:
__pyx_t_1 = ((__pyx_v_block_index_start < __pyx_v_block_index_endex) != 0); if (__pyx_t_1) { /* … */ }
+05774: block = Rack_Get__(blocks, block_index_endex - 1)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, (__pyx_v_block_index_endex - 1));
+05775: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05776: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+05777: if endex < block_endex:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_block_endex) != 0); if (__pyx_t_1) { /* … */ }
+05778: endex = block_endex
__pyx_v_endex = __pyx_v_block_endex;
05779:
+05780: CheckAddrToSizeU(endex - start)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU((__pyx_v_endex - __pyx_v_start)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5780, __pyx_L1_error)
+05781: if not Block_Bool(pattern[0]):
__pyx_t_1 = ((!(__pyx_f_11cbytesparse_1c_Block_Bool((__pyx_v_pattern[0])) != 0)) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+05782: raise ValueError('non-empty pattern required')
__pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(0, 5782, __pyx_L1_error)
05783:
+05784: size = <size_t>(endex - start)
__pyx_v_size = ((size_t)(__pyx_v_endex - __pyx_v_start));
+05785: pattern[0] = Block_RepeatToSize(pattern[0], size)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Block_RepeatToSize((__pyx_v_pattern[0]), __pyx_v_size); if (unlikely(__pyx_t_6 == ((Block_ *)NULL))) __PYX_ERR(0, 5785, __pyx_L1_error)
(__pyx_v_pattern[0]) = __pyx_t_6;
+05786: pattern[0].address = start
(__pyx_v_pattern[0])->address = __pyx_v_start;
05787:
+05788: for block_index in range(block_index_start, block_index_endex):
__pyx_t_7 = __pyx_v_block_index_endex; __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = __pyx_v_block_index_start; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_block_index = __pyx_t_9;
+05789: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+05790: offset = Block_Start(block) - start
__pyx_v_offset = (__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block) - __pyx_v_start);
05791: # CheckAddrToSizeU(offset) # implied
+05792: pattern[0] = Block_Write_(pattern[0], <size_t>offset, Block_Length(block), Block_At__(block, 0))
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Block_Write_((__pyx_v_pattern[0]), ((size_t)__pyx_v_offset), __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block), __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_block, 0)); if (unlikely(__pyx_t_6 == ((Block_ *)NULL))) __PYX_ERR(0, 5792, __pyx_L1_error)
(__pyx_v_pattern[0]) = __pyx_t_6;
}
05793:
+05794: that.blocks = blocks = Rack_DelSlice_(blocks, block_index_start, block_index_endex)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_DelSlice_(__pyx_v_blocks, __pyx_v_block_index_start, __pyx_v_block_index_endex); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 5794, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_2;
__pyx_v_blocks = __pyx_t_2;
+05795: that.blocks = blocks = Rack_Insert_(blocks, block_index_start, pattern[0])
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rack_Insert_(__pyx_v_blocks, __pyx_v_block_index_start, (__pyx_v_pattern[0])); if (unlikely(__pyx_t_2 == ((Rack_ *)NULL))) __PYX_ERR(0, 5795, __pyx_L1_error)
__pyx_v_that->blocks = __pyx_t_2;
__pyx_v_blocks = __pyx_t_2;
05796:
05797:
+05798: cdef vint Memory_Flood(Memory_* that, object start, object endex, object pattern) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Memory_Flood(Memory_ *__pyx_v_that, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; Block_ *__pyx_v_pattern_; __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Memory_Flood", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("cbytesparse.c.Memory_Flood", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05799: cdef:
05800: addr_t start_
05801: addr_t endex_
+05802: Block_* pattern_ = NULL
__pyx_v_pattern_ = NULL;
05803:
+05804: start_, endex_ = Memory_Bound(that, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_that, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5804, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1.f0;
__pyx_t_3 = __pyx_t_1.f1;
__pyx_v_start_ = __pyx_t_2;
__pyx_v_endex_ = __pyx_t_3;
+05805: if start_ < endex_:
__pyx_t_4 = ((__pyx_v_start_ < __pyx_v_endex_) != 0); if (__pyx_t_4) { /* … */ }
+05806: pattern_ = Block_FromObject(0, pattern, False) # size checked later on
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_FromObject(0, __pyx_v_pattern, 0); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5806, __pyx_L1_error)
__pyx_v_pattern_ = __pyx_t_5;
+05807: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; /* … */ __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); goto __pyx_L1_error; __pyx_L9_try_end:; }
+05808: Memory_Flood_(that, start_, endex_, &pattern_)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Memory_Flood_(__pyx_v_that, __pyx_v_start_, __pyx_v_endex_, (&__pyx_v_pattern_)); if (unlikely(__pyx_t_9 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5808, __pyx_L4_error)
+05809: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Memory_Flood", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 5809, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12);
+05810: Block_Free(pattern_) # orphan
(void)(__pyx_f_11cbytesparse_1c_Block_Free(__pyx_v_pattern_));
+05811: raise
__Pyx_GIVEREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_10, __pyx_t_11, __pyx_t_12); __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 5811, __pyx_L6_except_error) } __pyx_L6_except_error:;
05812:
05813:
05814: # =====================================================================================================================
05815:
+05816: cdef Rover_* Rover_Alloc() except NULL:
static Rover_ *__pyx_f_11cbytesparse_1c_Rover_Alloc(void) { Rover_ *__pyx_v_that; Rover_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rover_Alloc", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rover_Alloc", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05817: cdef:
+05818: Rover_* that = <Rover_*>PyMem_Calloc(Rover_HEADING, 1)
__pyx_v_that = ((Rover_ *)__pyx_f_11cbytesparse_1c_PyMem_Calloc(Rover_HEADING, 1));
05819:
+05820: if that == NULL:
__pyx_t_1 = ((__pyx_v_that == NULL) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+05821: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 5821, __pyx_L1_error)
+05822: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
05823:
05824:
+05825: cdef Rover_* Rover_Free(Rover_* that) except? NULL:
static Rover_ *__pyx_f_11cbytesparse_1c_Rover_Free(Rover_ *__pyx_v_that) { Rover_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rover_Free", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Rover_Free", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+05826: if that:
__pyx_t_1 = (__pyx_v_that != 0); if (__pyx_t_1) { /* … */ }
+05827: Rover_Release(that)
__pyx_t_2 = __pyx_f_11cbytesparse_1c_Rover_Release(__pyx_v_that); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5827, __pyx_L1_error)
+05828: PyMem_Free(that)
PyMem_Free(__pyx_v_that);
+05829: return NULL
__pyx_r = NULL; goto __pyx_L0;
05830:
05831:
+05832: cdef Rover_* Rover_Create(
static Rover_ *__pyx_f_11cbytesparse_1c_Rover_Create(Memory_ const *__pyx_v_memory, addr_t __pyx_v_start, addr_t __pyx_v_endex, size_t __pyx_v_pattern_size, byte_t const *__pyx_v_pattern_data, int __pyx_v_forward, int __pyx_v_infinite) { Block_ *__pyx_v_block; addr_t __pyx_v_offset; size_t __pyx_v_pattern_offset; Rover_ *__pyx_v_that; Rover_ *__pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rover_Create", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("cbytesparse.c.Rover_Create", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05833: const Memory_* memory,
05834: addr_t start,
05835: addr_t endex,
05836: size_t pattern_size,
05837: const byte_t* pattern_data,
05838: bint forward,
05839: bint infinite,
05840: ) except NULL:
05841: cdef:
+05842: Block_* block = NULL
__pyx_v_block = NULL;
05843: addr_t offset
05844: size_t pattern_offset
05845:
+05846: if forward:
__pyx_t_1 = (__pyx_v_forward != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+05847: if endex < start:
__pyx_t_1 = ((__pyx_v_endex < __pyx_v_start) != 0); if (__pyx_t_1) { /* … */ }
+05848: endex = start
__pyx_v_endex = __pyx_v_start;
05849: else:
+05850: if start > endex:
/*else*/ { __pyx_t_1 = ((__pyx_v_start > __pyx_v_endex) != 0); if (__pyx_t_1) { /* … */ } } __pyx_L3:;
+05851: start = endex
__pyx_v_start = __pyx_v_endex;
05852:
+05853: if (not pattern_data) != (not pattern_size):
__pyx_t_1 = (((!(__pyx_v_pattern_data != 0)) != (!(__pyx_v_pattern_size != 0))) != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+05854: raise ValueError('non-empty pattern required')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 5854, __pyx_L1_error)
05855:
+05856: if pattern_size and not forward:
__pyx_t_3 = (__pyx_v_pattern_size != 0); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L8_bool_binop_done; } __pyx_t_3 = ((!(__pyx_v_forward != 0)) != 0); __pyx_t_1 = __pyx_t_3; __pyx_L8_bool_binop_done:; if (__pyx_t_1) { /* … */ goto __pyx_L7; }
05857: with cython.cdivision(True):
+05858: pattern_offset = <size_t>((endex - start) % pattern_size)
__pyx_v_pattern_offset = ((size_t)((__pyx_v_endex - __pyx_v_start) % __pyx_v_pattern_size));
05859: else:
+05860: pattern_offset = 0
/*else*/ { __pyx_v_pattern_offset = 0; } __pyx_L7:;
05861:
+05862: that = Rover_Alloc()
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Rover_Alloc(); if (unlikely(__pyx_t_4 == ((Rover_ *)NULL))) __PYX_ERR(0, 5862, __pyx_L1_error)
__pyx_v_that = __pyx_t_4;
05863:
+05864: that.forward = forward
__pyx_v_that->forward = __pyx_v_forward;
+05865: that.infinite = infinite
__pyx_v_that->infinite = __pyx_v_infinite;
+05866: that.start = start
__pyx_v_that->start = __pyx_v_start;
+05867: that.endex = endex
__pyx_v_that->endex = __pyx_v_endex;
+05868: that.address = start if forward else endex
if ((__pyx_v_forward != 0)) { __pyx_t_5 = __pyx_v_start; } else { __pyx_t_5 = __pyx_v_endex; } __pyx_v_that->address = __pyx_t_5;
05869:
+05870: that.pattern_size = pattern_size
__pyx_v_that->pattern_size = __pyx_v_pattern_size;
+05871: that.pattern_data = pattern_data
__pyx_v_that->pattern_data = __pyx_v_pattern_data;
+05872: that.pattern_offset = pattern_offset
__pyx_v_that->pattern_offset = __pyx_v_pattern_offset;
05873:
+05874: that.memory = memory
__pyx_v_that->memory = __pyx_v_memory;
+05875: that.block_count = Rack_Length(memory.blocks)
__pyx_v_that->block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_memory->blocks);
05876:
+05877: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L15_try_end; __pyx_L10_error:; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); goto __pyx_L1_error; __pyx_L15_try_end:; }
+05878: if that.block_count:
__pyx_t_1 = (__pyx_v_that->block_count != 0); if (__pyx_t_1) { /* … */ }
+05879: if forward:
__pyx_t_1 = (__pyx_v_forward != 0); if (__pyx_t_1) { /* … */ goto __pyx_L17; }
+05880: that.block_index = Rack_IndexStart(memory.blocks, start)
__pyx_v_that->block_index = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_memory->blocks, __pyx_v_start);
+05881: if that.block_index < that.block_count:
__pyx_t_1 = ((__pyx_v_that->block_index < __pyx_v_that->block_count) != 0); if (__pyx_t_1) { /* … */ }
+05882: block = Rack_Get_(memory.blocks, that.block_index)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_memory->blocks, __pyx_v_that->block_index); if (unlikely(__pyx_t_9 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5882, __pyx_L10_error) __pyx_v_block = __pyx_t_9;
+05883: that.block_start = Block_Start(block)
__pyx_v_that->block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05884: that.block_endex = Block_Endex(block)
__pyx_v_that->block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
05885:
+05886: offset = start if start >= that.block_start else that.block_start
if (((__pyx_v_start >= __pyx_v_that->block_start) != 0)) { __pyx_t_5 = __pyx_v_start; } else { __pyx_t_5 = __pyx_v_that->block_start; } __pyx_v_offset = __pyx_t_5;
+05887: if offset > that.block_endex:
__pyx_t_1 = ((__pyx_v_offset > __pyx_v_that->block_endex) != 0); if (__pyx_t_1) { /* … */ }
+05888: offset = that.block_endex
__pyx_t_5 = __pyx_v_that->block_endex; __pyx_v_offset = __pyx_t_5;
+05889: offset -= that.block_start
__pyx_v_offset = (__pyx_v_offset - __pyx_v_that->block_start);
+05890: CheckAddrToSizeU(offset)
__pyx_t_10 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_offset); if (unlikely(__pyx_t_10 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5890, __pyx_L10_error)
05891:
+05892: block = Block_Acquire(block)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_block); if (unlikely(__pyx_t_9 == ((Block_ *)NULL))) __PYX_ERR(0, 5892, __pyx_L10_error)
__pyx_v_block = __pyx_t_9;
+05893: that.block = block
__pyx_v_that->block = __pyx_v_block;
+05894: that.block_ptr = Block_At__(block, <size_t>offset)
__pyx_v_that->block_ptr = __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_block, ((size_t)__pyx_v_offset));
05895: else:
+05896: that.block_index = Rack_IndexEndex(memory.blocks, endex)
/*else*/ { __pyx_v_that->block_index = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_memory->blocks, __pyx_v_endex);
+05897: if that.block_index:
__pyx_t_1 = (__pyx_v_that->block_index != 0); if (__pyx_t_1) { /* … */ } } __pyx_L17:;
+05898: block = Rack_Get_(memory.blocks, that.block_index - 1)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_memory->blocks, (__pyx_v_that->block_index - 1)); if (unlikely(__pyx_t_9 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5898, __pyx_L10_error) __pyx_v_block = __pyx_t_9;
+05899: that.block_start = Block_Start(block)
__pyx_v_that->block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05900: that.block_endex = Block_Endex(block)
__pyx_v_that->block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
05901:
+05902: offset = endex if endex >= that.block_start else that.block_start
if (((__pyx_v_endex >= __pyx_v_that->block_start) != 0)) { __pyx_t_5 = __pyx_v_endex; } else { __pyx_t_5 = __pyx_v_that->block_start; } __pyx_v_offset = __pyx_t_5;
+05903: if offset > that.block_endex:
__pyx_t_1 = ((__pyx_v_offset > __pyx_v_that->block_endex) != 0); if (__pyx_t_1) { /* … */ }
+05904: offset = that.block_endex
__pyx_t_5 = __pyx_v_that->block_endex; __pyx_v_offset = __pyx_t_5;
+05905: offset -= that.block_start
__pyx_v_offset = (__pyx_v_offset - __pyx_v_that->block_start);
+05906: CheckAddrToSizeU(offset)
__pyx_t_10 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_v_offset); if (unlikely(__pyx_t_10 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 5906, __pyx_L10_error)
05907:
+05908: block = Block_Acquire(block)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_block); if (unlikely(__pyx_t_9 == ((Block_ *)NULL))) __PYX_ERR(0, 5908, __pyx_L10_error)
__pyx_v_block = __pyx_t_9;
+05909: that.block = block
__pyx_v_that->block = __pyx_v_block;
+05910: that.block_ptr = Block_At__(block, <size_t>offset)
__pyx_v_that->block_ptr = __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_block, ((size_t)__pyx_v_offset));
+05911: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Rover_Create", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 5911, __pyx_L12_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12);
+05912: that = Rover_Free(that)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_v_that); if (unlikely(__pyx_t_4 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5912, __pyx_L12_except_error) __pyx_v_that = __pyx_t_4;
+05913: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_11, __pyx_t_12); __pyx_t_2 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 5913, __pyx_L12_except_error) } __pyx_L12_except_error:;
05914:
+05915: return that
__pyx_r = __pyx_v_that; goto __pyx_L0;
05916:
05917:
+05918: cdef addr_t Rover_Length(const Rover_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Rover_Length(Rover_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+05919: return that.endex - that.start
__pyx_r = (__pyx_v_that->endex - __pyx_v_that->start); goto __pyx_L0;
05920:
05921:
+05922: cdef bint Rover_HasNext(const Rover_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Rover_HasNext(Rover_ const *__pyx_v_that) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+05923: if that.forward:
__pyx_t_1 = (__pyx_v_that->forward != 0); if (__pyx_t_1) { /* … */ }
+05924: return that.address < that.endex
__pyx_r = (__pyx_v_that->address < __pyx_v_that->endex); goto __pyx_L0;
05925: else:
+05926: return that.address > that.start
/*else*/ { __pyx_r = (__pyx_v_that->address > __pyx_v_that->start); goto __pyx_L0; }
05927:
05928:
+05929: cdef int Rover_Next_(Rover_* that) except -2:
static int __pyx_f_11cbytesparse_1c_Rover_Next_(Rover_ *__pyx_v_that) { Block_ *__pyx_v_block; int __pyx_v_value; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rover_Next_", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cbytesparse.c.Rover_Next_", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -2; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
05930: cdef:
+05931: Block_* block = NULL
__pyx_v_block = NULL;
+05932: int value = -1
__pyx_v_value = -1;
05933:
+05934: try:
{ /*try:*/ { /* … */ } __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L7_try_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L0; }
+05935: if that.forward:
__pyx_t_4 = (__pyx_v_that->forward != 0); if (__pyx_t_4) { /* … */ goto __pyx_L9; }
+05936: while True: # loop to move to the next block when necessary
while (1) {
+05937: if that.address < that.endex:
__pyx_t_4 = ((__pyx_v_that->address < __pyx_v_that->endex) != 0); if (__pyx_t_4) { /* … */ }
+05938: if that.block_index < that.block_count:
__pyx_t_4 = ((__pyx_v_that->block_index < __pyx_v_that->block_count) != 0); if (__pyx_t_4) { /* … */ }
+05939: if that.address < that.block_start:
__pyx_t_4 = ((__pyx_v_that->address < __pyx_v_that->block_start) != 0); if (__pyx_t_4) { /* … */ }
+05940: that.address += 1
__pyx_v_that->address = (__pyx_v_that->address + 1);
+05941: if that.pattern_size:
__pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ goto __pyx_L15; }
+05942: value = <int><unsigned>that.pattern_data[that.pattern_offset]
__pyx_v_value = ((int)((unsigned int)(__pyx_v_that->pattern_data[__pyx_v_that->pattern_offset])));
05943: else:
+05944: value = -1
/*else*/ { __pyx_v_value = -1; } __pyx_L15:;
+05945: break
goto __pyx_L11_break;
05946:
+05947: elif that.address < that.block_endex:
__pyx_t_4 = ((__pyx_v_that->address < __pyx_v_that->block_endex) != 0); if (__pyx_t_4) { /* … */ }
+05948: that.address += 1
__pyx_v_that->address = (__pyx_v_that->address + 1);
+05949: value = that.block_ptr[0]
__pyx_v_value = (__pyx_v_that->block_ptr[0]);
+05950: that.block_ptr += 1
__pyx_v_that->block_ptr = (__pyx_v_that->block_ptr + 1);
+05951: break
goto __pyx_L11_break;
05952:
05953: else:
+05954: that.block_index += 1
/*else*/ { __pyx_v_that->block_index = (__pyx_v_that->block_index + 1);
+05955: if that.block_index < that.block_count:
__pyx_t_4 = ((__pyx_v_that->block_index < __pyx_v_that->block_count) != 0); if (__pyx_t_4) { /* … */ }
+05956: that.block = Block_Release(that.block)
__pyx_v_that->block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_that->block);
+05957: that.block = NULL
__pyx_v_that->block = NULL;
+05958: block = Rack_Get_(that.memory.blocks, that.block_index)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_that->memory->blocks, __pyx_v_that->block_index); if (unlikely(__pyx_t_5 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 5958, __pyx_L3_error) __pyx_v_block = __pyx_t_5;
+05959: block = Block_Acquire(block)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_block); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 5959, __pyx_L3_error)
__pyx_v_block = __pyx_t_5;
+05960: that.block = block
__pyx_v_that->block = __pyx_v_block;
+05961: that.block_start = Block_Start(block)
__pyx_v_that->block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+05962: that.block_endex = Block_Endex(block)
__pyx_v_that->block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+05963: that.block_ptr = Block_At_(block, 0)
__pyx_v_that->block_ptr = __pyx_f_11cbytesparse_1c_Block_At_(__pyx_v_block, 0);
+05964: continue
goto __pyx_L10_continue; }
05965: else:
+05966: that.address += 1
/*else*/ { __pyx_v_that->address = (__pyx_v_that->address + 1);
+05967: if that.pattern_size:
__pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ goto __pyx_L17; }
+05968: value = <int><unsigned>that.pattern_data[that.pattern_offset]
__pyx_v_value = ((int)((unsigned int)(__pyx_v_that->pattern_data[__pyx_v_that->pattern_offset])));
05969: else:
+05970: value = -1
/*else*/ { __pyx_v_value = -1; } __pyx_L17:;
+05971: break
goto __pyx_L11_break; }
05972:
+05973: elif that.infinite:
__pyx_t_4 = (__pyx_v_that->infinite != 0); if (likely(__pyx_t_4)) { /* … */ goto __pyx_L12; }
+05974: if that.pattern_size:
__pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ goto __pyx_L18; }
+05975: value = <int><unsigned>that.pattern_data[that.pattern_offset]
__pyx_v_value = ((int)((unsigned int)(__pyx_v_that->pattern_data[__pyx_v_that->pattern_offset])));
05976: else:
+05977: value = -1
/*else*/ { __pyx_v_value = -1; } __pyx_L18:;
05978:
05979: else:
+05980: raise StopIteration()
/*else*/ { __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_builtin_StopIteration); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5980, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 5980, __pyx_L3_error) } __pyx_L12:; __pyx_L10_continue:; } __pyx_L11_break:;
05981:
+05982: if that.pattern_size:
__pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ }
+05983: if that.pattern_offset < that.pattern_size - 1:
__pyx_t_4 = ((__pyx_v_that->pattern_offset < (__pyx_v_that->pattern_size - 1)) != 0); if (__pyx_t_4) { /* … */ goto __pyx_L20; }
+05984: that.pattern_offset += 1
__pyx_v_that->pattern_offset = (__pyx_v_that->pattern_offset + 1);
05985: else:
+05986: that.pattern_offset = 0
/*else*/ { __pyx_v_that->pattern_offset = 0; } __pyx_L20:;
05987: else:
+05988: if that.pattern_size:
/*else*/ { __pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ }
+05989: if that.pattern_offset > 0:
__pyx_t_4 = ((__pyx_v_that->pattern_offset > 0) != 0); if (__pyx_t_4) { /* … */ goto __pyx_L22; }
+05990: that.pattern_offset -= 1
__pyx_v_that->pattern_offset = (__pyx_v_that->pattern_offset - 1);
05991: else:
+05992: that.pattern_offset = that.pattern_size - 1
/*else*/ { __pyx_v_that->pattern_offset = (__pyx_v_that->pattern_size - 1); } __pyx_L22:;
05993:
+05994: while True: # loop to move to the next block when necessary
while (1) {
+05995: if that.address > that.start:
__pyx_t_4 = ((__pyx_v_that->address > __pyx_v_that->start) != 0); if (__pyx_t_4) { /* … */ }
+05996: if that.block_index:
__pyx_t_4 = (__pyx_v_that->block_index != 0); if (__pyx_t_4) { /* … */ }
+05997: if that.address > that.block_endex:
__pyx_t_4 = ((__pyx_v_that->address > __pyx_v_that->block_endex) != 0); if (__pyx_t_4) { /* … */ }
+05998: that.address -= 1
__pyx_v_that->address = (__pyx_v_that->address - 1);
+05999: if that.pattern_size:
__pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ goto __pyx_L28; }
+06000: value = <int><unsigned>that.pattern_data[that.pattern_offset]
__pyx_v_value = ((int)((unsigned int)(__pyx_v_that->pattern_data[__pyx_v_that->pattern_offset])));
06001: else:
+06002: value = -1
/*else*/ { __pyx_v_value = -1; } __pyx_L28:;
+06003: break
goto __pyx_L24_break;
06004:
+06005: elif that.address > that.block_start:
__pyx_t_4 = ((__pyx_v_that->address > __pyx_v_that->block_start) != 0); if (__pyx_t_4) { /* … */ }
+06006: that.address -= 1
__pyx_v_that->address = (__pyx_v_that->address - 1);
+06007: that.block_ptr -= 1
__pyx_v_that->block_ptr = (__pyx_v_that->block_ptr - 1);
+06008: value = that.block_ptr[0]
__pyx_v_value = (__pyx_v_that->block_ptr[0]);
+06009: break
goto __pyx_L24_break;
06010:
06011: else:
+06012: that.block_index -= 1
/*else*/ { __pyx_v_that->block_index = (__pyx_v_that->block_index - 1);
+06013: if that.block_index:
__pyx_t_4 = (__pyx_v_that->block_index != 0); if (__pyx_t_4) { /* … */ }
+06014: that.block = Block_Release(that.block)
__pyx_v_that->block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_that->block);
+06015: that.block = NULL
__pyx_v_that->block = NULL;
+06016: block = Rack_Get_(that.memory.blocks, that.block_index - 1)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_Get_(__pyx_v_that->memory->blocks, (__pyx_v_that->block_index - 1)); if (unlikely(__pyx_t_5 == ((Block_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6016, __pyx_L3_error) __pyx_v_block = __pyx_t_5;
+06017: block = Block_Acquire(block)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Block_Acquire(__pyx_v_block); if (unlikely(__pyx_t_5 == ((Block_ *)NULL))) __PYX_ERR(0, 6017, __pyx_L3_error)
__pyx_v_block = __pyx_t_5;
+06018: that.block = block
__pyx_v_that->block = __pyx_v_block;
+06019: that.block_start = Block_Start(block)
__pyx_v_that->block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+06020: that.block_endex = Block_Endex(block)
__pyx_v_that->block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+06021: that.block_ptr = Block_At__(block, Block_Length(block))
__pyx_v_that->block_ptr = __pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_block, __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block));
+06022: value = -1
__pyx_v_value = -1;
+06023: continue
goto __pyx_L23_continue; }
06024: else:
+06025: that.address -= 1
/*else*/ { __pyx_v_that->address = (__pyx_v_that->address - 1);
+06026: if that.pattern_size:
__pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ goto __pyx_L30; }
+06027: value = <int><unsigned>that.pattern_data[that.pattern_offset]
__pyx_v_value = ((int)((unsigned int)(__pyx_v_that->pattern_data[__pyx_v_that->pattern_offset])));
06028: else:
+06029: value = -1
/*else*/ { __pyx_v_value = -1; } __pyx_L30:;
+06030: break
goto __pyx_L24_break; }
06031:
+06032: elif that.infinite:
__pyx_t_4 = (__pyx_v_that->infinite != 0); if (likely(__pyx_t_4)) { /* … */ goto __pyx_L25; }
+06033: if that.pattern_size:
__pyx_t_4 = (__pyx_v_that->pattern_size != 0); if (__pyx_t_4) { /* … */ goto __pyx_L31; }
+06034: value = <int><unsigned>that.pattern_data[that.pattern_offset]
__pyx_v_value = ((int)((unsigned int)(__pyx_v_that->pattern_data[__pyx_v_that->pattern_offset])));
06035: else:
+06036: value = -1
/*else*/ { __pyx_v_value = -1; } __pyx_L31:;
06037:
06038: else:
+06039: raise StopIteration()
/*else*/ { __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_builtin_StopIteration); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6039, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 6039, __pyx_L3_error) } __pyx_L25:; __pyx_L23_continue:; } __pyx_L24_break:; } __pyx_L9:;
06040:
+06041: return value
__pyx_r = __pyx_v_value; goto __pyx_L7_try_return;
06042:
+06043: except:
/*except:*/ { __Pyx_AddTraceback("cbytesparse.c.Rover_Next_", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 6043, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8);
+06044: that.block = Block_Release(that.block) # preempt
__pyx_v_that->block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_that->block);
+06045: raise
__Pyx_GIVEREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_7, __pyx_t_8); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __PYX_ERR(0, 6045, __pyx_L5_except_error) } __pyx_L5_except_error:;
06046:
06047:
+06048: cdef object Rover_Next(Rover_* that):
static PyObject *__pyx_f_11cbytesparse_1c_Rover_Next(Rover_ *__pyx_v_that) { int __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rover_Next", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Rover_Next", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06049: cdef:
+06050: int value = Rover_Next_(that)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Rover_Next_(__pyx_v_that); if (unlikely(__pyx_t_1 == ((int)-2))) __PYX_ERR(0, 6050, __pyx_L1_error)
__pyx_v_value = __pyx_t_1;
06051:
+06052: return None if value < 0 else <object>value
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_value < 0) != 0)) { __Pyx_INCREF(Py_None); __pyx_t_2 = Py_None; } else { __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_t_3)); __pyx_t_2 = __pyx_t_3; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
06053:
06054:
+06055: cdef vint Rover_Release(Rover_* that) except -1:
static __pyx_t_11cbytesparse_1c_vint __pyx_f_11cbytesparse_1c_Rover_Release(Rover_ *__pyx_v_that) { __pyx_t_11cbytesparse_1c_vint __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("Rover_Release", 0); /* … */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+06056: that.address = that.endex if that.forward else that.start
if ((__pyx_v_that->forward != 0)) { __pyx_t_1 = __pyx_v_that->endex; } else { __pyx_t_1 = __pyx_v_that->start; } __pyx_v_that->address = __pyx_t_1;
+06057: that.block = Block_Release(that.block)
__pyx_v_that->block = __pyx_f_11cbytesparse_1c_Block_Release(__pyx_v_that->block);
+06058: that.memory = NULL
__pyx_v_that->memory = NULL;
06059:
06060:
+06061: cdef bint Rover_Forward(const Rover_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Rover_Forward(Rover_ const *__pyx_v_that) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+06062: return that.forward
__pyx_r = __pyx_v_that->forward; goto __pyx_L0;
06063:
06064:
+06065: cdef bint Rover_Infinite(const Rover_* that) nogil:
static int __pyx_f_11cbytesparse_1c_Rover_Infinite(Rover_ const *__pyx_v_that) { int __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+06066: return that.infinite
__pyx_r = __pyx_v_that->infinite; goto __pyx_L0;
06067:
06068:
+06069: cdef addr_t Rover_Address(const Rover_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Rover_Address(Rover_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+06070: return that.address
__pyx_r = __pyx_v_that->address; goto __pyx_L0;
06071:
06072:
+06073: cdef addr_t Rover_Start(const Rover_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Rover_Start(Rover_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+06074: return that.start
__pyx_r = __pyx_v_that->start; goto __pyx_L0;
06075:
06076:
+06077: cdef addr_t Rover_Endex(const Rover_* that) nogil:
static addr_t __pyx_f_11cbytesparse_1c_Rover_Endex(Rover_ const *__pyx_v_that) { addr_t __pyx_r; /* … */ /* function exit code */ __pyx_L0:; return __pyx_r; }
+06078: return that.endex
__pyx_r = __pyx_v_that->endex; goto __pyx_L0;
06079:
06080:
06081: # =====================================================================================================================
06082:
06083: cdef class Memory:
06084: r"""Virtual memory.
06085:
06086: This class is a handy wrapper around `blocks`, so that it can behave mostly
06087: like a :obj:`bytearray`, but on sparse chunks of data.
06088:
06089: Please look at examples of each method to get a glimpse of the features of
06090: this class.
06091:
06092: On creation, at most one of `memory`, `blocks`, or `data` can be specified.
06093:
06094: The Cython implementation limits the address range to that of the integral
06095: type ``uint_fast64_t``.
06096:
06097: Attributes:
06098: _trim_start (int):
06099: Memory trimming start address. Any data before this address is
06100: automatically discarded; disabled if ``None``.
06101:
06102: _trim_endex (int):
06103: Memory trimming exclusive end address. Any data at or after this
06104: address is automatically discarded; disabled if ``None``.
06105:
06106: Arguments:
06107: start (int):
06108: Optional memory start address.
06109: Anything before will be trimmed away.
06110:
06111: endex (int):
06112: Optional memory exclusive end address.
06113: Anything at or after it will be trimmed away.
06114:
06115: Examples:
06116: >>> from cbytesparse.c import Memory
06117:
06118: >>> memory = Memory()
06119: >>> memory.to_blocks()
06120: []
06121:
06122: >>> memory = Memory.from_bytes(b'Hello, World!', offset=5)
06123: >>> memory.to_blocks()
06124: [[5, b'Hello, World!']]
06125: """
06126:
+06127: def __add__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_1__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_1__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__add__ (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_11cbytesparse_1c_Memory, 1, "self", 0))) __PYX_ERR(0, 6128, __pyx_L1_error) __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory___add__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_value)); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory___add__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_value) { Memory_ *__pyx_v_memory_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__add__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06128: self: Memory,
06129: value: Union[AnyBytes, ImmutableMemory],
06130: ) -> Memory:
06131: cdef:
+06132: Memory_* memory_ = Memory_Add(self._, value)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Add(__pyx_v_self->_, __pyx_v_value); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 6132, __pyx_L1_error)
__pyx_v_memory_ = __pyx_t_1;
+06133: Memory memory = Memory_AsObject(memory_)
__pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_memory = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_2); __pyx_t_2 = 0;
06134:
+06135: return memory
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_memory)); __pyx_r = ((PyObject *)__pyx_v_memory); goto __pyx_L0;
06136:
+06137: def __bool__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_3__bool__(PyObject *__pyx_v_self); /*proto*/ static int __pyx_pw_11cbytesparse_1c_6Memory_3__bool__(PyObject *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_2__bool__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_2__bool__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bool__", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
06138: self: Memory,
06139: ) -> bool:
06140: r"""Has any items.
06141:
06142: Returns:
06143: bool: Has any items.
06144:
06145: Examples:
06146: >>> from cbytesparse.c import Memory
06147:
06148: >>> memory = Memory()
06149: >>> bool(memory)
06150: False
06151:
06152: >>> memory = Memory.from_bytes(b'Hello, World!', offset=5)
06153: >>> bool(memory)
06154: True
06155: """
06156:
+06157: return Memory_Bool(self._)
__pyx_r = __pyx_f_11cbytesparse_1c_Memory_Bool(__pyx_v_self->_); goto __pyx_L0;
06158:
+06159: def __bytes__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5__bytes__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_4__bytes__[] = "Memory.__bytes__(self: Memory) -> bytes\nCreates a bytes clone.\n\n Returns:\n :obj:`bytes`: Cloned data.\n\n Raises:\n :obj:`ValueError`: Data not contiguous (see :attr:`contiguous`).\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_5__bytes__ = {"__bytes__", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_5__bytes__, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_4__bytes__}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5__bytes__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bytes__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_4__bytes__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_4__bytes__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { Memory_ const *__pyx_v_memory; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_view = 0; PyObject *__pyx_v_data = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__bytes__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory.__bytes__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_view); __Pyx_XDECREF(__pyx_v_data); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__91 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_memory, __pyx_n_s_view, __pyx_n_s_data); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 6159, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__91); __Pyx_GIVEREF(__pyx_tuple__91); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6159, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_u_bytes_2) < 0) __PYX_ERR(0, 6159, __pyx_L1_error) __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_5__bytes__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory___bytes, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_bytes, __pyx_t_1) < 0) __PYX_ERR(0, 6159, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__91, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_bytes, 6159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(0, 6159, __pyx_L1_error)
06160: self: Memory,
06161: ) -> bytes:
06162: r"""Creates a bytes clone.
06163:
06164: Returns:
06165: :obj:`bytes`: Cloned data.
06166:
06167: Raises:
06168: :obj:`ValueError`: Data not contiguous (see :attr:`contiguous`).
06169: """
06170: cdef:
+06171: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+06172: BlockView view = Memory_View_(memory, Memory_Start(memory), Memory_Endex(memory))
__pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_View_(__pyx_v_memory, __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory), __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_memory))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_view = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_2); __pyx_t_2 = 0;
06173:
+06174: try:
/*try:*/ {
+06175: data = view.__bytes__()
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_view), __pyx_n_s_bytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6175, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6175, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_data = __pyx_t_2; __pyx_t_2 = 0; }
06176: finally:
+06177: view.release()
/*finally:*/ { /*normal exit:*/{ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_view), __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L5; } __pyx_L4_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename; { __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_view), __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6177, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6177, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); } __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10); __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7; goto __pyx_L1_error; __pyx_L7_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); } __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; goto __pyx_L1_error; } __pyx_L5:; }
+06178: return data
__Pyx_XDECREF(__pyx_r); if (!(likely(PyBytes_CheckExact(__pyx_v_data))||((__pyx_v_data) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_data)->tp_name), 0))) __PYX_ERR(0, 6178, __pyx_L1_error) __Pyx_INCREF(__pyx_v_data); __pyx_r = ((PyObject*)__pyx_v_data); goto __pyx_L0;
06179:
+06180: def __cinit__(self):
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_7__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_11cbytesparse_1c_6Memory_7__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_6__cinit__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_6__cinit__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 0); /* … */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; }
06181: r"""Cython constructor."""
+06182: self._ = NULL
__pyx_v_self->_ = NULL;
06183:
+06184: def __contains__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_9__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_8__contains__[] = "Checks if some items are contained.\n\n Arguments:\n item (items):\n Items to find. Can be either some byte string or an integer.\n\n Returns:\n bool: Item is contained.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| |[1 | 2 | 3]| |[x | y | z]|\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'123'], [9, b'xyz']])\n >>> b'23' in memory\n True\n >>> ord('y') in memory\n True\n >>> b'$' in memory\n False\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_8__contains__; #endif static int __pyx_pw_11cbytesparse_1c_6Memory_9__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_8__contains__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_item)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_8__contains__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__contains__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
06185: self: Memory,
06186: item: Union[AnyBytes, Value],
06187: ) -> bool:
06188: r"""Checks if some items are contained.
06189:
06190: Arguments:
06191: item (items):
06192: Items to find. Can be either some byte string or an integer.
06193:
06194: Returns:
06195: bool: Item is contained.
06196:
06197: Examples:
06198: >>> from cbytesparse.c import Memory
06199:
06200: +---+---+---+---+---+---+---+---+---+---+---+---+
06201: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
06202: +===+===+===+===+===+===+===+===+===+===+===+===+
06203: | |[A | B | C]| |[1 | 2 | 3]| |[x | y | z]|
06204: +---+---+---+---+---+---+---+---+---+---+---+---+
06205:
06206: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'123'], [9, b'xyz']])
06207: >>> b'23' in memory
06208: True
06209: >>> ord('y') in memory
06210: True
06211: >>> b'$' in memory
06212: False
06213: """
06214:
+06215: return Memory_Contains(self._, item)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Contains(__pyx_v_self->_, __pyx_v_item); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 6215, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
06216:
+06217: def __copy__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_11__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_10__copy__[] = "Memory.__copy__(self: Memory) -> ImmutableMemory\nCreates a shallow copy.\n\n Note:\n The Cython implementation actually creates a deep copy.\n\n Returns:\n :obj:`ImmutableMemory`: Shallow copy.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_11__copy__ = {"__copy__", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_11__copy__, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_10__copy__}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_11__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__copy__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_10__copy__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_10__copy__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { Memory_ *__pyx_v_memory_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__copy__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__93 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_memory_2, __pyx_n_s_memory); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 6217, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__93); __Pyx_GIVEREF(__pyx_tuple__93); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6217, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_11__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory___copy, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(0, 6217, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_copy, 6217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 6217, __pyx_L1_error)
06218: self: Memory,
+06219: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_2) < 0) __PYX_ERR(0, 6217, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
06220: r"""Creates a shallow copy.
06221:
06222: Note:
06223: The Cython implementation actually creates a deep copy.
06224:
06225: Returns:
06226: :obj:`ImmutableMemory`: Shallow copy.
06227: """
06228: cdef:
+06229: Memory_* memory_ = Memory_Copy(self._)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Copy(__pyx_v_self->_); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 6229, __pyx_L1_error)
__pyx_v_memory_ = __pyx_t_1;
+06230: Memory memory = Memory_AsObject(memory_)
__pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_memory = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_2); __pyx_t_2 = 0;
06231:
+06232: return memory
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_memory)); __pyx_r = ((PyObject *)__pyx_v_memory); goto __pyx_L0;
06233:
+06234: def __dealloc__(self):
/* Python wrapper */ static void __pyx_pw_11cbytesparse_1c_6Memory_13__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_11cbytesparse_1c_6Memory_13__dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_pf_11cbytesparse_1c_6Memory_12__dealloc__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_pf_11cbytesparse_1c_6Memory_12__dealloc__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__", 0); /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("cbytesparse.c.Memory.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); }
06235: r"""Cython deallocation method."""
+06236: self._ = Memory_Free(self._)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Free(__pyx_v_self->_); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6236, __pyx_L1_error) __pyx_v_self->_ = __pyx_t_1;
06237:
+06238: def __deepcopy__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_15__deepcopy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_14__deepcopy__[] = "Memory.__deepcopy__(self: Memory) -> ImmutableMemory\nCreates a deep copy.\n\n Returns:\n :obj:`ImmutableMemory`: Deep copy.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_15__deepcopy__ = {"__deepcopy__", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_15__deepcopy__, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_14__deepcopy__}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_15__deepcopy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__deepcopy__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_14__deepcopy__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_14__deepcopy__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { Memory_ *__pyx_v_memory_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__deepcopy__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.__deepcopy__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__95 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_memory_2, __pyx_n_s_memory); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 6238, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__95); __Pyx_GIVEREF(__pyx_tuple__95); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6238, __pyx_L1_error) /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_15__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory___deepcopy, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_deepcopy, __pyx_t_1) < 0) __PYX_ERR(0, 6238, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_deepcopy, 6238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 6238, __pyx_L1_error)
06239: self: Memory,
+06240: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 6238, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
06241: r"""Creates a deep copy.
06242:
06243: Returns:
06244: :obj:`ImmutableMemory`: Deep copy.
06245: """
06246: cdef:
+06247: Memory_* memory_ = Memory_Copy(self._)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Copy(__pyx_v_self->_); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 6247, __pyx_L1_error)
__pyx_v_memory_ = __pyx_t_1;
+06248: Memory memory = Memory_AsObject(memory_)
__pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_memory = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_2); __pyx_t_2 = 0;
06249:
+06250: return memory
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_memory)); __pyx_r = ((PyObject *)__pyx_v_memory); goto __pyx_L0;
06251:
+06252: def __delitem__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_17__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_16__delitem__[] = "Deletes data.\n\n Arguments:\n key (slice or int):\n Deletion range or address.\n\n Note:\n This method is typically not optimized for a :class:`slice` where\n its `step` is an integer greater than 1.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C | y | z]| | | | | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> del memory[4:9]\n >>> memory.to_blocks()\n [[1, b'ABCyz']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C | D]| |[$]| |[x | z]| | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | D]| |[$]| |[x | z]| | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | D]| | |[x]| | | | | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> del memory[9]\n >>> memory.to_blocks()\n [[1, b'ABCD'], [6, b'$'], [8, b'xz']]\n >>> del memory[3]\n >>> memory.to_blocks()\n [[1, b'ABD'], [5, b'$'], [7, b'xz']]""\n >>> del memory[2:10:3]\n >>> memory.to_blocks()\n [[1, b'AD'], [5, b'x']]\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_16__delitem__; #endif static int __pyx_pw_11cbytesparse_1c_6Memory_17__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_16__delitem__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_key)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_16__delitem__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_key) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__delitem__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
06253: self: Memory,
06254: key: Union[Address, slice],
06255: ) -> None:
06256: r"""Deletes data.
06257:
06258: Arguments:
06259: key (slice or int):
06260: Deletion range or address.
06261:
06262: Note:
06263: This method is typically not optimized for a :class:`slice` where
06264: its `step` is an integer greater than 1.
06265:
06266: Examples:
06267: >>> from cbytesparse.c import Memory
06268:
06269: +---+---+---+---+---+---+---+---+---+---+---+---+
06270: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
06271: +===+===+===+===+===+===+===+===+===+===+===+===+
06272: | |[A | B | C | D]| |[$]| |[x | y | z]| |
06273: +---+---+---+---+---+---+---+---+---+---+---+---+
06274: | |[A | B | C | y | z]| | | | | | |
06275: +---+---+---+---+---+---+---+---+---+---+---+---+
06276:
06277: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
06278: >>> del memory[4:9]
06279: >>> memory.to_blocks()
06280: [[1, b'ABCyz']]
06281:
06282: ~~~
06283:
06284: +---+---+---+---+---+---+---+---+---+---+---+---+
06285: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
06286: +===+===+===+===+===+===+===+===+===+===+===+===+
06287: | |[A | B | C | D]| |[$]| |[x | y | z]| |
06288: +---+---+---+---+---+---+---+---+---+---+---+---+
06289: | |[A | B | C | D]| |[$]| |[x | z]| | |
06290: +---+---+---+---+---+---+---+---+---+---+---+---+
06291: | |[A | B | D]| |[$]| |[x | z]| | | |
06292: +---+---+---+---+---+---+---+---+---+---+---+---+
06293: | |[A | D]| | |[x]| | | | | | |
06294: +---+---+---+---+---+---+---+---+---+---+---+---+
06295:
06296: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
06297: >>> del memory[9]
06298: >>> memory.to_blocks()
06299: [[1, b'ABCD'], [6, b'$'], [8, b'xz']]
06300: >>> del memory[3]
06301: >>> memory.to_blocks()
06302: [[1, b'ABD'], [5, b'$'], [7, b'xz']]
06303: >>> del memory[2:10:3]
06304: >>> memory.to_blocks()
06305: [[1, b'AD'], [5, b'x']]
06306: """
06307:
+06308: Memory_DelItem(self._, key)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_DelItem(__pyx_v_self->_, __pyx_v_key); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6308, __pyx_L1_error)
06309:
+06310: def __eq__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_19__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_18__eq__[] = "Equality comparison.\n\n Arguments:\n other (Memory):\n Data to compare with `self`.\n\n If it is a :obj:`ImmutableMemory`, all of its blocks must match.\n\n If it is a :obj:`bytes`, a :obj:`bytearray`, or a\n :obj:`memoryview`, it is expected to match the first and only\n stored block.\n\n Otherwise, it must match the first and only stored block,\n via iteration over the stored values.\n\n Returns:\n bool: `self` is equal to `other`.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> data = b'Hello, World!'\n >>> memory = Memory.from_bytes(data)\n >>> memory == data\n True\n >>> memory.shift(1)\n >>> memory == data\n True\n\n >>> data = b'Hello, World!'\n >>> memory = Memory.from_bytes(data)\n >>> memory == list(data)\n True\n >>> memory.shift(1)\n >>> memory == list(data)\n True\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_18__eq__; #endif static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_19__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_18__eq__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_other)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_18__eq__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_other) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__eq__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06311: self: Memory,
06312: other: Any,
06313: ) -> bool:
06314: r"""Equality comparison.
06315:
06316: Arguments:
06317: other (Memory):
06318: Data to compare with `self`.
06319:
06320: If it is a :obj:`ImmutableMemory`, all of its blocks must match.
06321:
06322: If it is a :obj:`bytes`, a :obj:`bytearray`, or a
06323: :obj:`memoryview`, it is expected to match the first and only
06324: stored block.
06325:
06326: Otherwise, it must match the first and only stored block,
06327: via iteration over the stored values.
06328:
06329: Returns:
06330: bool: `self` is equal to `other`.
06331:
06332: Examples:
06333: >>> from cbytesparse.c import Memory
06334:
06335: >>> data = b'Hello, World!'
06336: >>> memory = Memory.from_bytes(data)
06337: >>> memory == data
06338: True
06339: >>> memory.shift(1)
06340: >>> memory == data
06341: True
06342:
06343: >>> data = b'Hello, World!'
06344: >>> memory = Memory.from_bytes(data)
06345: >>> memory == list(data)
06346: True
06347: >>> memory.shift(1)
06348: >>> memory == list(data)
06349: True
06350: """
06351:
+06352: return Memory_Eq(self._, other)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Eq(__pyx_v_self->_, __pyx_v_other); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 6352, __pyx_L1_error) __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
06353:
+06354: def __getitem__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_20__getitem__[] = "Gets data.\n\n Arguments:\n key (slice or int):\n Selection range or address.\n If it is a :obj:`slice` with bytes-like `step`, the latter is\n interpreted as the filling pattern.\n\n Returns:\n items: Items from the requested range.\n\n Note:\n This method is typically not optimized for a :class:`slice` where\n its `step` is an integer greater than 1.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]|\n +---+---+---+---+---+---+---+---+---+---+---+\n | | 65| 66| 67| 68| | 36| |120|121|122|\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory[9] # -> ord('y') = 121\n 121\n >>> memory[:3].to_blocks()\n [[1, b'AB']]\n >>> memory[3:10].to_blocks()\n [[3, b'CD'], [6, b'$'], [8, b'xy']]\n >>> bytes(memory[3:10:b'.'])\n b'CD.$.xy'\n >>> memory[memory.endex]\n None\n >>> bytes(memory[3:10:3])\n b'C$y'\n >>> memory[3:10:2].to_blocks()\n [[3, b'C'], [6, b'y']]\n >>> bytes(memory[3:10:2])\n Traceback (most recent call last):\n ...\n ValueError: non-contiguous data within range\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_20__getitem__; #endif static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_20__getitem__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_key)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_20__getitem__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_key) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06355: self: Memory,
06356: key: Union[Address, slice],
06357: ) -> Any:
06358: r"""Gets data.
06359:
06360: Arguments:
06361: key (slice or int):
06362: Selection range or address.
06363: If it is a :obj:`slice` with bytes-like `step`, the latter is
06364: interpreted as the filling pattern.
06365:
06366: Returns:
06367: items: Items from the requested range.
06368:
06369: Note:
06370: This method is typically not optimized for a :class:`slice` where
06371: its `step` is an integer greater than 1.
06372:
06373: Examples:
06374: >>> from cbytesparse.c import Memory
06375:
06376: +---+---+---+---+---+---+---+---+---+---+---+
06377: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
06378: +===+===+===+===+===+===+===+===+===+===+===+
06379: | |[A | B | C | D]| |[$]| |[x | y | z]|
06380: +---+---+---+---+---+---+---+---+---+---+---+
06381: | | 65| 66| 67| 68| | 36| |120|121|122|
06382: +---+---+---+---+---+---+---+---+---+---+---+
06383:
06384: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
06385: >>> memory[9] # -> ord('y') = 121
06386: 121
06387: >>> memory[:3].to_blocks()
06388: [[1, b'AB']]
06389: >>> memory[3:10].to_blocks()
06390: [[3, b'CD'], [6, b'$'], [8, b'xy']]
06391: >>> bytes(memory[3:10:b'.'])
06392: b'CD.$.xy'
06393: >>> memory[memory.endex]
06394: None
06395: >>> bytes(memory[3:10:3])
06396: b'C$y'
06397: >>> memory[3:10:2].to_blocks()
06398: [[3, b'C'], [6, b'y']]
06399: >>> bytes(memory[3:10:2])
06400: Traceback (most recent call last):
06401: ...
06402: ValueError: non-contiguous data within range
06403: """
06404:
+06405: return Memory_GetItem(self._, key)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_GetItem(__pyx_v_self->_, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6405, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
06406:
+06407: def __iadd__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_23__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_23__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_22__iadd__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_22__iadd__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_value) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iadd__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06408: self: Memory,
06409: value: Union[AnyBytes, ImmutableMemory],
06410: ) -> 'MutableMemory':
06411:
+06412: Memory_IAdd(self._, value)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_IAdd(__pyx_v_self->_, __pyx_v_value); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 6412, __pyx_L1_error)
+06413: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
06414:
+06415: def __imul__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_25__imul__(PyObject *__pyx_v_self, PyObject *__pyx_v_times); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_25__imul__(PyObject *__pyx_v_self, PyObject *__pyx_v_times) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__imul__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_24__imul__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_times)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_24__imul__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_times) { addr_t __pyx_v_times_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__imul__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.__imul__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06416: self: Memory,
06417: times: int,
06418: ) -> 'MutableMemory':
06419: cdef:
+06420: addr_t times_ = 0 if times < 0 else <addr_t>times
__pyx_t_2 = PyObject_RichCompare(__pyx_v_times, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6420, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6420, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { __pyx_t_1 = 0; } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_times); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6420, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_4); } __pyx_v_times_ = __pyx_t_1;
06421:
+06422: Memory_IMul(self._, times_)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_IMul(__pyx_v_self->_, __pyx_v_times_); if (unlikely(__pyx_t_5 == ((Memory_ *)NULL))) __PYX_ERR(0, 6422, __pyx_L1_error)
+06423: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
06424:
+06425: def __init__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_27__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_11cbytesparse_1c_6Memory_27__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_26__init__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_30generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
06426: self: Memory,
+06427: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None);
+06428: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 6425, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 6425, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_26__init__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex);
06429: ):
06430:
+06431: self._ = Memory_Create(start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Create(__pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 6431, __pyx_L1_error)
__pyx_v_self->_ = __pyx_t_1;
06432:
+06433: def __iter__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_29__iter__(PyObject *__pyx_v_self); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_28__iter__[] = "Iterates over values.\n\n Iterates over values between :attr:`start` and :attr:`endex`.\n\n Yields:\n int: Value as byte integer, or ``None``.\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_28__iter__; #endif static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_29__iter__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_28__iter__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_28__iter__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct____iter__ *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iter__", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct____iter__ *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct____iter__(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct____iter__ *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 6433, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_30generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_Memory___iter, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 6433, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_30generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iter__", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 6433, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct____iter__ { PyObject_HEAD struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; };
06434: self: Memory,
06435: ) -> Iterator[Optional[Value]]:
06436: r"""Iterates over values.
06437:
06438: Iterates over values between :attr:`start` and :attr:`endex`.
06439:
06440: Yields:
06441: int: Value as byte integer, or ``None``.
06442: """
06443:
+06444: yield from self.values()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L4_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 6444, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 6444, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
06445:
+06446: def __len__(
/* Python wrapper */ static Py_ssize_t __pyx_pw_11cbytesparse_1c_6Memory_32__len__(PyObject *__pyx_v_self); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_31__len__[] = "Actual length.\n\n Computes the actual length of the stored items, i.e.\n (:attr:`endex` - :attr:`start`).\n This will consider any trimmings being active.\n\n Returns:\n int: Memory length.\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_31__len__; #endif static Py_ssize_t __pyx_pw_11cbytesparse_1c_6Memory_32__len__(PyObject *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_31__len__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_pf_11cbytesparse_1c_6Memory_31__len__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
06447: self: Memory,
06448: ) -> Address:
06449: r"""Actual length.
06450:
06451: Computes the actual length of the stored items, i.e.
06452: (:attr:`endex` - :attr:`start`).
06453: This will consider any trimmings being active.
06454:
06455: Returns:
06456: int: Memory length.
06457: """
06458:
+06459: return Memory_Length(self._)
__pyx_r = __pyx_f_11cbytesparse_1c_Memory_Length(__pyx_v_self->_); goto __pyx_L0;
06460:
+06461: def __mul__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_34__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_times); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_34__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_times) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__mul__ (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_11cbytesparse_1c_Memory, 1, "self", 0))) __PYX_ERR(0, 6462, __pyx_L1_error) __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_33__mul__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_times)); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_33__mul__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_times) { addr_t __pyx_v_times_; Memory_ *__pyx_v_memory_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__mul__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.__mul__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06462: self: Memory,
06463: times: int,
06464: ) -> Memory:
06465: cdef:
+06466: addr_t times_ = 0 if times < 0 else <addr_t>times
__pyx_t_2 = PyObject_RichCompare(__pyx_v_times, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6466, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6466, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { __pyx_t_1 = 0; } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_times); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6466, __pyx_L1_error) __pyx_t_1 = ((addr_t)__pyx_t_4); } __pyx_v_times_ = __pyx_t_1;
+06467: Memory_* memory_ = Memory_Mul(self._, times_)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Mul(__pyx_v_self->_, __pyx_v_times_); if (unlikely(__pyx_t_5 == ((Memory_ *)NULL))) __PYX_ERR(0, 6467, __pyx_L1_error)
__pyx_v_memory_ = __pyx_t_5;
+06468: Memory memory = Memory_AsObject(memory_)
__pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_memory = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_2); __pyx_t_2 = 0;
06469:
+06470: return memory
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_memory)); __pyx_r = ((PyObject *)__pyx_v_memory); goto __pyx_L0;
06471:
+06472: def __repr__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_36__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_36__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_35__repr__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_35__repr__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_39generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
06473: self: Memory,
06474: ) -> str:
06475:
+06476: return f'<{type(self).__name__}[0x{self.start:X}:0x{self.endex:X}]@0x{id(self):X}>'
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = 127; __Pyx_INCREF(__pyx_kp_u__10); __pyx_t_2 += 1; __Pyx_GIVEREF(__pyx_kp_u__10); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__10); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u_0x); __pyx_t_2 += 3; __Pyx_GIVEREF(__pyx_kp_u_0x); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_0x); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_5, __pyx_n_u_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u_0x_2); __pyx_t_2 += 3; __Pyx_GIVEREF(__pyx_kp_u_0x_2); PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_0x_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_X); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u_0x_3); __pyx_t_2 += 4; __Pyx_GIVEREF(__pyx_kp_u_0x_3); PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_0x_3); __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_5, __pyx_n_u_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__11); __pyx_t_2 += 1; __Pyx_GIVEREF(__pyx_kp_u__11); PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u__11); __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 9, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
06477:
+06478: def __reversed__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_38__reversed__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_37__reversed__[] = "Memory.__reversed__(self: Memory) -> Iterator[Optional[Value]]\nIterates over values, reversed order.\n\n Iterates over values between :attr:`start` and :attr:`endex`, in\n reversed order.\n\n Yields:\n int: Value as byte integer, or ``None``.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_38__reversed__ = {"__reversed__", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_38__reversed__, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_37__reversed__}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_38__reversed__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reversed__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_37__reversed__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_37__reversed__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_1___reversed__ *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reversed__", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_1___reversed__ *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_1___reversed__(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_1___reversed__, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_1___reversed__ *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 6478, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_39generator1, __pyx_codeobj__25, (PyObject *) __pyx_cur_scope, __pyx_n_s_reversed, __pyx_n_s_Memory___reversed, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 6478, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.__reversed__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_39generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reversed__", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 6478, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("__reversed__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__97 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 6478, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__97); __Pyx_GIVEREF(__pyx_tuple__97); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6478, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_38__reversed__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory___reversed, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_reversed, __pyx_t_6) < 0) __PYX_ERR(0, 6478, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__97, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_reversed, 6478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 6478, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_1___reversed__ { PyObject_HEAD struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; };
06479: self: Memory,
+06480: ) -> Iterator[Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 6478, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
06481: r"""Iterates over values, reversed order.
06482:
06483: Iterates over values between :attr:`start` and :attr:`endex`, in
06484: reversed order.
06485:
06486: Yields:
06487: int: Value as byte integer, or ``None``.
06488: """
06489:
+06490: yield from self.rvalues()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rvalues); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L4_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 6490, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 6490, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
06491:
+06492: def __setitem__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_41__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_40__setitem__[] = "Sets data.\n\n Arguments:\n key (slice or int):\n Selection range or address.\n\n value (items):\n Items to write at the selection address.\n If `value` is null, the range is cleared.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+\n | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|\n +===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n | |[A]| | | | |[y | z]| |\n +---+---+---+---+---+---+---+---+---+\n | |[A | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n | |[A]| |[C]| | | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n | |[A | 1 | C]| |[2 | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])\n >>> memory[7:10] = None\n >>> memory.to_blocks()\n [[5, b'AB'], [10, b'yz']]\n >>> memory[7] = b'C'\n >>> memory[9] = b'x'\n >>> memory.to_blocks() == [[5, b'ABC'], [9, b'xyz']]\n True\n >>> memory[6:12:3] = None\n >>> memory.to_blocks()\n [[5, b'A'], [7, b'C'], [10, b'yz']]\n >>> memory[6:13:3] = b'123'\n >>> memory.to_blocks()\n [[5, b'A1C'], [9, b'2yz3']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | | | | | |[A | B | C]| |[x | y | z]|\n +---+---+---+---+---+---+---+---+---+---+---+---+\n |[$]| |[A | B | C]| |[x | y | z]| | | |\n +---+---+---+""---+---+---+---+---+---+---+---+---+\n |[$]| |[A | B | 4 | 5 | 6 | 7 | 8 | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n |[$]| |[A | B | 4 | 5 | < | > | 8 | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])\n >>> memory[0:4] = b'$'\n >>> memory.to_blocks()\n [[0, b'$'], [2, b'ABC'], [6, b'xyz']]\n >>> memory[4:7] = b'45678'\n >>> memory.to_blocks()\n [[0, b'$'], [2, b'AB45678yz']]\n >>> memory[6:8] = b'<>'\n >>> memory.to_blocks()\n [[0, b'$'], [2, b'AB45<>8yz']]\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_40__setitem__; #endif static int __pyx_pw_11cbytesparse_1c_6Memory_41__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_40__setitem__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_40__setitem__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
06493: self: Memory,
06494: key: Union[Address, slice],
06495: value: Optional[Union[AnyBytes, Value, ImmutableMemory]],
06496: ) -> None:
06497: r"""Sets data.
06498:
06499: Arguments:
06500: key (slice or int):
06501: Selection range or address.
06502:
06503: value (items):
06504: Items to write at the selection address.
06505: If `value` is null, the range is cleared.
06506:
06507: Examples:
06508: >>> from cbytesparse.c import Memory
06509:
06510: +---+---+---+---+---+---+---+---+---+
06511: | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|
06512: +===+===+===+===+===+===+===+===+===+
06513: | |[A | B | C]| |[x | y | z]| |
06514: +---+---+---+---+---+---+---+---+---+
06515: | |[A]| | | | |[y | z]| |
06516: +---+---+---+---+---+---+---+---+---+
06517: | |[A | B | C]| |[x | y | z]| |
06518: +---+---+---+---+---+---+---+---+---+
06519: | |[A]| |[C]| | | y | z]| |
06520: +---+---+---+---+---+---+---+---+---+
06521: | |[A | 1 | C]| |[2 | y | z]| |
06522: +---+---+---+---+---+---+---+---+---+
06523:
06524: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])
06525: >>> memory[7:10] = None
06526: >>> memory.to_blocks()
06527: [[5, b'AB'], [10, b'yz']]
06528: >>> memory[7] = b'C'
06529: >>> memory[9] = b'x'
06530: >>> memory.to_blocks() == [[5, b'ABC'], [9, b'xyz']]
06531: True
06532: >>> memory[6:12:3] = None
06533: >>> memory.to_blocks()
06534: [[5, b'A'], [7, b'C'], [10, b'yz']]
06535: >>> memory[6:13:3] = b'123'
06536: >>> memory.to_blocks()
06537: [[5, b'A1C'], [9, b'2yz3']]
06538:
06539: ~~~
06540:
06541: +---+---+---+---+---+---+---+---+---+---+---+---+
06542: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
06543: +===+===+===+===+===+===+===+===+===+===+===+===+
06544: | | | | | |[A | B | C]| |[x | y | z]|
06545: +---+---+---+---+---+---+---+---+---+---+---+---+
06546: |[$]| |[A | B | C]| |[x | y | z]| | | |
06547: +---+---+---+---+---+---+---+---+---+---+---+---+
06548: |[$]| |[A | B | 4 | 5 | 6 | 7 | 8 | y | z]| |
06549: +---+---+---+---+---+---+---+---+---+---+---+---+
06550: |[$]| |[A | B | 4 | 5 | < | > | 8 | y | z]| |
06551: +---+---+---+---+---+---+---+---+---+---+---+---+
06552:
06553: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])
06554: >>> memory[0:4] = b'$'
06555: >>> memory.to_blocks()
06556: [[0, b'$'], [2, b'ABC'], [6, b'xyz']]
06557: >>> memory[4:7] = b'45678'
06558: >>> memory.to_blocks()
06559: [[0, b'$'], [2, b'AB45678yz']]
06560: >>> memory[6:8] = b'<>'
06561: >>> memory.to_blocks()
06562: [[0, b'$'], [2, b'AB45<>8yz']]
06563: """
06564:
+06565: Memory_SetItem(self._, key, value)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_SetItem(__pyx_v_self->_, __pyx_v_key, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
06566:
+06567: def __str__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_43__str__(PyObject *__pyx_v_self); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_42__str__[] = "String representation.\n\n If :attr:`content_size` is lesser than ``STR_MAX_CONTENT_SIZE``, then\n the memory is represented as a list of blocks.\n\n If exceeding, it is equivalent to :meth:`__repr__`.\n\n Returns:\n str: String representation.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [7, b'xyz']])\n >>> str(memory)\n <[[1, b'ABC'], [7, b'xyz']]>\n "; #if CYTHON_COMPILING_IN_CPYTHON struct wrapperbase __pyx_wrapperbase_11cbytesparse_1c_6Memory_42__str__; #endif static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_43__str__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_42__str__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_42__str__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { Memory_ const *__pyx_v_memory; addr_t __pyx_v_size; Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; PyObject *__pyx_v_inner_list = 0; PyObject *__pyx_v_trim_start = NULL; PyObject *__pyx_v_trim_endex = NULL; PyObject *__pyx_v_inner = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_inner_list); __Pyx_XDECREF(__pyx_v_trim_start); __Pyx_XDECREF(__pyx_v_trim_endex); __Pyx_XDECREF(__pyx_v_inner); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
06568: self: Memory,
06569: ) -> str:
06570: r"""String representation.
06571:
06572: If :attr:`content_size` is lesser than ``STR_MAX_CONTENT_SIZE``, then
06573: the memory is represented as a list of blocks.
06574:
06575: If exceeding, it is equivalent to :meth:`__repr__`.
06576:
06577: Returns:
06578: str: String representation.
06579:
06580: Examples:
06581: >>> from cbytesparse.c import Memory
06582:
06583: +---+---+---+---+---+---+---+---+---+---+---+
06584: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
06585: +===+===+===+===+===+===+===+===+===+===+===+
06586: | |[A | B | C]| | | |[x | y | z]| |
06587: +---+---+---+---+---+---+---+---+---+---+---+
06588:
06589: >>> memory = Memory.from_blocks([[1, b'ABC'], [7, b'xyz']])
06590: >>> str(memory)
06591: <[[1, b'ABC'], [7, b'xyz']]>
06592: """
06593: cdef:
+06594: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+06595: addr_t size = Memory_ContentSize(memory)
__pyx_v_size = __pyx_f_11cbytesparse_1c_Memory_ContentSize(__pyx_v_memory);
06596: addr_t start
06597: addr_t endex
06598: const Rack_* blocks
06599: size_t block_index
06600: const Block_* block
06601: list inner_list
06602:
+06603: if size < STR_MAX_CONTENT_SIZE:
__pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_STR_MAX_CONTENT_SIZE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6603, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 6603, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_5) { /* … */ }
+06604: trim_start = f'{memory.trim_start}, ' if memory.trim_start_ else ''
if ((__pyx_v_memory->trim_start_ != 0)) { __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_memory->trim_start); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_t_2, __pyx_kp_u__26); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_t_3; __pyx_t_3 = 0; } else { __Pyx_INCREF(__pyx_kp_u__12); __pyx_t_4 = __pyx_kp_u__12; } __pyx_v_trim_start = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+06605: trim_endex = f', {memory.trim_endex}' if memory.trim_endex_ else ''
if ((__pyx_v_memory->trim_endex_ != 0)) { __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_memory->trim_endex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u__26, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_t_3; __pyx_t_3 = 0; } else { __Pyx_INCREF(__pyx_kp_u__12); __pyx_t_4 = __pyx_kp_u__12; } __pyx_v_trim_endex = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
06606:
+06607: inner_list = []
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_inner_list = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+06608: blocks = memory.blocks
__pyx_t_6 = __pyx_v_memory->blocks; __pyx_v_blocks = __pyx_t_6;
06609:
+06610: for block_index in range(Rack_Length(blocks)):
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks); __pyx_t_8 = __pyx_t_7; for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { __pyx_v_block_index = __pyx_t_9;
+06611: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+06612: inner_list.append(f'[{Block_Start(block)}, {Block_Bytes(block)!r}]')
__pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = 0; __pyx_t_11 = 127; __Pyx_INCREF(__pyx_kp_u__27); __pyx_t_10 += 1; __Pyx_GIVEREF(__pyx_kp_u__27); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u__27); __pyx_t_3 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_11; __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __pyx_t_2 = 0; __Pyx_INCREF(__pyx_kp_u__26); __pyx_t_10 += 2; __Pyx_GIVEREF(__pyx_kp_u__26); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__26); __pyx_t_2 = __pyx_f_11cbytesparse_1c_Block_Bytes(__pyx_v_block); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_11; __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_kp_u__28); __pyx_t_10 += 1; __Pyx_GIVEREF(__pyx_kp_u__28); PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_kp_u__28); __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_inner_list, __pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 6612, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; }
06613:
+06614: inner = ', '.join(inner_list)
__pyx_t_3 = PyUnicode_Join(__pyx_kp_u__26, __pyx_v_inner_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_inner = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
06615:
+06616: return f'<{trim_start}[{inner}]{trim_endex}>'
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = 0; __pyx_t_11 = 127; __Pyx_INCREF(__pyx_kp_u__10); __pyx_t_10 += 1; __Pyx_GIVEREF(__pyx_kp_u__10); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u__10); __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_trim_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11; __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__27); __pyx_t_10 += 1; __Pyx_GIVEREF(__pyx_kp_u__27); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__27); __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_inner); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11; __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__28); __pyx_t_10 += 1; __Pyx_GIVEREF(__pyx_kp_u__28); PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_kp_u__28); __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_trim_endex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_11; __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__11); __pyx_t_10 += 1; __Pyx_GIVEREF(__pyx_kp_u__11); PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_kp_u__11); __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_3, 7, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
06617: else:
+06618: return repr(self)
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyObject_Repr(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; }
06619:
+06620: def _block_index_at(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_45_block_index_at(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_44_block_index_at[] = "Memory._block_index_at(self: Memory, address: Address) -> Optional[BlockIndex]\nLocates the block enclosing an address.\n\n Returns the index of the block enclosing the given address.\n\n Arguments:\n address (int):\n Address of the target item.\n\n Returns:\n int: Block index if found, ``None`` otherwise.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | | 0 | 0 | 0 | 0 | | 1 | | 2 | 2 | 2 | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> [memory._block_index_at(i) for i in range(12)]\n [None, 0, 0, 0, 0, None, 1, None, 2, 2, 2, None]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_45_block_index_at = {"_block_index_at", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_45_block_index_at, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_44_block_index_at}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_45_block_index_at(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_block_index_at (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_44_block_index_at(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_44_block_index_at(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { Py_ssize_t __pyx_v_block_index; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_block_index_at", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory._block_index_at", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__98 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_block_index); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 6620, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__98); __Pyx_GIVEREF(__pyx_tuple__98); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6620, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_45_block_index_at, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory__block_index_at, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_block_index_at, __pyx_t_2) < 0) __PYX_ERR(0, 6620, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_block_index_at, 6620, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 6620, __pyx_L1_error)
06621: self: Memory,
+06622: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_1) < 0) __PYX_ERR(0, 6620, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+06623: ) -> Optional[BlockIndex]:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_BlockIndex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_2) < 0) __PYX_ERR(0, 6620, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
06624: r"""Locates the block enclosing an address.
06625:
06626: Returns the index of the block enclosing the given address.
06627:
06628: Arguments:
06629: address (int):
06630: Address of the target item.
06631:
06632: Returns:
06633: int: Block index if found, ``None`` otherwise.
06634:
06635: Examples:
06636: >>> from cbytesparse.c import Memory
06637:
06638: +---+---+---+---+---+---+---+---+---+---+---+---+
06639: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
06640: +===+===+===+===+===+===+===+===+===+===+===+===+
06641: | |[A | B | C | D]| |[$]| |[x | y | z]| |
06642: +---+---+---+---+---+---+---+---+---+---+---+---+
06643: | | 0 | 0 | 0 | 0 | | 1 | | 2 | 2 | 2 | |
06644: +---+---+---+---+---+---+---+---+---+---+---+---+
06645:
06646: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
06647: >>> [memory._block_index_at(i) for i in range(12)]
06648: [None, 0, 0, 0, 0, None, 1, None, 2, 2, 2, None]
06649: """
06650: cdef:
06651: ssize_t block_index
06652:
+06653: block_index = Rack_IndexAt(self._.blocks, address)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6653, __pyx_L1_error) __pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexAt(__pyx_v_self->_->blocks, __pyx_t_1);
+06654: return None if block_index < 0 else block_index
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_block_index < 0) != 0)) { __Pyx_INCREF(Py_None); __pyx_t_2 = Py_None; } else { __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_block_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
06655:
+06656: def _block_index_endex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_47_block_index_endex(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_46_block_index_endex[] = "Memory._block_index_endex(self: Memory, address: Address) -> BlockIndex\nLocates the last block before an address range.\n\n Returns the index of the last block whose end address is lesser than or\n equal to `address`.\n\n Useful to find the termination block index in a ranged search.\n\n Arguments:\n address (int):\n Exclusive end address of the scanned range.\n\n Returns:\n int: First block index before `address`.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 3 | 3 | 3 | 3 |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> [memory._block_index_endex(i) for i in range(12)]\n [0, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_47_block_index_endex = {"_block_index_endex", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_47_block_index_endex, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_46_block_index_endex}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_47_block_index_endex(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_block_index_endex (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_46_block_index_endex(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_46_block_index_endex(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_block_index_endex", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory._block_index_endex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__100 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 6656, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__100); __Pyx_GIVEREF(__pyx_tuple__100); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6656, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_47_block_index_endex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory__block_index_endex, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_block_index_endex, __pyx_t_6) < 0) __PYX_ERR(0, 6656, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__100, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_block_index_endex, 6656, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(0, 6656, __pyx_L1_error)
06657: self: Memory,
+06658: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 6656, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+06659: ) -> BlockIndex:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_BlockIndex); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 6656, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
06660: r"""Locates the last block before an address range.
06661:
06662: Returns the index of the last block whose end address is lesser than or
06663: equal to `address`.
06664:
06665: Useful to find the termination block index in a ranged search.
06666:
06667: Arguments:
06668: address (int):
06669: Exclusive end address of the scanned range.
06670:
06671: Returns:
06672: int: First block index before `address`.
06673:
06674: Examples:
06675: >>> from cbytesparse.c import Memory
06676:
06677: +---+---+---+---+---+---+---+---+---+---+---+---+
06678: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
06679: +===+===+===+===+===+===+===+===+===+===+===+===+
06680: | |[A | B | C | D]| |[$]| |[x | y | z]| |
06681: +---+---+---+---+---+---+---+---+---+---+---+---+
06682: | 0 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 3 | 3 | 3 | 3 |
06683: +---+---+---+---+---+---+---+---+---+---+---+---+
06684:
06685: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
06686: >>> [memory._block_index_endex(i) for i in range(12)]
06687: [0, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3]
06688: """
06689:
+06690: return Rack_IndexEndex(self._.blocks, address)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6690, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_self->_->blocks, __pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
06691:
+06692: def _block_index_start(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_49_block_index_start(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_48_block_index_start[] = "Memory._block_index_start(self: Memory, address: Address) -> BlockIndex\nLocates the first block inside of an address range.\n\n Returns the index of the first block whose start address is greater than\n or equal to `address`.\n\n Useful to find the initial block index in a ranged search.\n\n Arguments:\n address (int):\n Inclusive start address of the scanned range.\n\n Returns:\n int: First block index since `address`.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 2 | 2 | 2 | 2 | 3 |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> [memory._block_index_start(i) for i in range(12)]\n [0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_49_block_index_start = {"_block_index_start", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_49_block_index_start, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_48_block_index_start}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_49_block_index_start(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_block_index_start (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_48_block_index_start(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_48_block_index_start(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_block_index_start", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory._block_index_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__102 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(0, 6692, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__102); __Pyx_GIVEREF(__pyx_tuple__102); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6692, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_49_block_index_start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory__block_index_start, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_block_index_start, __pyx_t_2) < 0) __PYX_ERR(0, 6692, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__102, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_block_index_start, 6692, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(0, 6692, __pyx_L1_error)
06693: self: Memory,
+06694: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_2) < 0) __PYX_ERR(0, 6692, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+06695: ) -> BlockIndex:
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_BlockIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_2) < 0) __PYX_ERR(0, 6692, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
06696: r"""Locates the first block inside of an address range.
06697:
06698: Returns the index of the first block whose start address is greater than
06699: or equal to `address`.
06700:
06701: Useful to find the initial block index in a ranged search.
06702:
06703: Arguments:
06704: address (int):
06705: Inclusive start address of the scanned range.
06706:
06707: Returns:
06708: int: First block index since `address`.
06709:
06710: Examples:
06711: >>> from cbytesparse.c import Memory
06712:
06713: +---+---+---+---+---+---+---+---+---+---+---+---+
06714: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
06715: +===+===+===+===+===+===+===+===+===+===+===+===+
06716: | |[A | B | C | D]| |[$]| |[x | y | z]| |
06717: +---+---+---+---+---+---+---+---+---+---+---+---+
06718: | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 2 | 2 | 2 | 2 | 3 |
06719: +---+---+---+---+---+---+---+---+---+---+---+---+
06720:
06721: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
06722: >>> [memory._block_index_start(i) for i in range(12)]
06723: [0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3]
06724: """
06725:
+06726: return Rack_IndexStart(self._.blocks, address)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6726, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_self->_->blocks, __pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
06727:
+06728: def _pretrim_endex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_51_pretrim_endex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_50_pretrim_endex[] = "Memory._pretrim_endex(self: Memory, start_min: Optional[Address], size: Address) -> None\nTrims final data.\n\n Low-level method to manage trimming of data starting from an address.\n\n Arguments:\n start_min (int):\n Starting address of the erasure range.\n If ``None``, :attr:`trim_endex` minus `size` is considered.\n\n size (int):\n Size of the erasure range.\n\n See Also:\n :meth:`_pretrim_endex_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_51_pretrim_endex = {"_pretrim_endex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_51_pretrim_endex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_50_pretrim_endex}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_51_pretrim_endex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start_min = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_endex (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start_min,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start_min)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("_pretrim_endex", 1, 2, 2, 1); __PYX_ERR(0, 6728, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_pretrim_endex") < 0)) __PYX_ERR(0, 6728, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_start_min = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_pretrim_endex", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 6728, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_endex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_50_pretrim_endex(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start_min, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_50_pretrim_endex(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start_min, PyObject *__pyx_v_size) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_endex", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_endex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__104 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start_min, __pyx_n_s_size); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 6728, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__104); __Pyx_GIVEREF(__pyx_tuple__104); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6728, __pyx_L1_error) /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_51_pretrim_endex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory__pretrim_endex, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_pretrim_endex, __pyx_t_1) < 0) __PYX_ERR(0, 6728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__104, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pretrim_endex, 6728, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(0, 6728, __pyx_L1_error)
06729: self: Memory,
+06730: start_min: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start_min, __pyx_t_1) < 0) __PYX_ERR(0, 6728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+06731: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_t_1) < 0) __PYX_ERR(0, 6728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+06732: ) -> None:
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 6728, __pyx_L1_error)
06733: r"""Trims final data.
06734:
06735: Low-level method to manage trimming of data starting from an address.
06736:
06737: Arguments:
06738: start_min (int):
06739: Starting address of the erasure range.
06740: If ``None``, :attr:`trim_endex` minus `size` is considered.
06741:
06742: size (int):
06743: Size of the erasure range.
06744:
06745: See Also:
06746: :meth:`_pretrim_endex_backup`
06747: """
06748:
+06749: Memory_PretrimEndex(self._, start_min, size)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_PretrimEndex(__pyx_v_self->_, __pyx_v_start_min, __pyx_v_size); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6749, __pyx_L1_error)
06750:
+06751: def _pretrim_endex_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_53_pretrim_endex_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_52_pretrim_endex_backup[] = "Memory._pretrim_endex_backup(self: Memory, start_min: Optional[Address], size: Address) -> ImmutableMemory\nBackups a `_pretrim_endex()` operation.\n\n Arguments:\n start_min (int):\n Starting address of the erasure range.\n If ``None``, :attr:`trim_endex` minus `size` is considered.\n\n size (int):\n Size of the erasure range.\n\n Returns:\n :obj:`ImmutableMemory`: Backup memory region.\n\n See Also:\n :meth:`_pretrim_endex`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_53_pretrim_endex_backup = {"_pretrim_endex_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_53_pretrim_endex_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_52_pretrim_endex_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_53_pretrim_endex_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start_min = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_endex_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start_min,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start_min)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("_pretrim_endex_backup", 1, 2, 2, 1); __PYX_ERR(0, 6751, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_pretrim_endex_backup") < 0)) __PYX_ERR(0, 6751, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_start_min = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_pretrim_endex_backup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 6751, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_endex_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_52_pretrim_endex_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start_min, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_52_pretrim_endex_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start_min, PyObject *__pyx_v_size) { addr_t __pyx_v_start_min_; addr_t __pyx_v_size_; Memory_ const *__pyx_v_memory; addr_t __pyx_v_start; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_endex_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_endex_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__106 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_start_min, __pyx_n_s_size, __pyx_n_s_start_min_2, __pyx_n_s_size_2, __pyx_n_s_memory, __pyx_n_s_start); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__106); __Pyx_GIVEREF(__pyx_tuple__106); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6751, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_53_pretrim_endex_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory__pretrim_endex_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__107)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_pretrim_endex_backup, __pyx_t_6) < 0) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__107 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__106, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pretrim_endex_backup, 6751, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__107)) __PYX_ERR(0, 6751, __pyx_L1_error)
06752: self: Memory,
+06753: start_min: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start_min, __pyx_t_6) < 0) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+06754: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_size, __pyx_t_6) < 0) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+06755: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
06756: r"""Backups a `_pretrim_endex()` operation.
06757:
06758: Arguments:
06759: start_min (int):
06760: Starting address of the erasure range.
06761: If ``None``, :attr:`trim_endex` minus `size` is considered.
06762:
06763: size (int):
06764: Size of the erasure range.
06765:
06766: Returns:
06767: :obj:`ImmutableMemory`: Backup memory region.
06768:
06769: See Also:
06770: :meth:`_pretrim_endex`
06771: """
06772: cdef:
06773: addr_t start_min_
+06774: addr_t size_ = <addr_t>size
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6774, __pyx_L1_error) __pyx_v_size_ = ((addr_t)__pyx_t_1);
+06775: const Memory_* memory = self._
__pyx_t_2 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_2;
06776: addr_t start
06777:
+06778: if memory.trim_endex_ and size_ > 0:
__pyx_t_4 = (__pyx_v_memory->trim_endex_ != 0); if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = ((__pyx_v_size_ > 0) != 0); __pyx_t_3 = __pyx_t_4; __pyx_L4_bool_binop_done:; if (__pyx_t_3) { /* … */ }
+06779: start = memory.trim_endex
__pyx_t_1 = __pyx_v_memory->trim_endex; __pyx_v_start = __pyx_t_1;
+06780: CheckSubAddrU(start, size)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6780, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_start, __pyx_t_1); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6780, __pyx_L1_error)
+06781: start -= size
__pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyNumber_InPlaceSubtract(__pyx_t_6, __pyx_v_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_7); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6781, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_start = __pyx_t_1;
+06782: if start_min is not None:
__pyx_t_3 = (__pyx_v_start_min != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* … */ }
+06783: start_min_ = <addr_t>start_min
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start_min); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6783, __pyx_L1_error) __pyx_v_start_min_ = ((addr_t)__pyx_t_1);
+06784: if start < start_min_:
__pyx_t_4 = ((__pyx_v_start < __pyx_v_start_min_) != 0); if (__pyx_t_4) { /* … */ }
+06785: start = start_min_
__pyx_v_start = __pyx_v_start_min_;
+06786: return Memory_Extract_(memory, start, Memory_Endex(memory), 0, NULL, 1, True)
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_memory, __pyx_v_start, __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_memory), 0, NULL, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6786, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
06787: else:
+06788: return Memory()
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0; }
06789:
+06790: def _pretrim_start(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_55_pretrim_start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_54_pretrim_start[] = "Memory._pretrim_start(self: Memory, endex_max: Optional[Address], size: Address) -> None\nTrims initial data.\n\n Low-level method to manage trimming of data starting from an address.\n\n Arguments:\n endex_max (int):\n Exclusive end address of the erasure range.\n If ``None``, :attr:`trim_start` plus `size` is considered.\n\n size (int):\n Size of the erasure range.\n\n See Also:\n :meth:`_pretrim_start_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_55_pretrim_start = {"_pretrim_start", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_55_pretrim_start, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_54_pretrim_start}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_55_pretrim_start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_endex_max = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_start (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_endex_max,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex_max)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("_pretrim_start", 1, 2, 2, 1); __PYX_ERR(0, 6790, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_pretrim_start") < 0)) __PYX_ERR(0, 6790, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_endex_max = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_pretrim_start", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 6790, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_54_pretrim_start(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_endex_max, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_54_pretrim_start(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_endex_max, PyObject *__pyx_v_size) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_start", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__108 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_endex_max, __pyx_n_s_size); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(0, 6790, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__108); __Pyx_GIVEREF(__pyx_tuple__108); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6790, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_55_pretrim_start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory__pretrim_start, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_pretrim_start, __pyx_t_2) < 0) __PYX_ERR(0, 6790, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pretrim_start, 6790, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(0, 6790, __pyx_L1_error)
06791: self: Memory,
+06792: endex_max: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex_max, __pyx_t_2) < 0) __PYX_ERR(0, 6790, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+06793: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_size, __pyx_t_2) < 0) __PYX_ERR(0, 6790, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+06794: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 6790, __pyx_L1_error)
06795: r"""Trims initial data.
06796:
06797: Low-level method to manage trimming of data starting from an address.
06798:
06799: Arguments:
06800: endex_max (int):
06801: Exclusive end address of the erasure range.
06802: If ``None``, :attr:`trim_start` plus `size` is considered.
06803:
06804: size (int):
06805: Size of the erasure range.
06806:
06807: See Also:
06808: :meth:`_pretrim_start_backup`
06809: """
06810:
+06811: Memory_PretrimStart(self._, endex_max, size)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_PretrimStart(__pyx_v_self->_, __pyx_v_endex_max, __pyx_v_size); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6811, __pyx_L1_error)
06812:
+06813: def _pretrim_start_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_57_pretrim_start_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_56_pretrim_start_backup[] = "Memory._pretrim_start_backup(self: Memory, endex_max: Optional[Address], size: Address) -> ImmutableMemory\nBackups a `_pretrim_start()` operation.\n\n Arguments:\n endex_max (int):\n Exclusive end address of the erasure range.\n If ``None``, :attr:`trim_start` plus `size` is considered.\n\n size (int):\n Size of the erasure range.\n\n Returns:\n :obj:`ImmutableMemory`: Backup memory region.\n\n See Also:\n :meth:`_pretrim_start`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_57_pretrim_start_backup = {"_pretrim_start_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_57_pretrim_start_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_56_pretrim_start_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_57_pretrim_start_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_endex_max = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_start_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_endex_max,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex_max)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("_pretrim_start_backup", 1, 2, 2, 1); __PYX_ERR(0, 6813, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_pretrim_start_backup") < 0)) __PYX_ERR(0, 6813, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_endex_max = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_pretrim_start_backup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 6813, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_start_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_56_pretrim_start_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_endex_max, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_56_pretrim_start_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_endex_max, PyObject *__pyx_v_size) { addr_t __pyx_v_endex_max_; addr_t __pyx_v_size_; Memory_ const *__pyx_v_memory; addr_t __pyx_v_endex; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_pretrim_start_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.Memory._pretrim_start_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__110 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_endex_max, __pyx_n_s_size, __pyx_n_s_endex_max_2, __pyx_n_s_size_2, __pyx_n_s_memory, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(0, 6813, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__110); __Pyx_GIVEREF(__pyx_tuple__110); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6813, __pyx_L1_error) /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_57_pretrim_start_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory__pretrim_start_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_pretrim_start_backup, __pyx_t_1) < 0) __PYX_ERR(0, 6813, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pretrim_start_backup, 6813, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(0, 6813, __pyx_L1_error)
06814: self: Memory,
+06815: endex_max: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex_max, __pyx_t_1) < 0) __PYX_ERR(0, 6813, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+06816: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_t_1) < 0) __PYX_ERR(0, 6813, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+06817: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 6813, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
06818: r"""Backups a `_pretrim_start()` operation.
06819:
06820: Arguments:
06821: endex_max (int):
06822: Exclusive end address of the erasure range.
06823: If ``None``, :attr:`trim_start` plus `size` is considered.
06824:
06825: size (int):
06826: Size of the erasure range.
06827:
06828: Returns:
06829: :obj:`ImmutableMemory`: Backup memory region.
06830:
06831: See Also:
06832: :meth:`_pretrim_start`
06833: """
06834: cdef:
06835: addr_t endex_max_
+06836: addr_t size_ = <addr_t>size
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6836, __pyx_L1_error) __pyx_v_size_ = ((addr_t)__pyx_t_1);
+06837: const Memory_* memory = self._
__pyx_t_2 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_2;
06838: addr_t endex
06839:
+06840: if memory.trim_start_ and size_ > 0:
__pyx_t_4 = (__pyx_v_memory->trim_start_ != 0); if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = ((__pyx_v_size_ > 0) != 0); __pyx_t_3 = __pyx_t_4; __pyx_L4_bool_binop_done:; if (__pyx_t_3) { /* … */ }
+06841: endex = memory.trim_start
__pyx_t_1 = __pyx_v_memory->trim_start; __pyx_v_endex = __pyx_t_1;
+06842: CheckAddAddrU(endex, size)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_size); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6842, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_endex, __pyx_t_1); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6842, __pyx_L1_error)
+06843: endex += size
__pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_v_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_7); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6843, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_endex = __pyx_t_1;
+06844: if endex_max is not None:
__pyx_t_3 = (__pyx_v_endex_max != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* … */ }
+06845: endex_max_ = <addr_t>endex_max
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex_max); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6845, __pyx_L1_error) __pyx_v_endex_max_ = ((addr_t)__pyx_t_1);
+06846: if endex > endex_max_:
__pyx_t_4 = ((__pyx_v_endex > __pyx_v_endex_max_) != 0); if (__pyx_t_4) { /* … */ }
+06847: endex = endex_max_
__pyx_v_endex = __pyx_v_endex_max_;
+06848: return Memory_Extract_(memory, Memory_Start(memory), endex, 0, NULL, 1, True)
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_memory, __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory), __pyx_v_endex, 0, NULL, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
06849: else:
+06850: return Memory()
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0; }
06851:
+06852: def append(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_59append(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_58append[] = "Memory.append(self: Memory, item: Union[AnyBytes, Value]) -> None\nAppends a single item.\n\n Arguments:\n item (int):\n Value to append. Can be a single byte string or integer.\n\n See Also:\n :meth:`append_backup`\n :meth:`append_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> memory = Memory()\n >>> memory.append(b'$')\n >>> memory.to_blocks()\n [[0, b'$']]\n\n ~~~\n\n >>> memory = Memory()\n >>> memory.append(3)\n >>> memory.to_blocks()\n [[0, b'\\x03']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_59append = {"append", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_59append, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_58append}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_59append(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("append (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_58append(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_item)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_58append(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("append", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.append", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__112 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_item); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(0, 6852, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__112); __Pyx_GIVEREF(__pyx_tuple__112); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6852, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_59append, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_append, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__113)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_append, __pyx_t_6) < 0) __PYX_ERR(0, 6852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__113 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__112, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_append, 6852, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(0, 6852, __pyx_L1_error)
06853: self: Memory,
+06854: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 6852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+06855: ) -> None:
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 6852, __pyx_L1_error)
06856: r"""Appends a single item.
06857:
06858: Arguments:
06859: item (int):
06860: Value to append. Can be a single byte string or integer.
06861:
06862: See Also:
06863: :meth:`append_backup`
06864: :meth:`append_restore`
06865:
06866: Examples:
06867: >>> from cbytesparse.c import Memory
06868:
06869: >>> memory = Memory()
06870: >>> memory.append(b'$')
06871: >>> memory.to_blocks()
06872: [[0, b'$']]
06873:
06874: ~~~
06875:
06876: >>> memory = Memory()
06877: >>> memory.append(3)
06878: >>> memory.to_blocks()
06879: [[0, b'\x03']]
06880: """
06881:
+06882: return Memory_Append(self._, item)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Append(__pyx_v_self->_, __pyx_v_item); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6882, __pyx_L1_error) __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
06883:
06884: # noinspection PyMethodMayBeStatic
+06885: def append_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_61append_backup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_60append_backup[] = "Memory.append_backup(self: Memory) -> None\nBackups an `append()` operation.\n\n Returns:\n None: Nothing.\n\n See Also:\n :meth:`append`\n :meth:`append_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_61append_backup = {"append_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_61append_backup, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_60append_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_61append_backup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("append_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_60append_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_60append_backup(CYTHON_UNUSED struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("append_backup", 0); /* … */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__114 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(0, 6885, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__114); __Pyx_GIVEREF(__pyx_tuple__114); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6885, __pyx_L1_error) /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_61append_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_append_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__115)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_append_backup, __pyx_t_1) < 0) __PYX_ERR(0, 6885, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__115 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__114, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_append_backup, 6885, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__115)) __PYX_ERR(0, 6885, __pyx_L1_error)
06886: self: Memory,
+06887: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 6885, __pyx_L1_error)
06888: r"""Backups an `append()` operation.
06889:
06890: Returns:
06891: None: Nothing.
06892:
06893: See Also:
06894: :meth:`append`
06895: :meth:`append_restore`
06896: """
06897:
+06898: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
06899:
+06900: def append_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_63append_restore(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_62append_restore[] = "Memory.append_restore(self: Memory) -> None\nRestores an `append()` operation.\n\n See Also:\n :meth:`append`\n :meth:`append_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_63append_restore = {"append_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_63append_restore, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_62append_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_63append_restore(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("append_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_62append_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_62append_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("append_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.append_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__116 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(0, 6900, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__116); __Pyx_GIVEREF(__pyx_tuple__116); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6900, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_63append_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_append_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__117)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_append_restore, __pyx_t_6) < 0) __PYX_ERR(0, 6900, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__117 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__116, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_append_restore, 6900, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__117)) __PYX_ERR(0, 6900, __pyx_L1_error)
06901: self: Memory,
+06902: ) -> None:
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 6900, __pyx_L1_error)
06903: r"""Restores an `append()` operation.
06904:
06905: See Also:
06906: :meth:`append`
06907: :meth:`append_backup`
06908: """
06909:
+06910: Memory_PopLast_(self._)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_PopLast_(__pyx_v_self->_); if (unlikely(__pyx_t_1 == ((int)-2))) __PYX_ERR(0, 6910, __pyx_L1_error)
06911:
+06912: def block_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_65block_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_64block_span[] = "Memory.block_span(self: Memory, address: Address) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]\nSpan of block data.\n\n It searches for the biggest chunk of data adjacent to the given\n address.\n\n If the address is within a gap, its bounds are returned, and its\n value is ``None``.\n\n If the address is before or after any data, bounds are ``None``.\n\n Arguments:\n address (int):\n Reference address.\n\n Returns:\n tuple: Start bound, exclusive end bound, and reference value.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> memory = Memory()\n >>> memory.block_span(0)\n (None, None, None)\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n |[A | B | B | B | C]| | |[C | C | D]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n | 65| 66| 66| 66| 67| | | 67| 67| 68| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[0, b'ABBBC'], [7, b'CCD']])\n >>> memory.block_span(2)\n (0, 5, 66)\n >>> memory.block_span(4)\n (0, 5, 67)\n >>> memory.block_span(5)\n (5, 7, None)\n >>> memory.block_span(10)\n (10, None, None)\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_65block_span = {"block_span", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_65block_span, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_64block_span}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_65block_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("block_span (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_64block_span(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_64block_span(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { addr_t __pyx_v_address_; Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; byte_t __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("block_span", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.Memory.block_span", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_68generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__118 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_address_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_value); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__118); __Pyx_GIVEREF(__pyx_tuple__118); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 6912, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_65block_span, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_block_span, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__119)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_block_span, __pyx_t_9) < 0) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__119 = (PyObject*)__Pyx_PyCode_New(2, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_block_span, 6912, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__119)) __PYX_ERR(0, 6912, __pyx_L1_error)
06913: self: Memory,
+06914: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_1) < 0) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+06915: ) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Address); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
06916: r"""Span of block data.
06917:
06918: It searches for the biggest chunk of data adjacent to the given
06919: address.
06920:
06921: If the address is within a gap, its bounds are returned, and its
06922: value is ``None``.
06923:
06924: If the address is before or after any data, bounds are ``None``.
06925:
06926: Arguments:
06927: address (int):
06928: Reference address.
06929:
06930: Returns:
06931: tuple: Start bound, exclusive end bound, and reference value.
06932:
06933: Examples:
06934: >>> from cbytesparse.c import Memory
06935:
06936: >>> memory = Memory()
06937: >>> memory.block_span(0)
06938: (None, None, None)
06939:
06940: ~~~
06941:
06942: +---+---+---+---+---+---+---+---+---+---+---+
06943: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
06944: +===+===+===+===+===+===+===+===+===+===+===+
06945: |[A | B | B | B | C]| | |[C | C | D]| |
06946: +---+---+---+---+---+---+---+---+---+---+---+
06947: | 65| 66| 66| 66| 67| | | 67| 67| 68| |
06948: +---+---+---+---+---+---+---+---+---+---+---+
06949:
06950: >>> memory = Memory.from_blocks([[0, b'ABBBC'], [7, b'CCD']])
06951: >>> memory.block_span(2)
06952: (0, 5, 66)
06953: >>> memory.block_span(4)
06954: (0, 5, 67)
06955: >>> memory.block_span(5)
06956: (5, 7, None)
06957: >>> memory.block_span(10)
06958: (10, None, None)
06959: """
06960: cdef:
+06961: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6961, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
+06962: const Rack_* blocks = self._.blocks
__pyx_t_2 = __pyx_v_self->_->blocks; __pyx_v_blocks = __pyx_t_2;
+06963: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
06964: size_t block_index
06965: const Block_* block
06966: addr_t block_start
06967: addr_t block_endex
06968: byte_t value
06969:
+06970: block_index = Rack_IndexStart(blocks, address_)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_address_);
06971:
+06972: if block_index < block_count:
__pyx_t_3 = ((__pyx_v_block_index < __pyx_v_block_count) != 0); if (__pyx_t_3) { /* … */ }
+06973: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+06974: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+06975: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
06976:
+06977: if block_start <= address_ < block_endex:
__pyx_t_3 = (__pyx_v_block_start <= __pyx_v_address_); if (__pyx_t_3) { __pyx_t_3 = (__pyx_v_address_ < __pyx_v_block_endex); } __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* … */ }
06978: # Address within a block
+06979: CheckSubAddrU(address_, block_start)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_address_, __pyx_v_block_start); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6979, __pyx_L1_error)
+06980: CheckAddrToSizeU(address_ - block_start)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU((__pyx_v_address_ - __pyx_v_block_start)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 6980, __pyx_L1_error)
+06981: value = Block_Get__(block, <size_t>(address_ - block_start))
__pyx_v_value = __pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, ((size_t)(__pyx_v_address_ - __pyx_v_block_start)));
+06982: return block_start, block_endex, value # block span
__Pyx_XDECREF(__pyx_r); __pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_endex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_From_byte_t(__pyx_v_value); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0;
06983:
+06984: elif block_index:
__pyx_t_4 = (__pyx_v_block_index != 0); if (__pyx_t_4) { /* … */ }
06985: # Address within a gap
+06986: block_endex = block_start # end gap before next block
__pyx_v_block_endex = __pyx_v_block_start;
+06987: block = Rack_Get__(blocks, block_index - 1)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, (__pyx_v_block_index - 1));
+06988: block_start = Block_Endex(block) # start gap after previous block
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+06989: return block_start, block_endex, None # gap span
__Pyx_XDECREF(__pyx_r); __pyx_t_9 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_endex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_7, 2, Py_None); __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
06990:
06991: else:
06992: # Address before content
+06993: return None, block_start, None # open left
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_start); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_8, 0, Py_None); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_8, 2, Py_None); __pyx_t_7 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0; }
06994:
06995: else:
06996: # Address after content
+06997: if block_count:
/*else*/ { __pyx_t_4 = (__pyx_v_block_count != 0); if (__pyx_t_4) { /* … */ }
+06998: block = Rack_Last__(blocks)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks);
+06999: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+07000: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+07001: return block_endex, None, None # open right
__Pyx_XDECREF(__pyx_r); __pyx_t_8 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_endex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7001, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7001, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_7, 1, Py_None); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_7, 2, Py_None); __pyx_t_8 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
07002:
07003: else:
+07004: return None, None, None # fully open
/*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_tuple__29); __pyx_r = __pyx_tuple__29; goto __pyx_L0; } } /* … */ __pyx_tuple__29 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 7004, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29);
+07005: def blocks(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_67blocks(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_66blocks[] = "Memory.blocks(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[Tuple[Address, memoryview]]\nIterates over blocks.\n\n Iterates over data blocks within an address range.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Yields:\n (start, memoryview): Start and data view of each block/slice.\n\n See Also:\n :meth:`intervals`\n :meth:`to_blocks`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B]| | |[x]| |[1 | 2 | 3]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])\n >>> [[s, bytes(d)] for s, d in memory.blocks()]\n [[1, b'AB'], [5, b'x'], [7, b'123']]\n >>> [[s, bytes(d)] for s, d in memory.blocks(2, 9)]\n [[2, b'B'], [5, b'x'], [7, b'12']]\n >>> [[s, bytes(d)] for s, d in memory.blocks(3, 5)]\n []\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_67blocks = {"blocks", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_67blocks, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_66blocks}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_67blocks(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("blocks (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_66blocks(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_2_blocks *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("blocks", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_2_blocks *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_2_blocks(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_2_blocks, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_2_blocks *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 7005, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_68generator2, __pyx_codeobj__30, (PyObject *) __pyx_cur_scope, __pyx_n_s_blocks, __pyx_n_s_Memory_blocks, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_68generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("blocks", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7005, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__120 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_slice_start, __pyx_n_s_slice_endex, __pyx_n_s_slice_view); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__120); __Pyx_GIVEREF(__pyx_tuple__120); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7005, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_67blocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_blocks, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_blocks, __pyx_t_7) < 0) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(3, 0, 16, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__120, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_blocks, 7005, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 7005, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_2_blocks { PyObject_HEAD Block_ const *__pyx_v_block; size_t __pyx_v_block_count; addr_t __pyx_v_block_endex; size_t __pyx_v_block_index; size_t __pyx_v_block_index_endex; size_t __pyx_v_block_index_start; addr_t __pyx_v_block_start; Rack_ const *__pyx_v_blocks; PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; addr_t __pyx_v_slice_endex; addr_t __pyx_v_slice_start; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_slice_view; PyObject *__pyx_v_start; addr_t __pyx_v_start_; size_t __pyx_t_0; size_t __pyx_t_1; size_t __pyx_t_2; };
07006: self: Memory,
+07007: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_1) < 0) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07008: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "blocks") < 0)) __PYX_ERR(0, 7005, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("blocks", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7005, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_66blocks(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+07009: ) -> Iterator[Tuple[Address, memoryview]]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_memoryview); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8); __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 7005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
07010: r"""Iterates over blocks.
07011:
07012: Iterates over data blocks within an address range.
07013:
07014: Arguments:
07015: start (int):
07016: Inclusive start address.
07017: If ``None``, :attr:`start` is considered.
07018:
07019: endex (int):
07020: Exclusive end address.
07021: If ``None``, :attr:`endex` is considered.
07022:
07023: Yields:
07024: (start, memoryview): Start and data view of each block/slice.
07025:
07026: See Also:
07027: :meth:`intervals`
07028: :meth:`to_blocks`
07029:
07030: Examples:
07031: >>> from cbytesparse.c import Memory
07032:
07033: +---+---+---+---+---+---+---+---+---+---+---+
07034: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
07035: +===+===+===+===+===+===+===+===+===+===+===+
07036: | |[A | B]| | |[x]| |[1 | 2 | 3]| |
07037: +---+---+---+---+---+---+---+---+---+---+---+
07038:
07039: >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])
07040: >>> [[s, bytes(d)] for s, d in memory.blocks()]
07041: [[1, b'AB'], [5, b'x'], [7, b'123']]
07042: >>> [[s, bytes(d)] for s, d in memory.blocks(2, 9)]
07043: [[2, b'B'], [5, b'x'], [7, b'12']]
07044: >>> [[s, bytes(d)] for s, d in memory.blocks(3, 5)]
07045: []
07046: """
07047: cdef:
07048: addr_t start_
07049: addr_t endex_
+07050: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_->blocks; __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
+07051: size_t block_count = Rack_Length(blocks)
__pyx_cur_scope->__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_cur_scope->__pyx_v_blocks);
07052: size_t block_index
07053: size_t block_index_start
07054: size_t block_index_endex
07055: const Block_* block
07056: addr_t block_start
07057: addr_t block_endex
07058: addr_t slice_start
07059: addr_t slice_endex
07060: BlockView slice_view
07061:
+07062: if block_count:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+07063: if start is None and endex is None: # faster
__pyx_t_3 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L6_bool_binop_done; } __pyx_t_4 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_3 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_3; __pyx_L6_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+07064: for block_index in range(block_count):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07065: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07066: yield Block_Start(block), Block_View(block)
__pyx_t_8 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = ((PyObject *)__pyx_f_11cbytesparse_1c_Block_View(__pyx_cur_scope->__pyx_v_block)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L10_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7066, __pyx_L1_error) }
07067: else:
+07068: block_index_start = 0 if start is None else Rack_IndexStart(blocks, start)
/*else*/ { __pyx_t_2 = (__pyx_cur_scope->__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = 0; } else { __pyx_t_11 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_11 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7068, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_11); } __pyx_cur_scope->__pyx_v_block_index_start = __pyx_t_5;
+07069: block_index_endex = block_count if endex is None else Rack_IndexEndex(blocks, endex)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; } else { __pyx_t_11 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_11 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7069, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_11); } __pyx_cur_scope->__pyx_v_block_index_endex = __pyx_t_5;
+07070: start_, endex_ = Memory_Bound(self._, start, endex)
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7070, __pyx_L1_error)
__pyx_t_11 = __pyx_t_12.f0;
__pyx_t_13 = __pyx_t_12.f1;
__pyx_cur_scope->__pyx_v_start_ = __pyx_t_11;
__pyx_cur_scope->__pyx_v_endex_ = __pyx_t_13;
07071:
+07072: for block_index in range(block_index_start, block_index_endex):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_index_endex; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = __pyx_cur_scope->__pyx_v_block_index_start; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07073: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07074: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+07075: block_endex = Block_Endex(block)
__pyx_cur_scope->__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_cur_scope->__pyx_v_block);
+07076: slice_start = block_start if start_ < block_start else start_
if (((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_block_start) != 0)) { __pyx_t_13 = __pyx_cur_scope->__pyx_v_block_start; } else { __pyx_t_13 = __pyx_cur_scope->__pyx_v_start_; } __pyx_cur_scope->__pyx_v_slice_start = __pyx_t_13;
+07077: slice_endex = endex_ if endex_ < block_endex else block_endex
if (((__pyx_cur_scope->__pyx_v_endex_ < __pyx_cur_scope->__pyx_v_block_endex) != 0)) { __pyx_t_13 = __pyx_cur_scope->__pyx_v_endex_; } else { __pyx_t_13 = __pyx_cur_scope->__pyx_v_block_endex; } __pyx_cur_scope->__pyx_v_slice_endex = __pyx_t_13;
+07078: if slice_start < slice_endex:
__pyx_t_2 = ((__pyx_cur_scope->__pyx_v_slice_start < __pyx_cur_scope->__pyx_v_slice_endex) != 0); if (__pyx_t_2) { /* … */ } } } __pyx_L5:;
+07079: slice_start -= block_start
__pyx_cur_scope->__pyx_v_slice_start = (__pyx_cur_scope->__pyx_v_slice_start - __pyx_cur_scope->__pyx_v_block_start);
+07080: slice_endex -= block_start
__pyx_cur_scope->__pyx_v_slice_endex = (__pyx_cur_scope->__pyx_v_slice_endex - __pyx_cur_scope->__pyx_v_block_start);
+07081: slice_view = Block_ViewSlice_(block, <size_t>slice_start, <size_t>slice_endex)
__pyx_t_10 = ((PyObject *)__pyx_f_11cbytesparse_1c_Block_ViewSlice_(__pyx_cur_scope->__pyx_v_block, ((size_t)__pyx_cur_scope->__pyx_v_slice_start), ((size_t)__pyx_cur_scope->__pyx_v_slice_endex))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7081, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_slice_view)); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_slice_view, ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_10)); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = 0;
+07082: yield (block_start + slice_start), slice_view
__pyx_t_10 = __Pyx_PyInt_From_uint_fast64_t((__pyx_cur_scope->__pyx_v_block_start + __pyx_cur_scope->__pyx_v_slice_start)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_slice_view)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_slice_view)); PyTuple_SET_ITEM(__pyx_t_9, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_slice_view)); __pyx_t_10 = 0; __pyx_r = __pyx_t_9; __pyx_t_9 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L14_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7082, __pyx_L1_error)
07083:
+07084: def bound(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_70bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_69bound[] = "Memory.bound(self: Memory, start: Optional[Address], endex: Optional[Address]) -> ClosedInterval\nBounds addresses.\n\n It bounds the given addresses to stay within memory limits.\n ``None`` is used to ignore a limit for the `start` or `endex`\n directions.\n\n In case of stored data, :attr:`content_start` and\n :attr:`content_endex` are used as bounds.\n\n In case of trimming limits, :attr:`trim_start` or :attr:`trim_endex`\n are used as bounds, when not ``None``.\n\n In case `start` and `endex` are in the wrong order, one clamps\n the other if present (see the Python implementation for details).\n\n Returns:\n tuple of int: Bounded `start` and `endex`, closed interval.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> Memory().bound(None, None)\n (0, 0)\n >>> Memory().bound(None, 100)\n (0, 100)\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |\n +===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])\n >>> memory.bound(0, 30)\n (0, 30)\n >>> memory.bound(2, 6)\n (2, 6)\n >>> memory.bound(None, 6)\n (1, 6)\n >>> memory.bound(2, None)\n (2, 8)\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |\n +===+===+===+===+===+===+===+===+===+\n | |[[[| |[A | B | C]| | |)))|\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[3, b'ABC']], start=1, endex=8)\n >>> memory.bound(None, None)\n (1, 8)\n >>> memory.bound(0, 30)""\n (1, 8)\n >>> memory.bound(2, 6)\n (2, 6)\n >>> memory.bound(2, None)\n (2, 8)\n >>> memory.bound(None, 6)\n (1, 6)\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_70bound = {"bound", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_70bound, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_69bound}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_70bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("bound (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("bound", 1, 2, 2, 1); __PYX_ERR(0, 7084, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "bound") < 0)) __PYX_ERR(0, 7084, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7084, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.bound", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_69bound(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_69bound(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("bound", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.bound", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__121 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__121); __Pyx_GIVEREF(__pyx_tuple__121); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7084, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_70bound, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_bound, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__122)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_bound, __pyx_t_9) < 0) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_bound, 7084, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) __PYX_ERR(0, 7084, __pyx_L1_error)
07085: self: Memory,
+07086: start: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7086, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7086, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7086, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+07087: endex: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+07088: ) -> ClosedInterval:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ClosedInterval); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7088, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
07089: r"""Bounds addresses.
07090:
07091: It bounds the given addresses to stay within memory limits.
07092: ``None`` is used to ignore a limit for the `start` or `endex`
07093: directions.
07094:
07095: In case of stored data, :attr:`content_start` and
07096: :attr:`content_endex` are used as bounds.
07097:
07098: In case of trimming limits, :attr:`trim_start` or :attr:`trim_endex`
07099: are used as bounds, when not ``None``.
07100:
07101: In case `start` and `endex` are in the wrong order, one clamps
07102: the other if present (see the Python implementation for details).
07103:
07104: Returns:
07105: tuple of int: Bounded `start` and `endex`, closed interval.
07106:
07107: Examples:
07108: >>> from cbytesparse.c import Memory
07109:
07110: >>> Memory().bound(None, None)
07111: (0, 0)
07112: >>> Memory().bound(None, 100)
07113: (0, 100)
07114:
07115: ~~~
07116:
07117: +---+---+---+---+---+---+---+---+---+
07118: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07119: +===+===+===+===+===+===+===+===+===+
07120: | |[A | B | C]| |[x | y | z]| |
07121: +---+---+---+---+---+---+---+---+---+
07122:
07123: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
07124: >>> memory.bound(0, 30)
07125: (0, 30)
07126: >>> memory.bound(2, 6)
07127: (2, 6)
07128: >>> memory.bound(None, 6)
07129: (1, 6)
07130: >>> memory.bound(2, None)
07131: (2, 8)
07132:
07133: ~~~
07134:
07135: +---+---+---+---+---+---+---+---+---+
07136: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07137: +===+===+===+===+===+===+===+===+===+
07138: | |[[[| |[A | B | C]| | |)))|
07139: +---+---+---+---+---+---+---+---+---+
07140:
07141: >>> memory = Memory.from_blocks([[3, b'ABC']], start=1, endex=8)
07142: >>> memory.bound(None, None)
07143: (1, 8)
07144: >>> memory.bound(0, 30)
07145: (1, 8)
07146: >>> memory.bound(2, 6)
07147: (2, 6)
07148: >>> memory.bound(2, None)
07149: (2, 8)
07150: >>> memory.bound(None, 6)
07151: (1, 6)
07152: """
07153:
+07154: return Memory_Bound(self._, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7154, __pyx_L1_error) __pyx_t_2 = __pyx_convert__to_py___pyx_ctuple_addr_t__and_addr_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
07155:
+07156: def clear(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_72clear(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_71clear[] = "Memory.clear(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> None\nClears an address range.\n\n Arguments:\n start (int):\n Inclusive start address for clearing.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for clearing.\n If ``None``, :attr:`endex` is considered.\n\n See Also:\n :meth:`clear_backup`\n :meth:`clear_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+\n | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|\n +===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n | |[A]| | | | |[y | z]| |\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])\n >>> memory.clear(6, 10)\n >>> memory.to_blocks()\n [[5, b'A'], [10, b'yz']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_72clear = {"clear", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_72clear, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_71clear}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_72clear(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_71clear(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__123 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(0, 7156, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__123); __Pyx_GIVEREF(__pyx_tuple__123); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7156, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_72clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_clear, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__124)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_clear, __pyx_t_7) < 0) __PYX_ERR(0, 7156, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_clear, 7156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) __PYX_ERR(0, 7156, __pyx_L1_error)
07157: self: Memory,
+07158: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 7156, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+07159: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "clear") < 0)) __PYX_ERR(0, 7156, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("clear", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7156, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_71clear(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 7156, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+07160: ) -> None:
if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 7156, __pyx_L1_error)
07161: r"""Clears an address range.
07162:
07163: Arguments:
07164: start (int):
07165: Inclusive start address for clearing.
07166: If ``None``, :attr:`start` is considered.
07167:
07168: endex (int):
07169: Exclusive end address for clearing.
07170: If ``None``, :attr:`endex` is considered.
07171:
07172: See Also:
07173: :meth:`clear_backup`
07174: :meth:`clear_restore`
07175:
07176: Examples:
07177: >>> from cbytesparse.c import Memory
07178:
07179: +---+---+---+---+---+---+---+---+---+
07180: | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|
07181: +===+===+===+===+===+===+===+===+===+
07182: | |[A | B | C]| |[x | y | z]| |
07183: +---+---+---+---+---+---+---+---+---+
07184: | |[A]| | | | |[y | z]| |
07185: +---+---+---+---+---+---+---+---+---+
07186:
07187: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])
07188: >>> memory.clear(6, 10)
07189: >>> memory.to_blocks()
07190: [[5, b'A'], [10, b'yz']]
07191: """
07192:
+07193: Memory_Clear(self._, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Clear(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 7193, __pyx_L1_error)
07194:
+07195: def clear_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_74clear_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_73clear_backup[] = "Memory.clear_backup(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory\nBackups a `clear()` operation.\n\n Arguments:\n start (int):\n Inclusive start address for clearing.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for clearing.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n :obj:`ImmutableMemory`: Backup memory region.\n\n See Also:\n :meth:`clear`\n :meth:`clear_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_74clear_backup = {"clear_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_74clear_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_73clear_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_74clear_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_73clear_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { Memory_ const *__pyx_v_memory; addr_t __pyx_v_start_; addr_t __pyx_v_endex_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.clear_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__125 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_memory, __pyx_n_s_start_2, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(0, 7195, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__125); __Pyx_GIVEREF(__pyx_tuple__125); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7195, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_74clear_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_clear_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__126)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_clear_backup, __pyx_t_9) < 0) __PYX_ERR(0, 7195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_clear_backup, 7195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(0, 7195, __pyx_L1_error)
07196: self: Memory,
+07197: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 7195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+07198: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "clear_backup") < 0)) __PYX_ERR(0, 7195, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("clear_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7195, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.clear_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_73clear_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 7195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+07199: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 7195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
07200: r"""Backups a `clear()` operation.
07201:
07202: Arguments:
07203: start (int):
07204: Inclusive start address for clearing.
07205: If ``None``, :attr:`start` is considered.
07206:
07207: endex (int):
07208: Exclusive end address for clearing.
07209: If ``None``, :attr:`endex` is considered.
07210:
07211: Returns:
07212: :obj:`ImmutableMemory`: Backup memory region.
07213:
07214: See Also:
07215: :meth:`clear`
07216: :meth:`clear_restore`
07217: """
07218: cdef:
+07219: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+07220: addr_t start_ = Memory_Start(memory) if start is None else <addr_t>start
__pyx_t_3 = (__pyx_v_start == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7220, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_start_ = __pyx_t_2;
+07221: addr_t endex_ = Memory_Endex(memory) if endex is None else <addr_t>endex
__pyx_t_3 = (__pyx_v_endex == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7221, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_endex_ = __pyx_t_2;
07222:
+07223: return Memory_Extract_(memory, start_, endex_, 0, NULL, 1, True)
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_memory, __pyx_v_start_, __pyx_v_endex_, 0, NULL, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
07224:
+07225: def clear_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_76clear_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_75clear_restore[] = "Memory.clear_restore(self: Memory, backup: ImmutableMemory) -> None\nRestores a `clear()` operation.\n\n Arguments:\n backup (:obj:`ImmutableMemory`):\n Backup memory region to restore.\n\n See Also:\n :meth:`clear`\n :meth:`clear_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_76clear_restore = {"clear_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_76clear_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_75clear_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_76clear_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_75clear_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_backup)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_75clear_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_backup) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.clear_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__127 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_backup); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(0, 7225, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__127); __Pyx_GIVEREF(__pyx_tuple__127); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7225, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_76clear_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_clear_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__128)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_clear_restore, __pyx_t_7) < 0) __PYX_ERR(0, 7225, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_clear_restore, 7225, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) __PYX_ERR(0, 7225, __pyx_L1_error)
07226: self: Memory,
+07227: backup: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_backup, __pyx_t_7) < 0) __PYX_ERR(0, 7225, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+07228: ) -> None:
if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 7225, __pyx_L1_error)
07229: r"""Restores a `clear()` operation.
07230:
07231: Arguments:
07232: backup (:obj:`ImmutableMemory`):
07233: Backup memory region to restore.
07234:
07235: See Also:
07236: :meth:`clear`
07237: :meth:`clear_backup`
07238: """
07239:
+07240: Memory_Write(self._, 0, backup, True)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_self->_, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 7240, __pyx_L1_error)
07241:
07242: @property
+07243: def content_endex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_endex_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_endex_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_13content_endex___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_13content_endex___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.content_endex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
07244: self: Memory,
07245: ) -> Address:
07246: r"""int: Exclusive content end address.
07247:
07248: This property holds the exclusive end address of the memory content.
07249: By default, it is the current maximmum exclusive end address of
07250: the last stored block.
07251:
07252: If the memory has no data and no trimming, :attr:`start` is returned.
07253:
07254: Trimming is considered only for an empty memory.
07255:
07256: Examples:
07257: >>> from cbytesparse.c import Memory
07258:
07259: >>> Memory().content_endex
07260: 0
07261: >>> Memory(endex=8).content_endex
07262: 0
07263: >>> Memory(start=1, endex=8).content_endex
07264: 1
07265:
07266: ~~~
07267:
07268: +---+---+---+---+---+---+---+---+---+
07269: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07270: +===+===+===+===+===+===+===+===+===+
07271: | |[A | B | C]| |[x | y | z]| |
07272: +---+---+---+---+---+---+---+---+---+
07273:
07274: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
07275: >>> memory.content_endex
07276: 8
07277:
07278: ~~~
07279:
07280: +---+---+---+---+---+---+---+---+---+
07281: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07282: +===+===+===+===+===+===+===+===+===+
07283: | |[A | B | C]| | | | |)))|
07284: +---+---+---+---+---+---+---+---+---+
07285:
07286: >>> memory = Memory.from_blocks([[1, b'ABC']], endex=8)
07287: >>> memory.content_endex
07288: 4
07289: """
07290:
+07291: return Memory_ContentEndex(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7291, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07292:
07293: @property
+07294: def content_endin(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_endin_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_endin_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_13content_endin___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_13content_endin___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.content_endin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_79generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
07295: self: Memory,
07296: ) -> Address:
07297: r"""int: Inclusive content end address.
07298:
07299: This property holds the inclusive end address of the memory content.
07300: By default, it is the current maximmum inclusive end address of
07301: the last stored block.
07302:
07303: If the memory has no data and no trimming, :attr:`start` minus one is
07304: returned.
07305:
07306: Trimming is considered only for an empty memory.
07307:
07308: Examples:
07309: >>> from cbytesparse.c import Memory
07310:
07311: >>> Memory().content_endin
07312: -1
07313: >>> Memory(endex=8).content_endin
07314: -1
07315: >>> Memory(start=1, endex=8).content_endin
07316: 0
07317:
07318: ~~~
07319:
07320: +---+---+---+---+---+---+---+---+---+
07321: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07322: +===+===+===+===+===+===+===+===+===+
07323: | |[A | B | C]| |[x | y | z]| |
07324: +---+---+---+---+---+---+---+---+---+
07325:
07326: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
07327: >>> memory.content_endin
07328: 7
07329:
07330: ~~~
07331:
07332: +---+---+---+---+---+---+---+---+---+
07333: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07334: +===+===+===+===+===+===+===+===+===+
07335: | |[A | B | C]| | | | |)))|
07336: +---+---+---+---+---+---+---+---+---+
07337:
07338: >>> memory = Memory.from_blocks([[1, b'ABC']], endex=8)
07339: >>> memory.content_endin
07340: 3
07341: """
07342:
+07343: return Memory_ContentEndin(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_ContentEndin(__pyx_v_self->_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07344:
+07345: def content_items(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_78content_items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_77content_items[] = "Memory.content_items(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[Tuple[Address, Value]]\nIterates over content address and value pairs.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Yields:\n int: Content address and value pairs.\n\n See Also:\n meth:`content_keys`\n meth:`content_values`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B]| | |[x]| |[1 | 2 | 3]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])\n >>> dict(memory.content_items())\n {1: 65, 2: 66, 5: 120, 7: 49, 8: 50, 9: 51}\n >>> dict(memory.content_items(2, 9))\n {2: 66, 5: 120, 7: 49, 8: 50}\n >>> dict(memory.content_items(3, 5))\n {}\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_78content_items = {"content_items", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_78content_items, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_77content_items}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_78content_items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_items (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_77content_items(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_3_content_items *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_items", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_3_content_items *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_3_content_items(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_3_content_items, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_3_content_items *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 7345, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_79generator3, __pyx_codeobj__31, (PyObject *) __pyx_cur_scope, __pyx_n_s_content_items, __pyx_n_s_Memory_content_items, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.content_items", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_79generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_items", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7345, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("content_items", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_82generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__129 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_slice_start, __pyx_n_s_slice_endex, __pyx_n_s_address, __pyx_n_s_offset); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__129); __Pyx_GIVEREF(__pyx_tuple__129); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7345, __pyx_L1_error) /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_78content_items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_content_items, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_content_items, __pyx_t_1) < 0) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_content_items, 7345, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 7345, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_3_content_items { PyObject_HEAD addr_t __pyx_v_address; Block_ const *__pyx_v_block; size_t __pyx_v_block_count; addr_t __pyx_v_block_endex; size_t __pyx_v_block_index; size_t __pyx_v_block_index_endex; size_t __pyx_v_block_index_start; addr_t __pyx_v_block_start; Rack_ const *__pyx_v_blocks; PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; size_t __pyx_v_offset; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; addr_t __pyx_v_slice_endex; addr_t __pyx_v_slice_start; PyObject *__pyx_v_start; addr_t __pyx_v_start_; size_t __pyx_t_0; size_t __pyx_t_1; size_t __pyx_t_2; size_t __pyx_t_3; size_t __pyx_t_4; size_t __pyx_t_5; addr_t __pyx_t_6; addr_t __pyx_t_7; addr_t __pyx_t_8; };
07346: self: Memory,
+07347: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+07348: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "content_items") < 0)) __PYX_ERR(0, 7345, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("content_items", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7345, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.content_items", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_77content_items(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+07349: ) -> Iterator[Tuple[Address, Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); __pyx_t_6 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 7345, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
07350: r"""Iterates over content address and value pairs.
07351:
07352: Arguments:
07353: start (int):
07354: Inclusive start address.
07355: If ``None``, :attr:`start` is considered.
07356:
07357: endex (int):
07358: Exclusive end address.
07359: If ``None``, :attr:`endex` is considered.
07360:
07361: Yields:
07362: int: Content address and value pairs.
07363:
07364: See Also:
07365: meth:`content_keys`
07366: meth:`content_values`
07367:
07368: Examples:
07369: >>> from cbytesparse.c import Memory
07370:
07371: +---+---+---+---+---+---+---+---+---+---+---+
07372: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
07373: +===+===+===+===+===+===+===+===+===+===+===+
07374: | |[A | B]| | |[x]| |[1 | 2 | 3]| |
07375: +---+---+---+---+---+---+---+---+---+---+---+
07376:
07377: >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])
07378: >>> dict(memory.content_items())
07379: {1: 65, 2: 66, 5: 120, 7: 49, 8: 50, 9: 51}
07380: >>> dict(memory.content_items(2, 9))
07381: {2: 66, 5: 120, 7: 49, 8: 50}
07382: >>> dict(memory.content_items(3, 5))
07383: {}
07384: """
07385: cdef:
07386: addr_t start_
07387: addr_t endex_
+07388: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_->blocks; __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
+07389: size_t block_count = Rack_Length(blocks)
__pyx_cur_scope->__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_cur_scope->__pyx_v_blocks);
07390: size_t block_index
07391: size_t block_index_start
07392: size_t block_index_endex
07393: const Block_* block
07394: addr_t block_start
07395: addr_t block_endex
07396: addr_t slice_start
07397: addr_t slice_endex
07398: addr_t address
07399: size_t offset
07400:
+07401: if block_count:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+07402: if start is None and endex is None: # faster
__pyx_t_3 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L6_bool_binop_done; } __pyx_t_4 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_3 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_3; __pyx_L6_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+07403: for block_index in range(block_count):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07404: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07405: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+07406: for offset in range(Block_Length(block)):
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_cur_scope->__pyx_v_block); __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_cur_scope->__pyx_v_offset = __pyx_t_10;
+07407: yield (block_start + offset), Block_Get__(block, offset)
__pyx_t_11 = __Pyx_PyInt_From_uint_fast64_t((__pyx_cur_scope->__pyx_v_block_start + __pyx_cur_scope->__pyx_v_offset)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyInt_From_byte_t(__pyx_f_11cbytesparse_1c_Block_Get__(__pyx_cur_scope->__pyx_v_block, __pyx_cur_scope->__pyx_v_offset)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_12); __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_r = __pyx_t_13; __pyx_t_13 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L12_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7407, __pyx_L1_error) } }
07408: else:
+07409: block_index_start = 0 if start is None else Rack_IndexStart(blocks, start)
/*else*/ { __pyx_t_2 = (__pyx_cur_scope->__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = 0; } else { __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7409, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_14); } __pyx_cur_scope->__pyx_v_block_index_start = __pyx_t_5;
+07410: block_index_endex = block_count if endex is None else Rack_IndexEndex(blocks, endex)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; } else { __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7410, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_14); } __pyx_cur_scope->__pyx_v_block_index_endex = __pyx_t_5;
+07411: start_, endex_ = Memory_Bound(self._, start, endex)
__pyx_t_15 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7411, __pyx_L1_error)
__pyx_t_14 = __pyx_t_15.f0;
__pyx_t_16 = __pyx_t_15.f1;
__pyx_cur_scope->__pyx_v_start_ = __pyx_t_14;
__pyx_cur_scope->__pyx_v_endex_ = __pyx_t_16;
07412:
+07413: for block_index in range(block_index_start, block_index_endex):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_index_endex; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = __pyx_cur_scope->__pyx_v_block_index_start; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07414: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07415: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+07416: block_endex = Block_Endex(block)
__pyx_cur_scope->__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_cur_scope->__pyx_v_block);
+07417: slice_start = block_start if start_ < block_start else start_
if (((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_block_start) != 0)) { __pyx_t_16 = __pyx_cur_scope->__pyx_v_block_start; } else { __pyx_t_16 = __pyx_cur_scope->__pyx_v_start_; } __pyx_cur_scope->__pyx_v_slice_start = __pyx_t_16;
+07418: slice_endex = endex_ if endex_ < block_endex else block_endex
if (((__pyx_cur_scope->__pyx_v_endex_ < __pyx_cur_scope->__pyx_v_block_endex) != 0)) { __pyx_t_16 = __pyx_cur_scope->__pyx_v_endex_; } else { __pyx_t_16 = __pyx_cur_scope->__pyx_v_block_endex; } __pyx_cur_scope->__pyx_v_slice_endex = __pyx_t_16;
+07419: for address in range(slice_start, slice_endex):
__pyx_t_16 = __pyx_cur_scope->__pyx_v_slice_endex; __pyx_t_14 = __pyx_t_16; for (__pyx_t_17 = __pyx_cur_scope->__pyx_v_slice_start; __pyx_t_17 < __pyx_t_14; __pyx_t_17+=1) { __pyx_cur_scope->__pyx_v_address = __pyx_t_17;
+07420: offset = <size_t>(address - block_start)
__pyx_cur_scope->__pyx_v_offset = ((size_t)(__pyx_cur_scope->__pyx_v_address - __pyx_cur_scope->__pyx_v_block_start));
+07421: yield address, Block_Get__(block, offset)
__pyx_t_13 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyInt_From_byte_t(__pyx_f_11cbytesparse_1c_Block_Get__(__pyx_cur_scope->__pyx_v_block, __pyx_cur_scope->__pyx_v_offset)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_12); __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_r = __pyx_t_11; __pyx_t_11 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __pyx_cur_scope->__pyx_t_6 = __pyx_t_14; __pyx_cur_scope->__pyx_t_7 = __pyx_t_16; __pyx_cur_scope->__pyx_t_8 = __pyx_t_17; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L17_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_t_14 = __pyx_cur_scope->__pyx_t_6; __pyx_t_16 = __pyx_cur_scope->__pyx_t_7; __pyx_t_17 = __pyx_cur_scope->__pyx_t_8; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7421, __pyx_L1_error) } } } __pyx_L5:;
07422:
+07423: def content_keys(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_81content_keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_80content_keys[] = "Memory.content_keys(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[Address]\nIterates over content addresses.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Yields:\n int: Content addresses.\n\n See Also:\n meth:`content_items`\n meth:`content_values`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B]| | |[x]| |[1 | 2 | 3]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])\n >>> list(memory.content_keys())\n [1, 2, 5, 7, 8, 9]\n >>> list(memory.content_keys(2, 9))\n [2, 5, 7, 8]\n >>> list(memory.content_keys(3, 5))\n []\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_81content_keys = {"content_keys", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_81content_keys, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_80content_keys}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_81content_keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_keys (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_80content_keys(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_4_content_keys *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_keys", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_4_content_keys *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_4_content_keys(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_4_content_keys, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_4_content_keys *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 7423, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_82generator4, __pyx_codeobj__32, (PyObject *) __pyx_cur_scope, __pyx_n_s_content_keys, __pyx_n_s_Memory_content_keys, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.content_keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_82generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_keys", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7423, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("content_keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__130 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_slice_start, __pyx_n_s_slice_endex, __pyx_n_s_address); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__130); __Pyx_GIVEREF(__pyx_tuple__130); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7423, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_81content_keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_content_keys, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_content_keys, __pyx_t_9) < 0) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(3, 0, 16, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_content_keys, 7423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 7423, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_4_content_keys { PyObject_HEAD addr_t __pyx_v_address; Block_ const *__pyx_v_block; size_t __pyx_v_block_count; addr_t __pyx_v_block_endex; size_t __pyx_v_block_index; size_t __pyx_v_block_index_endex; size_t __pyx_v_block_index_start; addr_t __pyx_v_block_start; Rack_ const *__pyx_v_blocks; PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; addr_t __pyx_v_slice_endex; addr_t __pyx_v_slice_start; PyObject *__pyx_v_start; addr_t __pyx_v_start_; size_t __pyx_t_0; size_t __pyx_t_1; size_t __pyx_t_2; addr_t __pyx_t_3; addr_t __pyx_t_4; addr_t __pyx_t_5; };
07424: self: Memory,
+07425: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+07426: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "content_keys") < 0)) __PYX_ERR(0, 7423, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("content_keys", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7423, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.content_keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_80content_keys(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+07427: ) -> Iterator[Address]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 7423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
07428: r"""Iterates over content addresses.
07429:
07430: Arguments:
07431: start (int):
07432: Inclusive start address.
07433: If ``None``, :attr:`start` is considered.
07434:
07435: endex (int):
07436: Exclusive end address.
07437: If ``None``, :attr:`endex` is considered.
07438:
07439: Yields:
07440: int: Content addresses.
07441:
07442: See Also:
07443: meth:`content_items`
07444: meth:`content_values`
07445:
07446: Examples:
07447: >>> from cbytesparse.c import Memory
07448:
07449: +---+---+---+---+---+---+---+---+---+---+---+
07450: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
07451: +===+===+===+===+===+===+===+===+===+===+===+
07452: | |[A | B]| | |[x]| |[1 | 2 | 3]| |
07453: +---+---+---+---+---+---+---+---+---+---+---+
07454:
07455: >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])
07456: >>> list(memory.content_keys())
07457: [1, 2, 5, 7, 8, 9]
07458: >>> list(memory.content_keys(2, 9))
07459: [2, 5, 7, 8]
07460: >>> list(memory.content_keys(3, 5))
07461: []
07462: """
07463: cdef:
07464: addr_t start_
07465: addr_t endex_
+07466: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_->blocks; __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
+07467: size_t block_count = Rack_Length(blocks)
__pyx_cur_scope->__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_cur_scope->__pyx_v_blocks);
07468: size_t block_index
07469: size_t block_index_start
07470: size_t block_index_endex
07471: const Block_* block
07472: addr_t block_start
07473: addr_t block_endex
07474: addr_t slice_start
07475: addr_t slice_endex
07476: addr_t address
07477:
+07478: if block_count:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+07479: if start is None and endex is None: # faster
__pyx_t_3 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L6_bool_binop_done; } __pyx_t_4 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_3 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_3; __pyx_L6_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+07480: for block_index in range(block_count):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07481: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07482: for address in range(Block_Start(block), Block_Endex(block)):
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_cur_scope->__pyx_v_block); __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block); __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_cur_scope->__pyx_v_address = __pyx_t_10;
+07483: yield address
__pyx_t_11 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_r = __pyx_t_11; __pyx_t_11 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L12_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7483, __pyx_L1_error) } }
07484: else:
+07485: block_index_start = 0 if start is None else Rack_IndexStart(blocks, start)
/*else*/ { __pyx_t_2 = (__pyx_cur_scope->__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = 0; } else { __pyx_t_8 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_8 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7485, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_8); } __pyx_cur_scope->__pyx_v_block_index_start = __pyx_t_5;
+07486: block_index_endex = block_count if endex is None else Rack_IndexEndex(blocks, endex)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; } else { __pyx_t_8 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_8 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7486, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_8); } __pyx_cur_scope->__pyx_v_block_index_endex = __pyx_t_5;
+07487: start_, endex_ = Memory_Bound(self._, start, endex)
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7487, __pyx_L1_error)
__pyx_t_8 = __pyx_t_12.f0;
__pyx_t_9 = __pyx_t_12.f1;
__pyx_cur_scope->__pyx_v_start_ = __pyx_t_8;
__pyx_cur_scope->__pyx_v_endex_ = __pyx_t_9;
07488:
+07489: for block_index in range(block_index_start, block_index_endex):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_index_endex; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = __pyx_cur_scope->__pyx_v_block_index_start; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07490: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07491: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+07492: block_endex = Block_Endex(block)
__pyx_cur_scope->__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_cur_scope->__pyx_v_block);
+07493: slice_start = block_start if start_ < block_start else start_
if (((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_block_start) != 0)) { __pyx_t_9 = __pyx_cur_scope->__pyx_v_block_start; } else { __pyx_t_9 = __pyx_cur_scope->__pyx_v_start_; } __pyx_cur_scope->__pyx_v_slice_start = __pyx_t_9;
+07494: slice_endex = endex_ if endex_ < block_endex else block_endex
if (((__pyx_cur_scope->__pyx_v_endex_ < __pyx_cur_scope->__pyx_v_block_endex) != 0)) { __pyx_t_9 = __pyx_cur_scope->__pyx_v_endex_; } else { __pyx_t_9 = __pyx_cur_scope->__pyx_v_block_endex; } __pyx_cur_scope->__pyx_v_slice_endex = __pyx_t_9;
+07495: for address in range(slice_start, slice_endex):
__pyx_t_9 = __pyx_cur_scope->__pyx_v_slice_endex; __pyx_t_8 = __pyx_t_9; for (__pyx_t_10 = __pyx_cur_scope->__pyx_v_slice_start; __pyx_t_10 < __pyx_t_8; __pyx_t_10+=1) { __pyx_cur_scope->__pyx_v_address = __pyx_t_10;
+07496: yield address
__pyx_t_11 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_r = __pyx_t_11; __pyx_t_11 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L17_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7496, __pyx_L1_error) } } } __pyx_L5:;
07497:
07498: @property
+07499: def content_parts(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_parts_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_parts_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_13content_parts___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_13content_parts___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.content_parts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
07500: self: Memory,
07501: ) -> int:
07502: r"""Number of blocks.
07503:
07504: Returns:
07505: int: The number of blocks.
07506:
07507: Examples:
07508: >>> from cbytesparse.c import Memory
07509:
07510: >>> Memory().content_parts
07511: 0
07512:
07513: ~~~
07514:
07515: +---+---+---+---+---+---+---+---+---+
07516: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07517: +===+===+===+===+===+===+===+===+===+
07518: | |[A | B | C]| |[x | y | z]| |
07519: +---+---+---+---+---+---+---+---+---+
07520:
07521: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
07522: >>> memory.content_parts
07523: 2
07524:
07525: ~~~
07526:
07527: +---+---+---+---+---+---+---+---+---+
07528: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07529: +===+===+===+===+===+===+===+===+===+
07530: | |[A | B | C]| | | | |)))|
07531: +---+---+---+---+---+---+---+---+---+
07532:
07533: >>> memory = Memory.from_blocks([[1, b'ABC']], endex=8)
07534: >>> memory.content_parts
07535: 1
07536: """
07537:
+07538: return Memory_ContentParts(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_f_11cbytesparse_1c_Memory_ContentParts(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07539:
07540: @property
+07541: def content_size(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_12content_size_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_12content_size_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_12content_size___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_12content_size___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.content_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
07542: self: Memory,
07543: ) -> Address:
07544: r"""Actual content size.
07545:
07546: Returns:
07547: int: The sum of all block lengths.
07548:
07549: Examples:
07550: >>> from cbytesparse.c import Memory
07551:
07552: >>> Memory().content_size
07553: 0
07554: >>> Memory(start=1, endex=8).content_size
07555: 0
07556:
07557: ~~~
07558:
07559: +---+---+---+---+---+---+---+---+---+
07560: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07561: +===+===+===+===+===+===+===+===+===+
07562: | |[A | B | C]| |[x | y | z]| |
07563: +---+---+---+---+---+---+---+---+---+
07564:
07565: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
07566: >>> memory.content_size
07567: 6
07568:
07569: ~~~
07570:
07571: +---+---+---+---+---+---+---+---+---+
07572: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07573: +===+===+===+===+===+===+===+===+===+
07574: | |[A | B | C]| | | | |)))|
07575: +---+---+---+---+---+---+---+---+---+
07576:
07577: >>> memory = Memory.from_blocks([[1, b'ABC']], endex=8)
07578: >>> memory.content_size
07579: 3
07580: """
07581:
+07582: return Memory_ContentSize(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_ContentSize(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07583:
07584: @property
+07585: def content_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_12content_span_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_12content_span_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_12content_span___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_12content_span___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.content_span.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
07586: self: Memory,
07587: ) -> ClosedInterval:
07588: r"""tuple of int: Memory content address span.
07589:
07590: A :attr:`tuple` holding both :attr:`content_start` and
07591: :attr:`content_endex`.
07592:
07593: Examples:
07594: >>> from cbytesparse.c import Memory
07595:
07596: >>> Memory().content_span
07597: (0, 0)
07598: >>> Memory(start=1).content_span
07599: (1, 1)
07600: >>> Memory(endex=8).content_span
07601: (0, 0)
07602: >>> Memory(start=1, endex=8).content_span
07603: (1, 1)
07604:
07605: ~~~
07606:
07607: +---+---+---+---+---+---+---+---+---+
07608: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07609: +===+===+===+===+===+===+===+===+===+
07610: | |[A | B | C]| |[x | y | z]| |
07611: +---+---+---+---+---+---+---+---+---+
07612:
07613: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
07614: >>> memory.content_span
07615: (1, 8)
07616: """
07617:
+07618: return Memory_ContentSpan(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_convert__to_py___pyx_ctuple_addr_t__and_addr_t(__pyx_f_11cbytesparse_1c_Memory_ContentSpan(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07619:
07620: @property
+07621: def content_start(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_start_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_13content_start_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_13content_start___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_13content_start___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.content_start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_85generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
07622: self: Memory,
07623: ) -> Address:
07624: r"""int: Inclusive content start address.
07625:
07626: This property holds the inclusive start address of the memory content.
07627: By default, it is the current minimum inclusive start address of
07628: the first stored block.
07629:
07630: If the memory has no data and no trimming, 0 is returned.
07631:
07632: Trimming is considered only for an empty memory.
07633:
07634: Examples:
07635: >>> from cbytesparse.c import Memory
07636:
07637: >>> Memory().content_start
07638: 0
07639: >>> Memory(start=1).content_start
07640: 1
07641: >>> Memory(start=1, endex=8).content_start
07642: 1
07643:
07644: ~~~
07645:
07646: +---+---+---+---+---+---+---+---+---+
07647: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07648: +===+===+===+===+===+===+===+===+===+
07649: | |[A | B | C]| |[x | y | z]| |
07650: +---+---+---+---+---+---+---+---+---+
07651:
07652: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
07653: >>> memory.content_start
07654: 1
07655:
07656: ~~~
07657:
07658: +---+---+---+---+---+---+---+---+---+
07659: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
07660: +===+===+===+===+===+===+===+===+===+
07661: | |[[[| | | |[x | y | z]| |
07662: +---+---+---+---+---+---+---+---+---+
07663:
07664: >>> memory = Memory.from_blocks([[5, b'xyz']], start=1)
07665: >>> memory.content_start
07666: 5
07667: """
07668:
+07669: return Memory_ContentStart(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_ContentStart(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07670:
+07671: def content_values(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_84content_values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_83content_values[] = "Memory.content_values(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[Value]\nIterates over content values.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Yields:\n int: Content values.\n\n See Also:\n meth:`content_items`\n meth:`content_keys`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B]| | |[x]| |[1 | 2 | 3]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])\n >>> list(memory.content_values())\n [65, 66, 120, 49, 50, 51]\n >>> list(memory.content_values(2, 9))\n [66, 120, 49, 50]\n >>> list(memory.content_values(3, 5))\n []\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_84content_values = {"content_values", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_84content_values, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_83content_values}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_84content_values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_values (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_83content_values(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_5_content_values *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_values", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_5_content_values *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_5_content_values(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_5_content_values, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_5_content_values *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 7671, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_85generator5, __pyx_codeobj__33, (PyObject *) __pyx_cur_scope, __pyx_n_s_content_values, __pyx_n_s_Memory_content_values, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.content_values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_85generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("content_values", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7671, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("content_values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__131 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_slice_start, __pyx_n_s_slice_endex, __pyx_n_s_address, __pyx_n_s_offset); if (unlikely(!__pyx_tuple__131)) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__131); __Pyx_GIVEREF(__pyx_tuple__131); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7671, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_84content_values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_content_values, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_content_values, __pyx_t_7) < 0) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_content_values, 7671, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 7671, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_5_content_values { PyObject_HEAD addr_t __pyx_v_address; Block_ const *__pyx_v_block; size_t __pyx_v_block_count; addr_t __pyx_v_block_endex; size_t __pyx_v_block_index; size_t __pyx_v_block_index_endex; size_t __pyx_v_block_index_start; addr_t __pyx_v_block_start; Rack_ const *__pyx_v_blocks; PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; size_t __pyx_v_offset; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; addr_t __pyx_v_slice_endex; addr_t __pyx_v_slice_start; PyObject *__pyx_v_start; addr_t __pyx_v_start_; size_t __pyx_t_0; size_t __pyx_t_1; size_t __pyx_t_2; size_t __pyx_t_3; size_t __pyx_t_4; size_t __pyx_t_5; addr_t __pyx_t_6; addr_t __pyx_t_7; addr_t __pyx_t_8; };
07672: self: Memory,
+07673: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+07674: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "content_values") < 0)) __PYX_ERR(0, 7671, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("content_values", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7671, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.content_values", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_83content_values(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07675: ) -> Iterator[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 7671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
07676: r"""Iterates over content values.
07677:
07678: Arguments:
07679: start (int):
07680: Inclusive start address.
07681: If ``None``, :attr:`start` is considered.
07682:
07683: endex (int):
07684: Exclusive end address.
07685: If ``None``, :attr:`endex` is considered.
07686:
07687: Yields:
07688: int: Content values.
07689:
07690: See Also:
07691: meth:`content_items`
07692: meth:`content_keys`
07693:
07694: Examples:
07695: >>> from cbytesparse.c import Memory
07696:
07697: +---+---+---+---+---+---+---+---+---+---+---+
07698: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
07699: +===+===+===+===+===+===+===+===+===+===+===+
07700: | |[A | B]| | |[x]| |[1 | 2 | 3]| |
07701: +---+---+---+---+---+---+---+---+---+---+---+
07702:
07703: >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])
07704: >>> list(memory.content_values())
07705: [65, 66, 120, 49, 50, 51]
07706: >>> list(memory.content_values(2, 9))
07707: [66, 120, 49, 50]
07708: >>> list(memory.content_values(3, 5))
07709: []
07710: """
07711: cdef:
07712: addr_t start_
07713: addr_t endex_
+07714: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_->blocks; __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
+07715: size_t block_count = Rack_Length(blocks)
__pyx_cur_scope->__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_cur_scope->__pyx_v_blocks);
07716: size_t block_index
07717: size_t block_index_start
07718: size_t block_index_endex
07719: const Block_* block
07720: addr_t block_start
07721: addr_t block_endex
07722: addr_t slice_start
07723: addr_t slice_endex
07724: addr_t address
07725: size_t offset
07726:
+07727: if block_count:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+07728: if start is None and endex is None: # faster
__pyx_t_3 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L6_bool_binop_done; } __pyx_t_4 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_3 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_3; __pyx_L6_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+07729: for block_index in range(block_count):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07730: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07731: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+07732: for offset in range(Block_Length(block)):
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_cur_scope->__pyx_v_block); __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_cur_scope->__pyx_v_offset = __pyx_t_10;
+07733: yield Block_Get__(block, offset)
__pyx_t_11 = __Pyx_PyInt_From_byte_t(__pyx_f_11cbytesparse_1c_Block_Get__(__pyx_cur_scope->__pyx_v_block, __pyx_cur_scope->__pyx_v_offset)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7733, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_r = __pyx_t_11; __pyx_t_11 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; __pyx_cur_scope->__pyx_t_4 = __pyx_t_9; __pyx_cur_scope->__pyx_t_5 = __pyx_t_10; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L12_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_t_8 = __pyx_cur_scope->__pyx_t_3; __pyx_t_9 = __pyx_cur_scope->__pyx_t_4; __pyx_t_10 = __pyx_cur_scope->__pyx_t_5; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7733, __pyx_L1_error) } }
07734: else:
+07735: block_index_start = 0 if start is None else Rack_IndexStart(blocks, start)
/*else*/ { __pyx_t_2 = (__pyx_cur_scope->__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = 0; } else { __pyx_t_12 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_12 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7735, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_12); } __pyx_cur_scope->__pyx_v_block_index_start = __pyx_t_5;
+07736: block_index_endex = block_count if endex is None else Rack_IndexEndex(blocks, endex)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_5 = __pyx_cur_scope->__pyx_v_block_count; } else { __pyx_t_12 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_12 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7736, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_cur_scope->__pyx_v_blocks, __pyx_t_12); } __pyx_cur_scope->__pyx_v_block_index_endex = __pyx_t_5;
+07737: start_, endex_ = Memory_Bound(self._, start, endex)
__pyx_t_13 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7737, __pyx_L1_error)
__pyx_t_12 = __pyx_t_13.f0;
__pyx_t_14 = __pyx_t_13.f1;
__pyx_cur_scope->__pyx_v_start_ = __pyx_t_12;
__pyx_cur_scope->__pyx_v_endex_ = __pyx_t_14;
07738:
+07739: for block_index in range(block_index_start, block_index_endex):
__pyx_t_5 = __pyx_cur_scope->__pyx_v_block_index_endex; __pyx_t_6 = __pyx_t_5; for (__pyx_t_7 = __pyx_cur_scope->__pyx_v_block_index_start; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_7;
+07740: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+07741: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+07742: block_endex = Block_Endex(block)
__pyx_cur_scope->__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_cur_scope->__pyx_v_block);
+07743: slice_start = block_start if start_ < block_start else start_
if (((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_block_start) != 0)) { __pyx_t_14 = __pyx_cur_scope->__pyx_v_block_start; } else { __pyx_t_14 = __pyx_cur_scope->__pyx_v_start_; } __pyx_cur_scope->__pyx_v_slice_start = __pyx_t_14;
+07744: slice_endex = endex_ if endex_ < block_endex else block_endex
if (((__pyx_cur_scope->__pyx_v_endex_ < __pyx_cur_scope->__pyx_v_block_endex) != 0)) { __pyx_t_14 = __pyx_cur_scope->__pyx_v_endex_; } else { __pyx_t_14 = __pyx_cur_scope->__pyx_v_block_endex; } __pyx_cur_scope->__pyx_v_slice_endex = __pyx_t_14;
+07745: for address in range(slice_start, slice_endex):
__pyx_t_14 = __pyx_cur_scope->__pyx_v_slice_endex; __pyx_t_12 = __pyx_t_14; for (__pyx_t_15 = __pyx_cur_scope->__pyx_v_slice_start; __pyx_t_15 < __pyx_t_12; __pyx_t_15+=1) { __pyx_cur_scope->__pyx_v_address = __pyx_t_15;
+07746: offset = <size_t>(address - block_start)
__pyx_cur_scope->__pyx_v_offset = ((size_t)(__pyx_cur_scope->__pyx_v_address - __pyx_cur_scope->__pyx_v_block_start));
+07747: yield Block_Get__(block, offset)
__pyx_t_11 = __Pyx_PyInt_From_byte_t(__pyx_f_11cbytesparse_1c_Block_Get__(__pyx_cur_scope->__pyx_v_block, __pyx_cur_scope->__pyx_v_offset)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_r = __pyx_t_11; __pyx_t_11 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __pyx_cur_scope->__pyx_t_6 = __pyx_t_12; __pyx_cur_scope->__pyx_t_7 = __pyx_t_14; __pyx_cur_scope->__pyx_t_8 = __pyx_t_15; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L17_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_t_12 = __pyx_cur_scope->__pyx_t_6; __pyx_t_14 = __pyx_cur_scope->__pyx_t_7; __pyx_t_15 = __pyx_cur_scope->__pyx_t_8; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7747, __pyx_L1_error) } } } __pyx_L5:;
07748:
07749: @property
+07750: def contiguous(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_10contiguous_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_10contiguous_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_10contiguous___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_10contiguous___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.contiguous.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
07751: self: Memory,
07752: ) -> bool:
07753: r"""bool: Contains contiguous data.
07754:
07755: The memory is considered to have contiguous data if there is no empty
07756: space between blocks.
07757:
07758: If trimming is defined, there must be no empty space also towards it.
07759: """
07760:
+07761: return Memory_Contiguous(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_11cbytesparse_1c_Memory_Contiguous(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07762:
+07763: def copy(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_87copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_86copy[] = "Memory.copy(self: Memory) -> ImmutableMemory\nCreates a shallow copy.\n\n Note:\n The Cython implementation actually creates a deep copy.\n\n Returns:\n :obj:`ImmutableMemory`: Shallow copy.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_87copy = {"copy", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_87copy, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_86copy}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_87copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("copy (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_86copy(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_86copy(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("copy", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__132 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(0, 7763, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__132); __Pyx_GIVEREF(__pyx_tuple__132); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7763, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_87copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_copy, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_copy_2, __pyx_t_9) < 0) __PYX_ERR(0, 7763, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_copy_2, 7763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(0, 7763, __pyx_L1_error)
07764: self: Memory,
+07765: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 7763, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
07766: r"""Creates a shallow copy.
07767:
07768: Note:
07769: The Cython implementation actually creates a deep copy.
07770:
07771: Returns:
07772: :obj:`ImmutableMemory`: Shallow copy.
07773: """
07774:
+07775: return self.__copy__()
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
07776:
+07777: def count(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_89count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_88count[] = "Memory.count(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> int\nCounts items.\n\n Arguments:\n item (items):\n Reference value to count.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n int: The number of items equal to `value`.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| |[B | a | t]| |[t | a | b]|\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'Bat'], [9, b'tab']])\n >>> memory.count(b'a')\n 2\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_89count = {"count", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_89count, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_88count}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_89count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_88count(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.count", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__134 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(0, 7777, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__134); __Pyx_GIVEREF(__pyx_tuple__134); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7777, __pyx_L1_error) /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_89count, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_count, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_count, __pyx_t_1) < 0) __PYX_ERR(0, 7777, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_count, 7777, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(0, 7777, __pyx_L1_error)
07778: self: Memory,
+07779: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_item, __pyx_t_1) < 0) __PYX_ERR(0, 7777, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07780: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 7777, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+07781: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "count") < 0)) __PYX_ERR(0, 7777, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("count", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7777, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.count", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_88count(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 7777, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_u_int) < 0) __PYX_ERR(0, 7777, __pyx_L1_error)
07782: ) -> int:
07783: r"""Counts items.
07784:
07785: Arguments:
07786: item (items):
07787: Reference value to count.
07788:
07789: start (int):
07790: Inclusive start of the searched range.
07791: If ``None``, :attr:`start` is considered.
07792:
07793: endex (int):
07794: Exclusive end of the searched range.
07795: If ``None``, :attr:`endex` is considered.
07796:
07797: Returns:
07798: int: The number of items equal to `value`.
07799:
07800: Examples:
07801: >>> from cbytesparse.c import Memory
07802:
07803: +---+---+---+---+---+---+---+---+---+---+---+---+
07804: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
07805: +===+===+===+===+===+===+===+===+===+===+===+===+
07806: | |[A | B | C]| |[B | a | t]| |[t | a | b]|
07807: +---+---+---+---+---+---+---+---+---+---+---+---+
07808:
07809: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'Bat'], [9, b'tab']])
07810: >>> memory.count(b'a')
07811: 2
07812: """
07813:
+07814: return Memory_Count(self._, item, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Count(__pyx_v_self->_, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_1 == ((addr_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 7814, __pyx_L1_error) __pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
07815:
+07816: def crop(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_91crop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_90crop[] = "Memory.crop(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> None\nKeeps data within an address range.\n\n Arguments:\n start (int):\n Inclusive start address for cropping.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for cropping.\n If ``None``, :attr:`endex` is considered.\n\n See Also:\n :meth:`crop_backup`\n :meth:`crop_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+\n | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|\n +===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n | | |[B | C]| |[x]| | | |\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])\n >>> memory.crop(6, 10)\n >>> memory.to_blocks()\n [[6, b'BC'], [9, b'x']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_91crop = {"crop", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_91crop, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_90crop}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_91crop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_90crop(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.crop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__136 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__136)) __PYX_ERR(0, 7816, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__136); __Pyx_GIVEREF(__pyx_tuple__136); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7816, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_91crop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_crop, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_crop, __pyx_t_9) < 0) __PYX_ERR(0, 7816, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_crop, 7816, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(0, 7816, __pyx_L1_error)
07817: self: Memory,
+07818: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 7816, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+07819: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "crop") < 0)) __PYX_ERR(0, 7816, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("crop", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7816, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.crop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_90crop(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 7816, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+07820: ) -> None:
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 7816, __pyx_L1_error)
07821: r"""Keeps data within an address range.
07822:
07823: Arguments:
07824: start (int):
07825: Inclusive start address for cropping.
07826: If ``None``, :attr:`start` is considered.
07827:
07828: endex (int):
07829: Exclusive end address for cropping.
07830: If ``None``, :attr:`endex` is considered.
07831:
07832: See Also:
07833: :meth:`crop_backup`
07834: :meth:`crop_restore`
07835:
07836: Examples:
07837: >>> from cbytesparse.c import Memory
07838:
07839: +---+---+---+---+---+---+---+---+---+
07840: | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|
07841: +===+===+===+===+===+===+===+===+===+
07842: | |[A | B | C]| |[x | y | z]| |
07843: +---+---+---+---+---+---+---+---+---+
07844: | | |[B | C]| |[x]| | | |
07845: +---+---+---+---+---+---+---+---+---+
07846:
07847: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])
07848: >>> memory.crop(6, 10)
07849: >>> memory.to_blocks()
07850: [[6, b'BC'], [9, b'x']]
07851: """
07852:
+07853: Memory_Crop(self._, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Crop(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 7853, __pyx_L1_error)
07854:
+07855: def crop_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_93crop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_92crop_backup[] = "Memory.crop_backup(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> Tuple[Optional[ImmutableMemory], Optional[ImmutableMemory]]\nBackups a `crop()` operation.\n\n Arguments:\n start (int):\n Inclusive start address for cropping.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for cropping.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n :obj:`ImmutableMemory` pair: Backup memory regions.\n\n See Also:\n :meth:`crop`\n :meth:`crop_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_93crop_backup = {"crop_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_93crop_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_92crop_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_93crop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_92crop_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; Memory_ const *__pyx_v_memory; Rack_ const *__pyx_v_blocks; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_backup_start = 0; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_backup_endex = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.Memory.crop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_backup_start); __Pyx_XDECREF((PyObject *)__pyx_v_backup_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__138 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_memory, __pyx_n_s_blocks, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_backup_start, __pyx_n_s_backup_endex); if (unlikely(!__pyx_tuple__138)) __PYX_ERR(0, 7855, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__138); __Pyx_GIVEREF(__pyx_tuple__138); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7855, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_93crop_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_crop_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__139)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_crop_backup, __pyx_t_6) < 0) __PYX_ERR(0, 7855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__138, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_crop_backup, 7855, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) __PYX_ERR(0, 7855, __pyx_L1_error)
07856: self: Memory,
+07857: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 7855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+07858: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "crop_backup") < 0)) __PYX_ERR(0, 7855, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("crop_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7855, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.crop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_92crop_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 7855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07859: ) -> Tuple[Optional[ImmutableMemory], Optional[ImmutableMemory]]:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Optional); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 7855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
07860: r"""Backups a `crop()` operation.
07861:
07862: Arguments:
07863: start (int):
07864: Inclusive start address for cropping.
07865: If ``None``, :attr:`start` is considered.
07866:
07867: endex (int):
07868: Exclusive end address for cropping.
07869: If ``None``, :attr:`endex` is considered.
07870:
07871: Returns:
07872: :obj:`ImmutableMemory` pair: Backup memory regions.
07873:
07874: See Also:
07875: :meth:`crop`
07876: :meth:`crop_restore`
07877: """
07878: cdef:
07879: addr_t start_
07880: addr_t endex_
+07881: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+07882: const Rack_* blocks = memory.blocks
__pyx_t_2 = __pyx_v_memory->blocks; __pyx_v_blocks = __pyx_t_2;
07883: addr_t block_start
07884: addr_t block_endex
+07885: Memory backup_start = None
__Pyx_INCREF(Py_None);
__pyx_v_backup_start = ((struct __pyx_obj_11cbytesparse_1c_Memory *)Py_None);
+07886: Memory backup_endex = None
__Pyx_INCREF(Py_None);
__pyx_v_backup_endex = ((struct __pyx_obj_11cbytesparse_1c_Memory *)Py_None);
07887:
+07888: if Rack_Bool(blocks):
__pyx_t_3 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (__pyx_t_3) { /* … */ }
+07889: if start is not None:
__pyx_t_3 = (__pyx_v_start != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* … */ }
+07890: start_ = <addr_t>start
__pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7890, __pyx_L1_error) __pyx_v_start_ = ((addr_t)__pyx_t_5);
+07891: block_start = Block_Start(Rack_First__(blocks))
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_f_11cbytesparse_1c_Rack_First__(__pyx_v_blocks));
+07892: if block_start < start_:
__pyx_t_4 = ((__pyx_v_block_start < __pyx_v_start_) != 0); if (__pyx_t_4) { /* … */ }
+07893: backup_start = Memory_Extract_(memory, block_start, start_, 0, NULL, 1, True)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_memory, __pyx_v_block_start, __pyx_v_start_, 0, NULL, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 7893, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_backup_start, ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_6)); __pyx_t_6 = 0;
07894:
+07895: if endex is not None:
__pyx_t_4 = (__pyx_v_endex != Py_None); __pyx_t_3 = (__pyx_t_4 != 0); if (__pyx_t_3) { /* … */ }
+07896: endex_ = <addr_t>endex
__pyx_t_5 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_5 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7896, __pyx_L1_error) __pyx_v_endex_ = ((addr_t)__pyx_t_5);
+07897: block_endex = Block_Endex(Rack_Last__(blocks))
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks));
+07898: if endex_ < block_endex:
__pyx_t_3 = ((__pyx_v_endex_ < __pyx_v_block_endex) != 0); if (__pyx_t_3) { /* … */ }
+07899: backup_endex = Memory_Extract_(memory, endex_, block_endex, 0, NULL, 1, True)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_memory, __pyx_v_endex_, __pyx_v_block_endex, 0, NULL, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 7899, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_backup_endex, ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_6)); __pyx_t_6 = 0;
07900:
+07901: return backup_start, backup_endex
__Pyx_XDECREF(__pyx_r); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject *)__pyx_v_backup_start)); __Pyx_GIVEREF(((PyObject *)__pyx_v_backup_start)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_backup_start)); __Pyx_INCREF(((PyObject *)__pyx_v_backup_endex)); __Pyx_GIVEREF(((PyObject *)__pyx_v_backup_endex)); PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_backup_endex)); __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
07902:
+07903: def crop_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_95crop_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_94crop_restore[] = "Memory.crop_restore(self: Memory, backup_start: Optional[ImmutableMemory], backup_endex: Optional[ImmutableMemory]) -> None\nRestores a `crop()` operation.\n\n Arguments:\n backup_start (:obj:`ImmutableMemory`):\n Backup memory region to restore at the beginning.\n\n backup_endex (:obj:`ImmutableMemory`):\n Backup memory region to restore at the end.\n\n See Also:\n :meth:`crop`\n :meth:`crop_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_95crop_restore = {"crop_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_95crop_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_94crop_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_95crop_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_backup_start = 0; PyObject *__pyx_v_backup_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_backup_start,&__pyx_n_s_backup_endex,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_backup_start)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_backup_endex)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("crop_restore", 1, 2, 2, 1); __PYX_ERR(0, 7903, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "crop_restore") < 0)) __PYX_ERR(0, 7903, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_backup_start = values[0]; __pyx_v_backup_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("crop_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7903, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.crop_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_94crop_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_backup_start, __pyx_v_backup_endex); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_94crop_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_backup_start, PyObject *__pyx_v_backup_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.crop_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__140 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_backup_start, __pyx_n_s_backup_endex); if (unlikely(!__pyx_tuple__140)) __PYX_ERR(0, 7903, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__140); __Pyx_GIVEREF(__pyx_tuple__140); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7903, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_95crop_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_crop_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_crop_restore, __pyx_t_9) < 0) __PYX_ERR(0, 7903, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__140, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_crop_restore, 7903, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) __PYX_ERR(0, 7903, __pyx_L1_error)
07904: self: Memory,
+07905: backup_start: Optional[ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7905, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7905, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7905, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_backup_start, __pyx_t_1) < 0) __PYX_ERR(0, 7903, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07906: backup_endex: Optional[ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_backup_endex, __pyx_t_9) < 0) __PYX_ERR(0, 7903, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+07907: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 7903, __pyx_L1_error)
07908: r"""Restores a `crop()` operation.
07909:
07910: Arguments:
07911: backup_start (:obj:`ImmutableMemory`):
07912: Backup memory region to restore at the beginning.
07913:
07914: backup_endex (:obj:`ImmutableMemory`):
07915: Backup memory region to restore at the end.
07916:
07917: See Also:
07918: :meth:`crop`
07919: :meth:`crop_backup`
07920: """
07921:
+07922: if backup_start is not None:
__pyx_t_1 = (__pyx_v_backup_start != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+07923: Memory_Write(self._, 0, backup_start, True)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_self->_, __pyx_int_0, __pyx_v_backup_start, 1); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 7923, __pyx_L1_error)
+07924: if backup_endex is not None:
__pyx_t_2 = (__pyx_v_backup_endex != Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+07925: Memory_Write(self._, 0, backup_endex, True)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_self->_, __pyx_int_0, __pyx_v_backup_endex, 1); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 7925, __pyx_L1_error)
07926:
+07927: def cut(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_97cut(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_96cut[] = "Memory.cut(self, start: Optional[Address] = None, endex: Optional[Address] = None, bound: bool = True) -> ImmutableMemory\nCuts a slice of memory.\n\n Arguments:\n start (int):\n Inclusive start address for cutting.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for cutting.\n If ``None``, :attr:`endex` is considered.\n\n bound (bool):\n The selected address range is applied to the resulting memory\n as its trimming range. This retains information about any\n initial and final emptiness of that range, which would be lost\n otherwise.\n\n Returns:\n :obj:`Memory`: A copy of the memory from the selected range.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_97cut = {"cut", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_97cut, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_96cut}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_97cut(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_bound = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("cut (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_bound,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_96cut(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_bound) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("cut", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.cut", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__142 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_bound); if (unlikely(!__pyx_tuple__142)) __PYX_ERR(0, 7927, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__142); __Pyx_GIVEREF(__pyx_tuple__142); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7927, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_97cut, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_cut, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__143)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7927, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_cut, __pyx_t_6) < 0) __PYX_ERR(0, 7927, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__142, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_cut, 7927, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) __PYX_ERR(0, 7927, __pyx_L1_error)
07928: self,
+07929: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_1) < 0) __PYX_ERR(0, 7927, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07930: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 7927, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+07931: bound: bool = True,
values[2] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bound); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cut") < 0)) __PYX_ERR(0, 7927, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_bound = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("cut", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7927, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.cut", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_96cut(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_bound); /* … */ if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_bound, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 7927, __pyx_L1_error)
+07932: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 7927, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
07933: r"""Cuts a slice of memory.
07934:
07935: Arguments:
07936: start (int):
07937: Inclusive start address for cutting.
07938: If ``None``, :attr:`start` is considered.
07939:
07940: endex (int):
07941: Exclusive end address for cutting.
07942: If ``None``, :attr:`endex` is considered.
07943:
07944: bound (bool):
07945: The selected address range is applied to the resulting memory
07946: as its trimming range. This retains information about any
07947: initial and final emptiness of that range, which would be lost
07948: otherwise.
07949:
07950: Returns:
07951: :obj:`Memory`: A copy of the memory from the selected range.
07952: """
07953:
+07954: return Memory_Cut(self._, start, endex, bound)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_bound); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7954, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Cut(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7954, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
07955:
+07956: def delete(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_99delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_98delete[] = "Memory.delete(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> None\nDeletes an address range.\n\n Arguments:\n start (int):\n Inclusive start address for deletion.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for deletion.\n If ``None``, :attr:`endex` is considered.\n\n See Also:\n :meth:`delete_backup`\n :meth:`delete_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+\n | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12| 13|\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | |[A | y | z]| | | | | | |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])\n >>> memory.delete(6, 10)\n >>> memory.to_blocks()\n [[5, b'Ayz']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_99delete = {"delete", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_99delete, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_98delete}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_99delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_98delete(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.delete", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__144 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__144)) __PYX_ERR(0, 7956, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__144); __Pyx_GIVEREF(__pyx_tuple__144); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7956, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_99delete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_delete, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__145)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_delete, __pyx_t_9) < 0) __PYX_ERR(0, 7956, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__145 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_delete, 7956, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__145)) __PYX_ERR(0, 7956, __pyx_L1_error)
07957: self: Memory,
+07958: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_1) < 0) __PYX_ERR(0, 7956, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07959: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "delete") < 0)) __PYX_ERR(0, 7956, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("delete", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7956, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.delete", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_98delete(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 7956, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+07960: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 7956, __pyx_L1_error)
07961: r"""Deletes an address range.
07962:
07963: Arguments:
07964: start (int):
07965: Inclusive start address for deletion.
07966: If ``None``, :attr:`start` is considered.
07967:
07968: endex (int):
07969: Exclusive end address for deletion.
07970: If ``None``, :attr:`endex` is considered.
07971:
07972: See Also:
07973: :meth:`delete_backup`
07974: :meth:`delete_restore`
07975:
07976: Examples:
07977: >>> from cbytesparse.c import Memory
07978:
07979: +---+---+---+---+---+---+---+---+---+---+
07980: | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12| 13|
07981: +===+===+===+===+===+===+===+===+===+===+
07982: | |[A | B | C]| | |[x | y | z]| |
07983: +---+---+---+---+---+---+---+---+---+---+
07984: | |[A | y | z]| | | | | | |
07985: +---+---+---+---+---+---+---+---+---+---+
07986:
07987: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])
07988: >>> memory.delete(6, 10)
07989: >>> memory.to_blocks()
07990: [[5, b'Ayz']]
07991: """
07992:
+07993: Memory_Delete(self._, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Delete(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 7993, __pyx_L1_error)
07994:
+07995: def delete_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_101delete_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_100delete_backup[] = "Memory.delete_backup(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory\nBackups a `delete()` operation.\n\n Arguments:\n start (int):\n Inclusive start address for deletion.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for deletion.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n :obj:`ImmutableMemory`: Backup memory region.\n\n See Also:\n :meth:`delete`\n :meth:`delete_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_101delete_backup = {"delete_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_101delete_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_100delete_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_101delete_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_100delete_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { Memory_ const *__pyx_v_memory; addr_t __pyx_v_start_; addr_t __pyx_v_endex_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.delete_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__146 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_memory, __pyx_n_s_start_2, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__146)) __PYX_ERR(0, 7995, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__146); __Pyx_GIVEREF(__pyx_tuple__146); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 7995, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_101delete_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_delete_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__147)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_delete_backup, __pyx_t_6) < 0) __PYX_ERR(0, 7995, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__147 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__146, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_delete_backup, 7995, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) __PYX_ERR(0, 7995, __pyx_L1_error)
07996: self: Memory,
+07997: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_1) < 0) __PYX_ERR(0, 7995, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+07998: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "delete_backup") < 0)) __PYX_ERR(0, 7995, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("delete_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 7995, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.delete_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_100delete_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 7995, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+07999: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 7995, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
08000: r"""Backups a `delete()` operation.
08001:
08002: Arguments:
08003: start (int):
08004: Inclusive start address for deletion.
08005: If ``None``, :attr:`start` is considered.
08006:
08007: endex (int):
08008: Exclusive end address for deletion.
08009: If ``None``, :attr:`endex` is considered.
08010:
08011: Returns:
08012: :obj:`ImmutableMemory`: Backup memory region.
08013:
08014: See Also:
08015: :meth:`delete`
08016: :meth:`delete_restore`
08017: """
08018: cdef:
+08019: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+08020: addr_t start_ = Memory_Start(memory) if start is None else <addr_t>start
__pyx_t_3 = (__pyx_v_start == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8020, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_start_ = __pyx_t_2;
+08021: addr_t endex_ = Memory_Endex(memory) if endex is None else <addr_t>endex
__pyx_t_3 = (__pyx_v_endex == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8021, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_endex_ = __pyx_t_2;
08022:
+08023: return Memory_Extract_(memory, start_, endex_, 0, NULL, 1, True)
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_memory, __pyx_v_start_, __pyx_v_endex_, 0, NULL, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
08024:
+08025: def delete_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_103delete_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_102delete_restore[] = "Memory.delete_restore(self: Memory, backup: ImmutableMemory) -> None\nRestores a `delete()` operation.\n\n Arguments:\n backup (:obj:`ImmutableMemory`):\n Backup memory region\n\n See Also:\n :meth:`delete`\n :meth:`delete_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_103delete_restore = {"delete_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_103delete_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_102delete_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_103delete_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_102delete_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_backup)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_102delete_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_backup) { Memory_ *__pyx_v_memory; Memory_ const *__pyx_v_backup_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.Memory.delete_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__148 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_backup, __pyx_n_s_memory, __pyx_n_s_backup_2); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(0, 8025, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__148); __Pyx_GIVEREF(__pyx_tuple__148); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8025, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_103delete_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_delete_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_delete_restore, __pyx_t_9) < 0) __PYX_ERR(0, 8025, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__148, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_delete_restore, 8025, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) __PYX_ERR(0, 8025, __pyx_L1_error)
08026: self: Memory,
+08027: backup: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8027, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_backup, __pyx_t_9) < 0) __PYX_ERR(0, 8025, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+08028: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 8025, __pyx_L1_error)
08029: r"""Restores a `delete()` operation.
08030:
08031: Arguments:
08032: backup (:obj:`ImmutableMemory`):
08033: Backup memory region
08034:
08035: See Also:
08036: :meth:`delete`
08037: :meth:`delete_backup`
08038: """
08039: cdef:
+08040: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
08041: const Memory_* backup_
08042:
+08043: if isinstance(backup, Memory):
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_backup, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+08044: backup_ = (<Memory>backup)._
__pyx_t_1 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_backup)->_; __pyx_v_backup_ = __pyx_t_1;
+08045: Memory_Reserve_(memory, Memory_Start(backup_), Memory_Length(backup_))
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Reserve_(__pyx_v_memory, __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_backup_), __pyx_f_11cbytesparse_1c_Memory_Length(__pyx_v_backup_)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8045, __pyx_L1_error)
+08046: Memory_WriteSame_(memory, 0, backup_, True)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_memory, 0, __pyx_v_backup_, 1); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8046, __pyx_L1_error)
08047: else:
+08048: Memory_Reserve(memory, backup.start, len(backup))
/*else*/ { __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_backup, __pyx_n_s_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_Length(__pyx_v_backup); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8048, __pyx_L1_error) __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Reserve(__pyx_v_memory, __pyx_t_5, __pyx_t_7); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08049: Memory_Write(memory, 0, backup, True)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8049, __pyx_L1_error)
}
__pyx_L3:;
08050:
08051: @property
+08052: def endex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5endex_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5endex_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_5endex___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_5endex___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.endex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
08053: self: Memory,
08054: ) -> Address:
08055: r"""int: Exclusive end address.
08056:
08057: This property holds the exclusive end address of the virtual space.
08058: By default, it is the current maximmum exclusive end address of
08059: the last stored block.
08060:
08061: If :attr:`trim_endex` not ``None``, that is returned.
08062:
08063: If the memory has no data and no trimming, :attr:`start` is returned.
08064:
08065: Examples:
08066: >>> from cbytesparse.c import Memory
08067:
08068: >>> Memory().endex
08069: 0
08070:
08071: ~~~
08072:
08073: +---+---+---+---+---+---+---+---+---+
08074: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08075: +===+===+===+===+===+===+===+===+===+
08076: | |[A | B | C]| |[x | y | z]| |
08077: +---+---+---+---+---+---+---+---+---+
08078:
08079: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
08080: >>> memory.endex
08081: 8
08082:
08083: ~~~
08084:
08085: +---+---+---+---+---+---+---+---+---+
08086: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08087: +===+===+===+===+===+===+===+===+===+
08088: | |[A | B | C]| | | | |)))|
08089: +---+---+---+---+---+---+---+---+---+
08090:
08091: >>> memory = Memory.from_blocks([[1, b'ABC']], endex=8)
08092: >>> memory.endex
08093: 8
08094: """
08095:
+08096: return Memory_Endex(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8096, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
08097:
08098: @property
+08099: def endin(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5endin_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5endin_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_5endin___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_5endin___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.endin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
08100: self: Memory,
08101: ) -> Address:
08102: r"""int: Inclusive end address.
08103:
08104: This property holds the inclusive end address of the virtual space.
08105: By default, it is the current maximmum inclusive end address of
08106: the last stored block.
08107:
08108: If :attr:`trim_endex` not ``None``, that minus one is returned.
08109:
08110: If the memory has no data and no trimming, :attr:`start` is returned.
08111:
08112: Examples:
08113: >>> from cbytesparse.c import Memory
08114:
08115: >>> Memory().endin
08116: -1
08117:
08118: ~~~
08119:
08120: +---+---+---+---+---+---+---+---+---+
08121: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08122: +===+===+===+===+===+===+===+===+===+
08123: | |[A | B | C]| |[x | y | z]| |
08124: +---+---+---+---+---+---+---+---+---+
08125:
08126: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
08127: >>> memory.endin
08128: 7
08129:
08130: ~~~
08131:
08132: +---+---+---+---+---+---+---+---+---+
08133: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08134: +===+===+===+===+===+===+===+===+===+
08135: | |[A | B | C]| | | | |)))|
08136: +---+---+---+---+---+---+---+---+---+
08137:
08138: >>> memory = Memory.from_blocks([[1, b'ABC']], endex=8)
08139: >>> memory.endin
08140: 7
08141: """
08142:
+08143: return Memory_Endin(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Endin(__pyx_v_self->_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8143, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
08144:
+08145: def equal_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_105equal_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_104equal_span[] = "Memory.equal_span(self: Memory, address: Address) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]\nSpan of homogeneous data.\n\n It searches for the biggest chunk of data adjacent to the given\n address, with the same value at that address.\n\n If the address is within a gap, its bounds are returned, and its\n value is ``None``.\n\n If the address is before or after any data, bounds are ``None``.\n\n Arguments:\n address (int):\n Reference address.\n\n Returns:\n tuple: Start bound, exclusive end bound, and reference value.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> memory = Memory()\n >>> memory.equal_span(0)\n (None, None, None)\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n |[A | B | B | B | C]| | |[C | C | D]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n | 65| 66| 66| 66| 67| | | 67| 67| 68| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[0, b'ABBBC'], [7, b'CCD']])\n >>> memory.equal_span(2)\n (1, 4, 66)\n >>> memory.equal_span(4)\n (4, 5, 67)\n >>> memory.equal_span(5)\n (5, 7, None)\n >>> memory.equal_span(10)\n (10, None, None)\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_105equal_span = {"equal_span", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_105equal_span, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_104equal_span}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_105equal_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("equal_span (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_104equal_span(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_104equal_span(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; Block_ const *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; addr_t __pyx_v_address_; addr_t __pyx_v_start; addr_t __pyx_v_endex; size_t __pyx_v_offset; byte_t __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("equal_span", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cbytesparse.c.Memory.equal_span", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__150 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_address_2, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_offset, __pyx_n_s_value); if (unlikely(!__pyx_tuple__150)) __PYX_ERR(0, 8145, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__150); __Pyx_GIVEREF(__pyx_tuple__150); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8145, __pyx_L1_error) /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_105equal_span, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_equal_span, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__151)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_equal_span, __pyx_t_5) < 0) __PYX_ERR(0, 8145, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__151 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__150, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_equal_span, 8145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) __PYX_ERR(0, 8145, __pyx_L1_error)
08146: self: Memory,
+08147: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 8145, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08148: ) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Optional); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Address); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Optional); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_5) < 0) __PYX_ERR(0, 8145, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
08149: r"""Span of homogeneous data.
08150:
08151: It searches for the biggest chunk of data adjacent to the given
08152: address, with the same value at that address.
08153:
08154: If the address is within a gap, its bounds are returned, and its
08155: value is ``None``.
08156:
08157: If the address is before or after any data, bounds are ``None``.
08158:
08159: Arguments:
08160: address (int):
08161: Reference address.
08162:
08163: Returns:
08164: tuple: Start bound, exclusive end bound, and reference value.
08165:
08166: Examples:
08167: >>> from cbytesparse.c import Memory
08168:
08169: >>> memory = Memory()
08170: >>> memory.equal_span(0)
08171: (None, None, None)
08172:
08173: ~~~
08174:
08175: +---+---+---+---+---+---+---+---+---+---+---+
08176: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
08177: +===+===+===+===+===+===+===+===+===+===+===+
08178: |[A | B | B | B | C]| | |[C | C | D]| |
08179: +---+---+---+---+---+---+---+---+---+---+---+
08180: | 65| 66| 66| 66| 67| | | 67| 67| 68| |
08181: +---+---+---+---+---+---+---+---+---+---+---+
08182:
08183: >>> memory = Memory.from_blocks([[0, b'ABBBC'], [7, b'CCD']])
08184: >>> memory.equal_span(2)
08185: (1, 4, 66)
08186: >>> memory.equal_span(4)
08187: (4, 5, 67)
08188: >>> memory.equal_span(5)
08189: (5, 7, None)
08190: >>> memory.equal_span(10)
08191: (10, None, None)
08192: """
08193: cdef:
+08194: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_v_self->_->blocks; __pyx_v_blocks = __pyx_t_1;
+08195: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
08196: size_t block_index
08197: size_t block_index_start
08198: size_t block_index_endex
08199: const Block_* block
08200: addr_t block_start
08201: addr_t block_endex
+08202: addr_t address_ = <addr_t>address
__pyx_t_2 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_2 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8202, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_2);
08203: addr_t start
08204: addr_t endex
08205: size_t offset
08206: byte_t value
08207:
+08208: block_index = Rack_IndexStart(blocks, address_)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_v_address_);
08209:
+08210: if block_index < block_count:
__pyx_t_3 = ((__pyx_v_block_index < __pyx_v_block_count) != 0); if (__pyx_t_3) { /* … */ }
+08211: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+08212: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+08213: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
08214:
+08215: if block_start <= address_ < block_endex:
__pyx_t_3 = (__pyx_v_block_start <= __pyx_v_address_); if (__pyx_t_3) { __pyx_t_3 = (__pyx_v_address_ < __pyx_v_block_endex); } __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* … */ }
08216: # Address within a block
+08217: CheckSubAddrU(address_, block_start)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckSubAddrU(__pyx_v_address_, __pyx_v_block_start); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8217, __pyx_L1_error)
+08218: CheckAddrToSizeU(address - block_start)
__pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyNumber_Subtract(__pyx_v_address, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_7); if (unlikely((__pyx_t_2 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8218, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddrToSizeU(__pyx_t_2); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8218, __pyx_L1_error)
+08219: offset = <size_t>(address_ - block_start)
__pyx_v_offset = ((size_t)(__pyx_v_address_ - __pyx_v_block_start));
+08220: start = offset
__pyx_v_start = __pyx_v_offset;
+08221: CheckAddAddrU(offset, 1)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_offset, 1); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8221, __pyx_L1_error)
+08222: endex = offset + 1
__pyx_v_endex = (__pyx_v_offset + 1);
+08223: value = Block_Get__(block, offset)
__pyx_v_value = __pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, __pyx_v_offset);
08224:
+08225: for start in range(start + 1, 0, -1):
for (__pyx_t_2 = (__pyx_v_start + 1) + 1; __pyx_t_2 > 0 + 1; ) { __pyx_t_2-=1; __pyx_v_start = __pyx_t_2;
+08226: if Block_Get__(block, start - 1) != value:
__pyx_t_4 = ((__pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, (__pyx_v_start - 1)) != __pyx_v_value) != 0); if (__pyx_t_4) { /* … */ } } /*else*/ {
+08227: break
goto __pyx_L6_break;
08228: else:
+08229: start = 0
__pyx_v_start = 0; } __pyx_L6_break:;
08230:
+08231: for endex in range(endex, Block_Length(block)):
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block); __pyx_t_9 = __pyx_t_8; for (__pyx_t_2 = __pyx_v_endex; __pyx_t_2 < __pyx_t_9; __pyx_t_2+=1) { __pyx_v_endex = __pyx_t_2;
+08232: if Block_Get__(block, endex) != value:
__pyx_t_4 = ((__pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, __pyx_v_endex) != __pyx_v_value) != 0); if (__pyx_t_4) { /* … */ } } /*else*/ {
+08233: break
goto __pyx_L9_break;
08234: else:
+08235: endex = Block_Length(block)
__pyx_v_endex = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block); } __pyx_L9_break:;
08236:
+08237: block_endex = block_start + endex
__pyx_v_block_endex = (__pyx_v_block_start + __pyx_v_endex);
+08238: block_start = block_start + start
__pyx_v_block_start = (__pyx_v_block_start + __pyx_v_start);
+08239: return block_start, block_endex, value # equal data span
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_start); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_endex); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyInt_From_byte_t(__pyx_v_value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_10); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_10 = 0; __pyx_r = __pyx_t_11; __pyx_t_11 = 0; goto __pyx_L0;
08240:
+08241: elif block_index:
__pyx_t_4 = (__pyx_v_block_index != 0); if (__pyx_t_4) { /* … */ }
08242: # Address within a gap
+08243: block_endex = block_start # end gap before next block
__pyx_v_block_endex = __pyx_v_block_start;
+08244: block = Rack_Get__(blocks, block_index - 1)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, (__pyx_v_block_index - 1));
+08245: block_start = Block_Endex(block) # start gap after previous block
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+08246: return block_start, block_endex, None # gap span
__Pyx_XDECREF(__pyx_r); __pyx_t_11 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_start); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_endex); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_10); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_6, 2, Py_None); __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
08247:
08248: else:
08249: # Address before content
+08250: return None, block_start, None # open left
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_10, 0, Py_None); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_10, 2, Py_None); __pyx_t_6 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L0; }
08251:
08252: else:
08253: # Address after content
+08254: if block_count:
/*else*/ { __pyx_t_4 = (__pyx_v_block_count != 0); if (__pyx_t_4) { /* … */ }
+08255: block = Rack_Last__(blocks)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Last__(__pyx_v_blocks);
+08256: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+08257: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+08258: return block_endex, None, None # open right
__Pyx_XDECREF(__pyx_r); __pyx_t_10 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_block_endex); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_6, 1, Py_None); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_6, 2, Py_None); __pyx_t_10 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
08259:
08260: else:
+08261: return None, None, None # fully open
/*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_tuple__29); __pyx_r = __pyx_tuple__29; goto __pyx_L0; } }
08262:
+08263: def extend(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_107extend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_106extend[] = "Memory.extend(self: Memory, items: Union[AnyBytes, ImmutableMemory], offset: Address = 0) -> None\nConcatenates items.\n\n Equivalent to ``self += items``.\n\n Arguments:\n items (items):\n Items to append at the end of the current virtual space.\n\n offset (int):\n Optional offset w.r.t. :attr:`content_endex`.\n\n See Also:\n :meth:`extend_backup`\n :meth:`extend_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_107extend = {"extend", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_107extend, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_106extend}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_107extend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_items = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extend (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,&__pyx_n_s_offset,0}; PyObject* values[2] = {0,0}; values[1] = ((PyObject *)__pyx_int_0); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extend") < 0)) __PYX_ERR(0, 8263, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_items = values[0]; __pyx_v_offset = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("extend", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8263, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.extend", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_106extend(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_items, __pyx_v_offset); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_106extend(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_items, PyObject *__pyx_v_offset) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extend", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.extend", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__152 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_items, __pyx_n_s_offset); if (unlikely(!__pyx_tuple__152)) __PYX_ERR(0, 8263, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__152); __Pyx_GIVEREF(__pyx_tuple__152); /* … */ __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8263, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_107extend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_extend, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__153)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_extend, __pyx_t_6) < 0) __PYX_ERR(0, 8263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__153 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__152, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_extend, 8263, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__153)) __PYX_ERR(0, 8263, __pyx_L1_error)
08264: self: Memory,
+08265: items: Union[AnyBytes, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Union); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_items, __pyx_t_6) < 0) __PYX_ERR(0, 8263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08266: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_offset, __pyx_t_6) < 0) __PYX_ERR(0, 8263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08267: ) -> None:
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 8263, __pyx_L1_error)
08268: r"""Concatenates items.
08269:
08270: Equivalent to ``self += items``.
08271:
08272: Arguments:
08273: items (items):
08274: Items to append at the end of the current virtual space.
08275:
08276: offset (int):
08277: Optional offset w.r.t. :attr:`content_endex`.
08278:
08279: See Also:
08280: :meth:`extend_backup`
08281: :meth:`extend_restore`
08282: """
08283:
+08284: return Memory_Extend(self._, items, offset)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Extend(__pyx_v_self->_, __pyx_v_items, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8284, __pyx_L1_error) __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
08285:
+08286: def extend_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_109extend_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_108extend_backup[] = "Memory.extend_backup(self: Memory, offset: Address = 0) -> Address\nBackups an `extend()` operation.\n\n Arguments:\n offset (int):\n Optional offset w.r.t. :attr:`content_endex`.\n\n Returns:\n int: Content exclusive end address.\n\n See Also:\n :meth:`extend`\n :meth:`extend_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_109extend_backup = {"extend_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_109extend_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_108extend_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_109extend_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_offset = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extend_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,0}; PyObject* values[1] = {0}; values[0] = ((PyObject *)__pyx_int_0); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extend_backup") < 0)) __PYX_ERR(0, 8286, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_offset = values[0]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("extend_backup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8286, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.extend_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_108extend_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_offset); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_108extend_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_offset) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extend_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.extend_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__154 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_offset); if (unlikely(!__pyx_tuple__154)) __PYX_ERR(0, 8286, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__154); __Pyx_GIVEREF(__pyx_tuple__154); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8286, __pyx_L1_error) /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_109extend_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_extend_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__155)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_extend_backup, __pyx_t_5) < 0) __PYX_ERR(0, 8286, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__155 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__154, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_extend_backup, 8286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__155)) __PYX_ERR(0, 8286, __pyx_L1_error)
08287: self: Memory,
+08288: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Address); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_5) < 0) __PYX_ERR(0, 8286, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08289: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Address); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_5) < 0) __PYX_ERR(0, 8286, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
08290: r"""Backups an `extend()` operation.
08291:
08292: Arguments:
08293: offset (int):
08294: Optional offset w.r.t. :attr:`content_endex`.
08295:
08296: Returns:
08297: int: Content exclusive end address.
08298:
08299: See Also:
08300: :meth:`extend`
08301: :meth:`extend_restore`
08302: """
08303:
+08304: if offset < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8304, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 8304, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+08305: raise ValueError('negative extension offset')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 8305, __pyx_L1_error)
+08306: return Memory_ContentEndex(self._) + <addr_t>offset
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_offset); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8306, __pyx_L1_error) __pyx_t_1 = __Pyx_PyInt_From_uint_fast64_t((__pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_self->_) + ((addr_t)__pyx_t_3))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
08307:
+08308: def extend_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_111extend_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_content_endex); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_110extend_restore[] = "Memory.extend_restore(self: Memory, content_endex: Address) -> None\nRestores an `extend()` operation.\n\n Arguments:\n content_endex (int):\n Content exclusive end address to restore.\n\n See Also:\n :meth:`extend`\n :meth:`extend_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_111extend_restore = {"extend_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_111extend_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_110extend_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_111extend_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_content_endex) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extend_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_110extend_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_content_endex)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_110extend_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_content_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extend_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.extend_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__156 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_content_endex); if (unlikely(!__pyx_tuple__156)) __PYX_ERR(0, 8308, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__156); __Pyx_GIVEREF(__pyx_tuple__156); /* … */ __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8308, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_111extend_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_extend_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_extend_restore, __pyx_t_6) < 0) __PYX_ERR(0, 8308, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_extend_restore, 8308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(0, 8308, __pyx_L1_error)
08309: self: Memory,
+08310: content_endex: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_content_endex, __pyx_t_6) < 0) __PYX_ERR(0, 8308, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08311: ) -> None:
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 8308, __pyx_L1_error)
08312: r"""Restores an `extend()` operation.
08313:
08314: Arguments:
08315: content_endex (int):
08316: Content exclusive end address to restore.
08317:
08318: See Also:
08319: :meth:`extend`
08320: :meth:`extend_backup`
08321: """
08322:
+08323: Memory_Clear_(self._, <addr_t>content_endex, ADDR_MAX)
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_content_endex); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8323, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Clear_(__pyx_v_self->_, ((addr_t)__pyx_t_1), ADDR_MAX); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8323, __pyx_L1_error)
08324:
+08325: def extract(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_113extract(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_112extract[] = "Memory.extract(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None, pattern: Optional[Union[AnyBytes, Value]] = None, step: Optional[Address] = None, bound: bool = True) -> ImmutableMemory\nSelects items from a range.\n\n Arguments:\n start (int):\n Inclusive start of the extracted range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the extracted range.\n If ``None``, :attr:`endex` is considered.\n\n pattern (items):\n Optional pattern of items to fill the emptiness.\n\n step (int):\n Optional address stepping between bytes extracted from the\n range. It has the same meaning of Python's :attr:`slice.step`,\n but negative steps are ignored.\n Please note that a `step` greater than 1 could take much more\n time to process than the default unitary step.\n\n bound (bool):\n The selected address range is applied to the resulting memory\n as its trimming range. This retains information about any\n initial and final emptiness of that range, which would be lost\n otherwise.\n\n Returns:\n :obj:`ImmutableMemory`: A copy of the memory from the selected range.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.extract().to_blocks()\n [[1, b'ABCD'], [6, b'$'], [8, b'xyz']]\n "" >>> memory.extract(2, 9).to_blocks()\n [[2, b'BCD'], [6, b'$'], [8, b'x']]\n >>> memory.extract(start=2).to_blocks()\n [[2, b'BCD'], [6, b'$'], [8, b'xyz']]\n >>> memory.extract(endex=9).to_blocks()\n [[1, b'ABCD'], [6, b'$'], [8, b'x']]\n >>> memory.extract(5, 8).span\n (5, 8)\n >>> memory.extract(pattern=b'.').to_blocks()\n [[1, b'ABCD.$.xyz']]\n >>> memory.extract(pattern=b'.', step=3).to_blocks()\n [[1, b'AD.z']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_113extract = {"extract", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_113extract, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_112extract}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_113extract(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_v_step = 0; PyObject *__pyx_v_bound = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extract (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,&__pyx_n_s_step,&__pyx_n_s_bound,0}; PyObject* values[5] = {0,0,0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_112extract(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern, PyObject *__pyx_v_step, PyObject *__pyx_v_bound) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extract", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.extract", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__158 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_step, __pyx_n_s_bound); if (unlikely(!__pyx_tuple__158)) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__158); __Pyx_GIVEREF(__pyx_tuple__158); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8325, __pyx_L1_error) /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_113extract, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_extract, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__159)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_extract, __pyx_t_5) < 0) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_extract, 8325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) __PYX_ERR(0, 8325, __pyx_L1_error)
08326: self: Memory,
+08327: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+08328: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_5) < 0) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08329: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __pyx_t_9 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_pattern, __pyx_t_2) < 0) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08330: step: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_step, __pyx_t_5) < 0) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08331: bound: bool = True,
values[4] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_step); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bound); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) __PYX_ERR(0, 8325, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; __pyx_v_step = values[3]; __pyx_v_bound = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("extract", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8325, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.extract", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_112extract(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern, __pyx_v_step, __pyx_v_bound); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_bound, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8325, __pyx_L1_error)
+08332: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_5) < 0) __PYX_ERR(0, 8325, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
08333: r"""Selects items from a range.
08334:
08335: Arguments:
08336: start (int):
08337: Inclusive start of the extracted range.
08338: If ``None``, :attr:`start` is considered.
08339:
08340: endex (int):
08341: Exclusive end of the extracted range.
08342: If ``None``, :attr:`endex` is considered.
08343:
08344: pattern (items):
08345: Optional pattern of items to fill the emptiness.
08346:
08347: step (int):
08348: Optional address stepping between bytes extracted from the
08349: range. It has the same meaning of Python's :attr:`slice.step`,
08350: but negative steps are ignored.
08351: Please note that a `step` greater than 1 could take much more
08352: time to process than the default unitary step.
08353:
08354: bound (bool):
08355: The selected address range is applied to the resulting memory
08356: as its trimming range. This retains information about any
08357: initial and final emptiness of that range, which would be lost
08358: otherwise.
08359:
08360: Returns:
08361: :obj:`ImmutableMemory`: A copy of the memory from the selected range.
08362:
08363: Examples:
08364: >>> from cbytesparse.c import Memory
08365:
08366: +---+---+---+---+---+---+---+---+---+---+---+---+
08367: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
08368: +===+===+===+===+===+===+===+===+===+===+===+===+
08369: | |[A | B | C | D]| |[$]| |[x | y | z]| |
08370: +---+---+---+---+---+---+---+---+---+---+---+---+
08371:
08372: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
08373: >>> memory.extract().to_blocks()
08374: [[1, b'ABCD'], [6, b'$'], [8, b'xyz']]
08375: >>> memory.extract(2, 9).to_blocks()
08376: [[2, b'BCD'], [6, b'$'], [8, b'x']]
08377: >>> memory.extract(start=2).to_blocks()
08378: [[2, b'BCD'], [6, b'$'], [8, b'xyz']]
08379: >>> memory.extract(endex=9).to_blocks()
08380: [[1, b'ABCD'], [6, b'$'], [8, b'x']]
08381: >>> memory.extract(5, 8).span
08382: (5, 8)
08383: >>> memory.extract(pattern=b'.').to_blocks()
08384: [[1, b'ABCD.$.xyz']]
08385: >>> memory.extract(pattern=b'.', step=3).to_blocks()
08386: [[1, b'AD.z']]
08387: """
08388:
+08389: return Memory_Extract(self._, start, endex, pattern, step, bound)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_bound); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8389, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Extract(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, __pyx_v_pattern, __pyx_v_step, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
08390:
+08391: def fill(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_115fill(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_114fill[] = "Memory.fill(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None, pattern: Union[AnyBytes, Value] = 0) -> None\nOverwrites a range with a pattern.\n\n Arguments:\n start (int):\n Inclusive start address for filling.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for filling.\n If ``None``, :attr:`endex` is considered.\n\n pattern (items):\n Pattern of items to fill the range.\n\n See Also:\n :meth:`fill_backup`\n :meth:`fill_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | |[1 | 2 | 3 | 1 | 2 | 3 | 1 | 2]| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> memory.fill(pattern=b'123')\n >>> memory.to_blocks()\n [[1, b'12312312']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | |[A | B | 1 | 2 | 3 | 1 | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> memory.fill(3, 7, b'123')\n >>> memory.to_blocks()\n [[1, b'AB1231yz']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_115fill = {"fill", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_115fill, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_114fill}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_115fill(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_114fill(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.fill", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__160 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern); if (unlikely(!__pyx_tuple__160)) __PYX_ERR(0, 8391, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__160); __Pyx_GIVEREF(__pyx_tuple__160); /* … */ __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8391, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_115fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_fill, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__161)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(0, 8391, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__161 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__160, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_fill, 8391, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__161)) __PYX_ERR(0, 8391, __pyx_L1_error)
08392: self: Memory,
+08393: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_t_2) < 0) __PYX_ERR(0, 8391, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08394: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); values[2] = ((PyObject *)__pyx_int_0); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fill") < 0)) __PYX_ERR(0, 8391, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fill", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8391, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.fill", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_114fill(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 8391, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08395: pattern: Union[AnyBytes, Value] = 0,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_pattern, __pyx_t_2) < 0) __PYX_ERR(0, 8391, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08396: ) -> None:
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 8391, __pyx_L1_error)
08397: r"""Overwrites a range with a pattern.
08398:
08399: Arguments:
08400: start (int):
08401: Inclusive start address for filling.
08402: If ``None``, :attr:`start` is considered.
08403:
08404: endex (int):
08405: Exclusive end address for filling.
08406: If ``None``, :attr:`endex` is considered.
08407:
08408: pattern (items):
08409: Pattern of items to fill the range.
08410:
08411: See Also:
08412: :meth:`fill_backup`
08413: :meth:`fill_restore`
08414:
08415: Examples:
08416: >>> from cbytesparse.c import Memory
08417:
08418: +---+---+---+---+---+---+---+---+---+---+
08419: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
08420: +===+===+===+===+===+===+===+===+===+===+
08421: | |[A | B | C]| | |[x | y | z]| |
08422: +---+---+---+---+---+---+---+---+---+---+
08423: | |[1 | 2 | 3 | 1 | 2 | 3 | 1 | 2]| |
08424: +---+---+---+---+---+---+---+---+---+---+
08425:
08426: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
08427: >>> memory.fill(pattern=b'123')
08428: >>> memory.to_blocks()
08429: [[1, b'12312312']]
08430:
08431: ~~~
08432:
08433: +---+---+---+---+---+---+---+---+---+---+
08434: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
08435: +===+===+===+===+===+===+===+===+===+===+
08436: | |[A | B | C]| | |[x | y | z]| |
08437: +---+---+---+---+---+---+---+---+---+---+
08438: | |[A | B | 1 | 2 | 3 | 1 | y | z]| |
08439: +---+---+---+---+---+---+---+---+---+---+
08440:
08441: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
08442: >>> memory.fill(3, 7, b'123')
08443: >>> memory.to_blocks()
08444: [[1, b'AB1231yz']]
08445: """
08446:
+08447: Memory_Fill(self._, start, endex, pattern)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Fill(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8447, __pyx_L1_error)
08448:
+08449: def fill_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_117fill_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_116fill_backup[] = "Memory.fill_backup(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory\nBackups a `fill()` operation.\n\n Arguments:\n start (int):\n Inclusive start address for filling.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for filling.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n :obj:`ImmutableMemory`: Backup memory region.\n\n See Also:\n :meth:`fill`\n :meth:`fill_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_117fill_backup = {"fill_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_117fill_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_116fill_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_117fill_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_116fill_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { Memory_ const *__pyx_v_memory; addr_t __pyx_v_start_; addr_t __pyx_v_endex_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.fill_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__162 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_memory, __pyx_n_s_start_2, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__162)) __PYX_ERR(0, 8449, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__162); __Pyx_GIVEREF(__pyx_tuple__162); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8449, __pyx_L1_error) /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_117fill_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_fill_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__163)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_fill_backup, __pyx_t_5) < 0) __PYX_ERR(0, 8449, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__163 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__162, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_fill_backup, 8449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__163)) __PYX_ERR(0, 8449, __pyx_L1_error)
08450: self: Memory,
+08451: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 8449, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08452: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fill_backup") < 0)) __PYX_ERR(0, 8449, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fill_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8449, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.fill_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_116fill_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_t_5) < 0) __PYX_ERR(0, 8449, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08453: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_t_5) < 0) __PYX_ERR(0, 8449, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
08454: r"""Backups a `fill()` operation.
08455:
08456: Arguments:
08457: start (int):
08458: Inclusive start address for filling.
08459: If ``None``, :attr:`start` is considered.
08460:
08461: endex (int):
08462: Exclusive end address for filling.
08463: If ``None``, :attr:`endex` is considered.
08464:
08465: Returns:
08466: :obj:`ImmutableMemory`: Backup memory region.
08467:
08468: See Also:
08469: :meth:`fill`
08470: :meth:`fill_restore`
08471: """
08472: cdef:
+08473: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+08474: addr_t start_ = Memory_Start(memory) if start is None else <addr_t>start
__pyx_t_3 = (__pyx_v_start == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8474, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_start_ = __pyx_t_2;
+08475: addr_t endex_ = Memory_Endex(memory) if endex is None else <addr_t>endex
__pyx_t_3 = (__pyx_v_endex == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8475, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_endex_ = __pyx_t_2;
08476:
+08477: return Memory_Extract_(memory, start_, endex_, 0, NULL, 1, True)
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_memory, __pyx_v_start_, __pyx_v_endex_, 0, NULL, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
08478:
+08479: def fill_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_119fill_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_118fill_restore[] = "Memory.fill_restore(self: Memory, backup: ImmutableMemory) -> None\nRestores a `fill()` operation.\n\n Arguments:\n backup (:obj:`ImmutableMemory`):\n Backup memory region to restore.\n\n See Also:\n :meth:`fill`\n :meth:`fill_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_119fill_restore = {"fill_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_119fill_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_118fill_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_119fill_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_118fill_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_backup)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_118fill_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_backup) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.fill_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__164 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_backup); if (unlikely(!__pyx_tuple__164)) __PYX_ERR(0, 8479, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__164); __Pyx_GIVEREF(__pyx_tuple__164); /* … */ __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8479, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_119fill_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_fill_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__165)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_fill_restore, __pyx_t_2) < 0) __PYX_ERR(0, 8479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__165 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_fill_restore, 8479, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__165)) __PYX_ERR(0, 8479, __pyx_L1_error)
08480: self: Memory,
+08481: backup: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_backup, __pyx_t_2) < 0) __PYX_ERR(0, 8479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08482: ) -> None:
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 8479, __pyx_L1_error)
08483: r"""Restores a `fill()` operation.
08484:
08485: Arguments:
08486: backup (:obj:`ImmutableMemory`):
08487: Backup memory region to restore.
08488:
08489: See Also:
08490: :meth:`fill`
08491: :meth:`fill_backup`
08492: """
08493:
+08494: Memory_Write(self._, 0, backup, True)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_self->_, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8494, __pyx_L1_error)
08495:
+08496: def find(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_121find(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_120find[] = "Memory.find(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address\nIndex of an item.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n int: The index of the first item equal to `value`, or -1.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_121find = {"find", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_121find, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_120find}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_121find(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("find (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_120find(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("find", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.find", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__166 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__166)) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__166); __Pyx_GIVEREF(__pyx_tuple__166); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8496, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_121find, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_find, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__167)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_find, __pyx_t_6) < 0) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__167 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__166, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_find, 8496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__167)) __PYX_ERR(0, 8496, __pyx_L1_error)
08497: self: Memory,
+08498: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Union); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08499: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_t_5) < 0) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08500: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find") < 0)) __PYX_ERR(0, 8496, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("find", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8496, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.find", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_120find(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08501: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 8496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
08502: r"""Index of an item.
08503:
08504: Arguments:
08505: item (items):
08506: Value to find. Can be either some byte string or an integer.
08507:
08508: start (int):
08509: Inclusive start of the searched range.
08510: If ``None``, :attr:`endex` is considered.
08511:
08512: endex (int):
08513: Exclusive end of the searched range.
08514: If ``None``, :attr:`endex` is considered.
08515:
08516: Returns:
08517: int: The index of the first item equal to `value`, or -1.
08518: """
08519:
+08520: return Memory_Find(self._, item, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Find(__pyx_v_self->_, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
08521:
+08522: def flood(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_123flood(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_122flood[] = "Memory.flood(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None, pattern: Union[AnyBytes, Value] = 0) -> None\nFills emptiness between non-touching blocks.\n\n Arguments:\n start (int):\n Inclusive start address for flooding.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for flooding.\n If ``None``, :attr:`endex` is considered.\n\n pattern (items):\n Pattern of items to fill the range.\n\n See Also:\n :meth:`flood_backup`\n :meth:`flood_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C | 1 | 2 | x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> memory.flood(pattern=b'123')\n >>> memory.to_blocks()\n [[1, b'ABC12xyz']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C | 2 | 3 | x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> memory.flood(3, 7, b'123')\n >>> memory.to_blocks()\n [[1, b'ABC23xyz']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_123flood = {"flood", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_123flood, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_122flood}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_123flood(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_122flood(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.flood", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__168 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(0, 8522, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__168); __Pyx_GIVEREF(__pyx_tuple__168); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8522, __pyx_L1_error) /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_123flood, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_flood, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__169)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_flood, __pyx_t_5) < 0) __PYX_ERR(0, 8522, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__169 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__168, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_flood, 8522, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__169)) __PYX_ERR(0, 8522, __pyx_L1_error)
08523: self: Memory,
+08524: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_5) < 0) __PYX_ERR(0, 8522, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08525: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); values[2] = ((PyObject *)__pyx_int_0); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "flood") < 0)) __PYX_ERR(0, 8522, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("flood", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8522, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.flood", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_122flood(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_2) < 0) __PYX_ERR(0, 8522, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08526: pattern: Union[AnyBytes, Value] = 0,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_pattern, __pyx_t_5) < 0) __PYX_ERR(0, 8522, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08527: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 8522, __pyx_L1_error)
08528: r"""Fills emptiness between non-touching blocks.
08529:
08530: Arguments:
08531: start (int):
08532: Inclusive start address for flooding.
08533: If ``None``, :attr:`start` is considered.
08534:
08535: endex (int):
08536: Exclusive end address for flooding.
08537: If ``None``, :attr:`endex` is considered.
08538:
08539: pattern (items):
08540: Pattern of items to fill the range.
08541:
08542: See Also:
08543: :meth:`flood_backup`
08544: :meth:`flood_restore`
08545:
08546: Examples:
08547: >>> from cbytesparse.c import Memory
08548:
08549: +---+---+---+---+---+---+---+---+---+---+
08550: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
08551: +===+===+===+===+===+===+===+===+===+===+
08552: | |[A | B | C]| | |[x | y | z]| |
08553: +---+---+---+---+---+---+---+---+---+---+
08554: | |[A | B | C | 1 | 2 | x | y | z]| |
08555: +---+---+---+---+---+---+---+---+---+---+
08556:
08557: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
08558: >>> memory.flood(pattern=b'123')
08559: >>> memory.to_blocks()
08560: [[1, b'ABC12xyz']]
08561:
08562: ~~~
08563:
08564: +---+---+---+---+---+---+---+---+---+---+
08565: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
08566: +===+===+===+===+===+===+===+===+===+===+
08567: | |[A | B | C]| | |[x | y | z]| |
08568: +---+---+---+---+---+---+---+---+---+---+
08569: | |[A | B | C | 2 | 3 | x | y | z]| |
08570: +---+---+---+---+---+---+---+---+---+---+
08571:
08572: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
08573: >>> memory.flood(3, 7, b'123')
08574: >>> memory.to_blocks()
08575: [[1, b'ABC23xyz']]
08576: """
08577:
+08578: Memory_Flood(self._, start, endex, pattern)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Flood(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8578, __pyx_L1_error)
08579:
+08580: def flood_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_125flood_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_124flood_backup[] = "Memory.flood_backup(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> List[OpenInterval]\nBackups a `flood()` operation.\n\n Arguments:\n start (int):\n Inclusive start address for filling.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for filling.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n list of open intervals: Backup memory gaps.\n\n See Also:\n :meth:`flood`\n :meth:`flood_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_125flood_backup = {"flood_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_125flood_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_124flood_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_125flood_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_124flood_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.flood_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__170 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(0, 8580, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__170); __Pyx_GIVEREF(__pyx_tuple__170); /* … */ __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8580, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_125flood_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_flood_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__171)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_flood_backup, __pyx_t_2) < 0) __PYX_ERR(0, 8580, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__171 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_flood_backup, 8580, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__171)) __PYX_ERR(0, 8580, __pyx_L1_error)
08581: self: Memory,
+08582: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_t_2) < 0) __PYX_ERR(0, 8580, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08583: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "flood_backup") < 0)) __PYX_ERR(0, 8580, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("flood_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8580, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.flood_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_124flood_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 8580, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08584: ) -> List[OpenInterval]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_List); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_OpenInterval); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return, __pyx_t_2) < 0) __PYX_ERR(0, 8580, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
08585: r"""Backups a `flood()` operation.
08586:
08587: Arguments:
08588: start (int):
08589: Inclusive start address for filling.
08590: If ``None``, :attr:`start` is considered.
08591:
08592: endex (int):
08593: Exclusive end address for filling.
08594: If ``None``, :attr:`endex` is considered.
08595:
08596: Returns:
08597: list of open intervals: Backup memory gaps.
08598:
08599: See Also:
08600: :meth:`flood`
08601: :meth:`flood_restore`
08602: """
08603:
+08604: return list(self.gaps(start, endex))
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_gaps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8604, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8604, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
08605:
+08606: def flood_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_127flood_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_gaps); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_126flood_restore[] = "Memory.flood_restore(self: Memory, gaps: List[OpenInterval]) -> None\nRestores a `flood()` operation.\n\n Arguments:\n gaps (list of open intervals):\n Backup memory gaps to restore.\n\n See Also:\n :meth:`flood`\n :meth:`flood_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_127flood_restore = {"flood_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_127flood_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_126flood_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_127flood_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_gaps) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_126flood_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_gaps)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_126flood_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_gaps) { Memory_ *__pyx_v_memory; PyObject *__pyx_v_gap_start = NULL; PyObject *__pyx_v_gap_endex = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cbytesparse.c.Memory.flood_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_gap_start); __Pyx_XDECREF(__pyx_v_gap_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__172 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_gaps, __pyx_n_s_memory, __pyx_n_s_gap_start, __pyx_n_s_gap_endex); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(0, 8606, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__172); __Pyx_GIVEREF(__pyx_tuple__172); /* … */ __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8606, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_127flood_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_flood_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_flood_restore, __pyx_t_6) < 0) __PYX_ERR(0, 8606, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_flood_restore, 8606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) __PYX_ERR(0, 8606, __pyx_L1_error)
08607: self: Memory,
+08608: gaps: List[OpenInterval],
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_List); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_OpenInterval); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_gaps, __pyx_t_6) < 0) __PYX_ERR(0, 8606, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+08609: ) -> None:
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 8606, __pyx_L1_error)
08610: r"""Restores a `flood()` operation.
08611:
08612: Arguments:
08613: gaps (list of open intervals):
08614: Backup memory gaps to restore.
08615:
08616: See Also:
08617: :meth:`flood`
08618: :meth:`flood_backup`
08619: """
08620: cdef:
+08621: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
08622:
+08623: for gap_start, gap_endex in gaps:
if (likely(PyList_CheckExact(__pyx_v_gaps)) || PyTuple_CheckExact(__pyx_v_gaps)) { __pyx_t_2 = __pyx_v_gaps; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_gaps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8623, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 8623, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 8623, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 8623, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 8623, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 8623, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 8623, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_gap_start, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_gap_endex, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08624: Memory_Clear(memory, gap_start, gap_endex)
__pyx_t_10 = __pyx_f_11cbytesparse_1c_Memory_Clear(__pyx_v_memory, __pyx_v_gap_start, __pyx_v_gap_endex); if (unlikely(__pyx_t_10 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 8624, __pyx_L1_error)
08625:
+08626: @classmethod
__pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_blocks, __pyx_t_6) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory);
+08627: def from_blocks(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_129from_blocks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_128from_blocks[] = "Memory.from_blocks(type cls: Type[Memory], blocks: BlockList, offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, copy: bool = True, validate: bool = True) -> ImmutableMemory\nCreates a virtual memory from blocks.\n\n Arguments:\n blocks (list of blocks):\n A sequence of non-overlapping blocks, sorted by address.\n\n offset (int):\n Some address offset applied to all the blocks.\n\n start (int):\n Optional memory start address.\n Anything before will be trimmed away.\n\n endex (int):\n Optional memory exclusive end address.\n Anything at or after it will be trimmed away.\n\n copy (bool):\n Forces copy of provided input data.\n\n validate (bool):\n Validates the resulting :obj:`ImmutableMemory` object.\n\n Returns:\n :obj:`ImmutableMemory`: The resulting memory object.\n\n Raises:\n :obj:`ValueError`: Some requirements are not satisfied.\n\n See Also:\n :meth:`to_blocks`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |\n +===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | | | | |\n +---+---+---+---+---+---+---+---+---+\n | | | | | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n\n >>> blocks = [[1, b'ABC'], [5, b'xyz']]\n >>> memory = Memory.from_blocks(blocks)\n >>> memory.to_blocks()\n [[1, b'ABC'], [5, b'xyz']]\n >>> memory = Memory.from_blocks(blocks, offset=3)\n >>> memory.to_blocks()\n [[4, b'ABC'], [8, b'xyz']]\n\n ~~~\n\n >>> # Loads data from an Intel HEX record file""\n >>> # NOTE: Record files typically require collapsing!\n >>> import hexrec.records as hr\n >>> blocks = hr.load_blocks('records.hex')\n >>> memory = Memory.from_blocks(collapse_blocks(blocks))\n >>> memory\n ...\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_129from_blocks = {"from_blocks", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_129from_blocks, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_128from_blocks}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_129from_blocks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_blocks = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; CYTHON_UNUSED PyObject *__pyx_v_copy = 0; PyObject *__pyx_v_validate = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_blocks (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocks,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_copy_2,&__pyx_n_s_validate,0}; PyObject* values[6] = {0,0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_128from_blocks(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_blocks, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, CYTHON_UNUSED PyObject *__pyx_v_copy, PyObject *__pyx_v_validate) { Memory_ *__pyx_v_memory_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_blocks", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory.from_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__174 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_blocks, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_copy_2, __pyx_n_s_validate, __pyx_n_s_memory_2); if (unlikely(!__pyx_tuple__174)) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__174); __Pyx_GIVEREF(__pyx_tuple__174); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_129from_blocks, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_from_blocks, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_blocks, __pyx_t_7) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); /* … */ __Pyx_GetNameInClass(__pyx_t_7, (PyObject *)__pyx_ptype_11cbytesparse_1c_Memory, __pyx_n_s_from_blocks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(7, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_blocks, 8627, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(0, 8627, __pyx_L1_error)
+08628: cls: Type[Memory],
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_2, ((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_cls, __pyx_t_7) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08629: blocks: BlockList,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_BlockList); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_blocks, __pyx_t_7) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08630: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_7) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08631: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_5) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08632: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08633: copy: bool = True,
values[4] = ((PyObject *)Py_True); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy_2, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8627, __pyx_L1_error)
+08634: validate: bool = True,
values[5] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_copy_2); if (value) { values[4] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[5] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_blocks") < 0)) __PYX_ERR(0, 8627, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_blocks = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_copy = values[4]; __pyx_v_validate = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_blocks", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8627, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.from_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_128from_blocks(((PyTypeObject*)__pyx_v_cls), __pyx_v_blocks, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_copy, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8627, __pyx_L1_error)
+08635: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 8627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
08636: r"""Creates a virtual memory from blocks.
08637:
08638: Arguments:
08639: blocks (list of blocks):
08640: A sequence of non-overlapping blocks, sorted by address.
08641:
08642: offset (int):
08643: Some address offset applied to all the blocks.
08644:
08645: start (int):
08646: Optional memory start address.
08647: Anything before will be trimmed away.
08648:
08649: endex (int):
08650: Optional memory exclusive end address.
08651: Anything at or after it will be trimmed away.
08652:
08653: copy (bool):
08654: Forces copy of provided input data.
08655:
08656: validate (bool):
08657: Validates the resulting :obj:`ImmutableMemory` object.
08658:
08659: Returns:
08660: :obj:`ImmutableMemory`: The resulting memory object.
08661:
08662: Raises:
08663: :obj:`ValueError`: Some requirements are not satisfied.
08664:
08665: See Also:
08666: :meth:`to_blocks`
08667:
08668: Examples:
08669: >>> from cbytesparse.c import Memory
08670:
08671: +---+---+---+---+---+---+---+---+---+
08672: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08673: +===+===+===+===+===+===+===+===+===+
08674: | |[A | B | C]| | | | | |
08675: +---+---+---+---+---+---+---+---+---+
08676: | | | | | |[x | y | z]| |
08677: +---+---+---+---+---+---+---+---+---+
08678:
08679: >>> blocks = [[1, b'ABC'], [5, b'xyz']]
08680: >>> memory = Memory.from_blocks(blocks)
08681: >>> memory.to_blocks()
08682: [[1, b'ABC'], [5, b'xyz']]
08683: >>> memory = Memory.from_blocks(blocks, offset=3)
08684: >>> memory.to_blocks()
08685: [[4, b'ABC'], [8, b'xyz']]
08686:
08687: ~~~
08688:
08689: >>> # Loads data from an Intel HEX record file
08690: >>> # NOTE: Record files typically require collapsing!
08691: >>> import hexrec.records as hr
08692: >>> blocks = hr.load_blocks('records.hex')
08693: >>> memory = Memory.from_blocks(collapse_blocks(blocks))
08694: >>> memory
08695: ...
08696: """
08697: cdef:
+08698: Memory_* memory_ = Memory_FromBlocks(blocks, offset, start, endex, validate)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_validate); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8698, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_FromBlocks(__pyx_v_blocks, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_t_1); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 8698, __pyx_L1_error) __pyx_v_memory_ = __pyx_t_2;
08699:
+08700: return Memory_AsObject(memory_)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
08701:
+08702: @classmethod
__pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_bytes, __pyx_t_6) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory);
+08703: def from_bytes(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_131from_bytes(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_130from_bytes[] = "Memory.from_bytes(type cls: Type[Memory], data: AnyBytes, offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, copy: bool = True, validate: bool = True) -> ImmutableMemory\nCreates a virtual memory from a byte-like chunk.\n\n Arguments:\n data (byte-like data):\n A byte-like chunk of data (e.g. :obj:`bytes`,\n :obj:`bytearray`, :obj:`memoryview`).\n\n offset (int):\n Start address of the block of data.\n\n start (int):\n Optional memory start address.\n Anything before will be trimmed away.\n\n endex (int):\n Optional memory exclusive end address.\n Anything at or after it will be trimmed away.\n\n copy (bool):\n Forces copy of provided input data into the underlying data\n structure.\n\n validate (bool):\n Validates the resulting :obj:`ImmutableMemory` object.\n\n Returns:\n :obj:`ImmutableMemory`: The resulting memory object.\n\n Raises:\n :obj:`ValueError`: Some requirements are not satisfied.\n\n See Also:\n :meth:`to_bytes`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> memory = Memory.from_bytes(b'')\n >>> memory.to_blocks()\n []\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |\n +===+===+===+===+===+===+===+===+===+\n | | |[A | B | C | x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_bytes(b'ABCxyz', 2)\n >>> memory.to_blocks()\n [[2, b'ABCxyz']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_131from_bytes = {"from_bytes", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_131from_bytes, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_130from_bytes}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_131from_bytes(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_data = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; CYTHON_UNUSED PyObject *__pyx_v_copy = 0; CYTHON_UNUSED PyObject *__pyx_v_validate = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_bytes (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_copy_2,&__pyx_n_s_validate,0}; PyObject* values[6] = {0,0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_130from_bytes(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_data, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, CYTHON_UNUSED PyObject *__pyx_v_copy, CYTHON_UNUSED PyObject *__pyx_v_validate) { Memory_ *__pyx_v_memory_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_bytes", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.from_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__176 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_data, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_copy_2, __pyx_n_s_validate, __pyx_n_s_memory_2); if (unlikely(!__pyx_tuple__176)) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__176); __Pyx_GIVEREF(__pyx_tuple__176); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_131from_bytes, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_from_bytes, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_bytes, __pyx_t_2) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); /* … */ __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_11cbytesparse_1c_Memory, __pyx_n_s_from_bytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(7, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__176, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_bytes, 8703, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) __PYX_ERR(0, 8703, __pyx_L1_error)
+08704: cls: Type[Memory],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Type); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_7, ((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_cls, __pyx_t_2) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08705: data: AnyBytes,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_t_2) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08706: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_2) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08707: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_5) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+08708: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Optional); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_2) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+08709: copy: bool = True,
values[4] = ((PyObject *)Py_True); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy_2, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8703, __pyx_L1_error)
+08710: validate: bool = True,
values[5] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_copy_2); if (value) { values[4] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[5] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_bytes") < 0)) __PYX_ERR(0, 8703, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_data = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_copy = values[4]; __pyx_v_validate = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_bytes", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8703, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.from_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_130from_bytes(((PyTypeObject*)__pyx_v_cls), __pyx_v_data, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_copy, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8703, __pyx_L1_error)
+08711: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_2) < 0) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
08712: r"""Creates a virtual memory from a byte-like chunk.
08713:
08714: Arguments:
08715: data (byte-like data):
08716: A byte-like chunk of data (e.g. :obj:`bytes`,
08717: :obj:`bytearray`, :obj:`memoryview`).
08718:
08719: offset (int):
08720: Start address of the block of data.
08721:
08722: start (int):
08723: Optional memory start address.
08724: Anything before will be trimmed away.
08725:
08726: endex (int):
08727: Optional memory exclusive end address.
08728: Anything at or after it will be trimmed away.
08729:
08730: copy (bool):
08731: Forces copy of provided input data into the underlying data
08732: structure.
08733:
08734: validate (bool):
08735: Validates the resulting :obj:`ImmutableMemory` object.
08736:
08737: Returns:
08738: :obj:`ImmutableMemory`: The resulting memory object.
08739:
08740: Raises:
08741: :obj:`ValueError`: Some requirements are not satisfied.
08742:
08743: See Also:
08744: :meth:`to_bytes`
08745:
08746: Examples:
08747: >>> from cbytesparse.c import Memory
08748:
08749: >>> memory = Memory.from_bytes(b'')
08750: >>> memory.to_blocks()
08751: []
08752:
08753: ~~~
08754:
08755: +---+---+---+---+---+---+---+---+---+
08756: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08757: +===+===+===+===+===+===+===+===+===+
08758: | | |[A | B | C | x | y | z]| |
08759: +---+---+---+---+---+---+---+---+---+
08760:
08761: >>> memory = Memory.from_bytes(b'ABCxyz', 2)
08762: >>> memory.to_blocks()
08763: [[2, b'ABCxyz']]
08764: """
08765: cdef:
+08766: Memory_* memory_ = Memory_FromBytes(data, offset, start, endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_FromBytes(__pyx_v_data, __pyx_v_offset, __pyx_v_start, __pyx_v_endex); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 8766, __pyx_L1_error)
__pyx_v_memory_ = __pyx_t_1;
08767:
+08768: return Memory_AsObject(memory_)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
08769:
+08770: @classmethod
__pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8770, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_items, __pyx_t_6) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory);
+08771: def from_items(
/* Python wrapper */ static struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_pw_11cbytesparse_1c_6Memory_133from_items(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_132from_items[] = "Memory.from_items(type cls: Type[Memory], items: Union[AddressValueMapping, Iterable[Tuple[Address, Optional[Value]]], Mapping[Address, Optional[Union[Value, AnyBytes]]], ImmutableMemory], offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, validate: bool = True) -> Memory\nCreates a virtual memory from a iterable address/byte mapping.\n\n Arguments:\n items (iterable address/byte mapping):\n An iterable mapping of address to byte values.\n Values of ``None`` are translated as gaps.\n When an address is stated multiple times, the last is kept.\n\n offset (int):\n An address offset applied to all the values.\n\n start (int):\n Optional memory start address.\n Anything before will be trimmed away.\n\n endex (int):\n Optional memory exclusive end address.\n Anything at or after it will be trimmed away.\n\n validate (bool):\n Validates the resulting :obj:`ImmutableMemory` object.\n\n Returns:\n :obj:`ImmutableMemory`: The resulting memory object.\n\n Raises:\n :obj:`ValueError`: Some requirements are not satisfied.\n\n See Also:\n :meth:`to_bytes`\n\n Examples:\n >>> from bytesparse.inplace import Memory\n\n >>> memory = Memory.from_values({})\n >>> memory.to_blocks()\n []\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |\n +===+===+===+===+===+===+===+===+===+\n | | |[A | Z]| |[x]| | | |\n +---+---+---+---+---+---+---+---+---+\n\n >>> items = [\n ... (0, ord('A')),\n ... (1, ord('B')),\n ... (3, ord('x')),\n ... (1, ord('Z')),\n ... ]\n "" >>> memory = Memory.from_items(items, offset=2)\n >>> memory.to_blocks()\n [[2, b'AZ'], [5, b'x']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_133from_items = {"from_items", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_133from_items, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_132from_items}; static struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_pw_11cbytesparse_1c_6Memory_133from_items(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_items = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_validate = 0; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_items (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_validate,0}; PyObject* values[5] = {0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_pf_11cbytesparse_1c_6Memory_132from_items(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_items, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_validate) { Memory_ *__pyx_v_memory_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_items", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory.from_items", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__178 = PyTuple_Pack(7, __pyx_n_s_cls, __pyx_n_s_items, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_validate, __pyx_n_s_memory_2); if (unlikely(!__pyx_tuple__178)) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__178); __Pyx_GIVEREF(__pyx_tuple__178); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_133from_items, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_from_items, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_items, __pyx_t_12) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); /* … */ __Pyx_GetNameInClass(__pyx_t_12, (PyObject *)__pyx_ptype_11cbytesparse_1c_Memory, __pyx_n_s_from_items); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(6, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_items, 8771, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) __PYX_ERR(0, 8771, __pyx_L1_error)
+08772: cls: Type[Memory],
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_2, ((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_cls, __pyx_t_7) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08773: items: Union[AddressValueMapping,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AddressValueMapping); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* … */ __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_12); __pyx_t_2 = 0; __pyx_t_10 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_items, __pyx_t_12) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+08774: Iterable[Tuple[Address, Optional[Value]]],
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Optional); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+08775: Mapping[Address, Optional[Union[Value, AnyBytes]]],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Address); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Union); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Value); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_12); __pyx_t_8 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13); __pyx_t_5 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+08776: ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12);
+08777: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_12) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+08778: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08779: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_12) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+08780: validate: bool = True,
values[4] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_items") < 0)) __PYX_ERR(0, 8771, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_items = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_validate = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_items", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8771, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.from_items", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_132from_items(((PyTypeObject*)__pyx_v_cls), __pyx_v_items, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8771, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8771, __pyx_L1_error)
08781: ) -> Memory:
08782: r"""Creates a virtual memory from a iterable address/byte mapping.
08783:
08784: Arguments:
08785: items (iterable address/byte mapping):
08786: An iterable mapping of address to byte values.
08787: Values of ``None`` are translated as gaps.
08788: When an address is stated multiple times, the last is kept.
08789:
08790: offset (int):
08791: An address offset applied to all the values.
08792:
08793: start (int):
08794: Optional memory start address.
08795: Anything before will be trimmed away.
08796:
08797: endex (int):
08798: Optional memory exclusive end address.
08799: Anything at or after it will be trimmed away.
08800:
08801: validate (bool):
08802: Validates the resulting :obj:`ImmutableMemory` object.
08803:
08804: Returns:
08805: :obj:`ImmutableMemory`: The resulting memory object.
08806:
08807: Raises:
08808: :obj:`ValueError`: Some requirements are not satisfied.
08809:
08810: See Also:
08811: :meth:`to_bytes`
08812:
08813: Examples:
08814: >>> from bytesparse.inplace import Memory
08815:
08816: >>> memory = Memory.from_values({})
08817: >>> memory.to_blocks()
08818: []
08819:
08820: ~~~
08821:
08822: +---+---+---+---+---+---+---+---+---+
08823: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08824: +===+===+===+===+===+===+===+===+===+
08825: | | |[A | Z]| |[x]| | | |
08826: +---+---+---+---+---+---+---+---+---+
08827:
08828: >>> items = [
08829: ... (0, ord('A')),
08830: ... (1, ord('B')),
08831: ... (3, ord('x')),
08832: ... (1, ord('Z')),
08833: ... ]
08834: >>> memory = Memory.from_items(items, offset=2)
08835: >>> memory.to_blocks()
08836: [[2, b'AZ'], [5, b'x']]
08837: """
08838: cdef:
+08839: Memory_* memory_ = Memory_FromItems(items, offset, start, endex, validate)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_validate); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8839, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_FromItems(__pyx_v_items, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_t_1); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 8839, __pyx_L1_error) __pyx_v_memory_ = __pyx_t_2;
08840:
+08841: return Memory_AsObject(memory_)
__Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_3 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
08842:
+08843: @classmethod
__pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_memory, __pyx_t_6) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory);
+08844: def from_memory(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_135from_memory(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_134from_memory[] = "Memory.from_memory(type cls: Type[Memory], memory: ImmutableMemory, offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, copy: bool = True, validate: bool = True) -> ImmutableMemory\nCreates a virtual memory from another one.\n\n Arguments:\n memory (Memory):\n A :obj:`ImmutableMemory` to copy data from.\n\n offset (int):\n Some address offset applied to all the blocks.\n\n start (int):\n Optional memory start address.\n Anything before will be trimmed away.\n\n endex (int):\n Optional memory exclusive end address.\n Anything at or after it will be trimmed away.\n\n copy (bool):\n Forces copy of provided input data into the underlying data\n structure.\n\n validate (bool):\n Validates the resulting :obj:`MemorImmutableMemory` object.\n\n Returns:\n :obj:`ImmutableMemory`: The resulting memory object.\n\n Raises:\n :obj:`ValueError`: Some requirements are not satisfied.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> memory1 = Memory.from_bytes(b'ABC', 5)\n >>> memory2 = Memory.from_memory(memory1)\n >>> memory2.to_blocks()\n [[5, b'ABC']]\n >>> memory1 == memory2\n True\n >>> memory1 is memory2\n False\n >>> memory1.to_blocks() is memory2.to_blocks()\n False\n\n ~~~\n\n >>> memory1 = Memory.from_bytes(b'ABC', 10)\n >>> memory2 = Memory.from_memory(memory1, -3)\n >>> memory2.to_blocks()\n [[7, b'ABC']]\n >>> memory1 == memory2\n False\n\n ~~~\n\n >>> memory1 = Memory.from_bytes(b'ABC', 10)\n >>> memory2 = Memory.from_memory(memory1, copy=False)""\n >>> all((b1[1] is b2[1]) # compare block data\n ... for b1, b2 in zip(memory1.to_blocks(), memory2.to_blocks()))\n True\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_135from_memory = {"from_memory", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_135from_memory, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_134from_memory}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_135from_memory(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_memory = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; CYTHON_UNUSED PyObject *__pyx_v_copy = 0; PyObject *__pyx_v_validate = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_memory (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_memory,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_copy_2,&__pyx_n_s_validate,0}; PyObject* values[6] = {0,0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_134from_memory(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_memory, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, CYTHON_UNUSED PyObject *__pyx_v_copy, PyObject *__pyx_v_validate) { Memory_ *__pyx_v_memory_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_memory", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory.from_memory", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__180 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_memory, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_copy_2, __pyx_n_s_validate, __pyx_n_s_memory_2); if (unlikely(!__pyx_tuple__180)) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__180); __Pyx_GIVEREF(__pyx_tuple__180); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_135from_memory, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_from_memory, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_memory, __pyx_t_11) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); /* … */ __Pyx_GetNameInClass(__pyx_t_11, (PyObject *)__pyx_ptype_11cbytesparse_1c_Memory, __pyx_n_s_from_memory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(7, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__180, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_memory, 8844, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(0, 8844, __pyx_L1_error)
+08845: cls: Type[Memory],
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Type); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, ((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_cls, __pyx_t_11) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+08846: memory: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_memory, __pyx_t_11) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+08847: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_11) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+08848: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08849: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+08850: copy: bool = True,
values[4] = ((PyObject *)Py_True); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy_2, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8844, __pyx_L1_error)
+08851: validate: bool = True,
values[5] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memory)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_copy_2); if (value) { values[4] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[5] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_memory") < 0)) __PYX_ERR(0, 8844, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_memory = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_copy = values[4]; __pyx_v_validate = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_memory", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8844, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.from_memory", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_134from_memory(((PyTypeObject*)__pyx_v_cls), __pyx_v_memory, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_copy, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8844, __pyx_L1_error)
+08852: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_11) < 0) __PYX_ERR(0, 8844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
08853: r"""Creates a virtual memory from another one.
08854:
08855: Arguments:
08856: memory (Memory):
08857: A :obj:`ImmutableMemory` to copy data from.
08858:
08859: offset (int):
08860: Some address offset applied to all the blocks.
08861:
08862: start (int):
08863: Optional memory start address.
08864: Anything before will be trimmed away.
08865:
08866: endex (int):
08867: Optional memory exclusive end address.
08868: Anything at or after it will be trimmed away.
08869:
08870: copy (bool):
08871: Forces copy of provided input data into the underlying data
08872: structure.
08873:
08874: validate (bool):
08875: Validates the resulting :obj:`MemorImmutableMemory` object.
08876:
08877: Returns:
08878: :obj:`ImmutableMemory`: The resulting memory object.
08879:
08880: Raises:
08881: :obj:`ValueError`: Some requirements are not satisfied.
08882:
08883: Examples:
08884: >>> from cbytesparse.c import Memory
08885:
08886: >>> memory1 = Memory.from_bytes(b'ABC', 5)
08887: >>> memory2 = Memory.from_memory(memory1)
08888: >>> memory2.to_blocks()
08889: [[5, b'ABC']]
08890: >>> memory1 == memory2
08891: True
08892: >>> memory1 is memory2
08893: False
08894: >>> memory1.to_blocks() is memory2.to_blocks()
08895: False
08896:
08897: ~~~
08898:
08899: >>> memory1 = Memory.from_bytes(b'ABC', 10)
08900: >>> memory2 = Memory.from_memory(memory1, -3)
08901: >>> memory2.to_blocks()
08902: [[7, b'ABC']]
08903: >>> memory1 == memory2
08904: False
08905:
08906: ~~~
08907:
08908: >>> memory1 = Memory.from_bytes(b'ABC', 10)
08909: >>> memory2 = Memory.from_memory(memory1, copy=False)
08910: >>> all((b1[1] is b2[1]) # compare block data
08911: ... for b1, b2 in zip(memory1.to_blocks(), memory2.to_blocks()))
08912: True
08913: """
08914: cdef:
+08915: Memory_* memory_ = Memory_FromMemory(memory, offset, start, endex, validate)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_validate); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8915, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_FromMemory(__pyx_v_memory, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_t_1); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 8915, __pyx_L1_error) __pyx_v_memory_ = __pyx_t_2;
08916:
+08917: return Memory_AsObject(memory_)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
08918:
+08919: @classmethod
__pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_values, __pyx_t_6) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory);
+08920: def from_values(
/* Python wrapper */ static struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_pw_11cbytesparse_1c_6Memory_137from_values(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_136from_values[] = "Memory.from_values(type cls: Type[Memory], values: Iterable[Optional[Value]], offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, validate: bool = True) -> Memory\nCreates a virtual memory from a byte-like sequence.\n\n Arguments:\n values (iterable byte-like sequence):\n An iterable sequence of byte values.\n Values of ``None`` are translated as gaps.\n\n offset (int):\n An address offset applied to all the values.\n\n start (int):\n Optional memory start address.\n Anything before will be trimmed away.\n\n endex (int):\n Optional memory exclusive end address.\n Anything at or after it will be trimmed away.\n\n validate (bool):\n Validates the resulting :obj:`ImmutableMemory` object.\n\n Returns:\n :obj:`ImmutableMemory`: The resulting memory object.\n\n Raises:\n :obj:`ValueError`: Some requirements are not satisfied.\n\n See Also:\n :meth:`to_bytes`\n\n Examples:\n >>> from bytesparse.inplace import Memory\n\n >>> memory = Memory.from_values(range(0))\n >>> memory.to_blocks()\n []\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |\n +===+===+===+===+===+===+===+===+===+\n | | |[A | B | C | D | E]| | |\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_values(range(ord('A'), ord('F')), offset=2)\n >>> memory.to_blocks()\n [[2, b'ABCDE']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_137from_values = {"from_values", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_137from_values, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_136from_values}; static struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_pw_11cbytesparse_1c_6Memory_137from_values(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_values = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_validate = 0; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_values (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_validate,0}; PyObject* values[5] = {0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_pf_11cbytesparse_1c_6Memory_136from_values(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_values, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_validate) { Memory_ *__pyx_v_memory_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_values", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory.from_values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__182 = PyTuple_Pack(7, __pyx_n_s_cls, __pyx_n_s_values, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_validate, __pyx_n_s_memory_2); if (unlikely(!__pyx_tuple__182)) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__182); __Pyx_GIVEREF(__pyx_tuple__182); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_137from_values, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_from_values, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_from_values, __pyx_t_7) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); /* … */ __Pyx_GetNameInClass(__pyx_t_7, (PyObject *)__pyx_ptype_11cbytesparse_1c_Memory, __pyx_n_s_from_values); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(6, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_values, 8920, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) __PYX_ERR(0, 8920, __pyx_L1_error)
+08921: cls: Type[Memory],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Type); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, ((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_cls, __pyx_t_12) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+08922: values: Iterable[Optional[Value]],
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_values, __pyx_t_7) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08923: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_7) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08924: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_12) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+08925: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+08926: validate: bool = True,
values[4] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_values") < 0)) __PYX_ERR(0, 8920, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_values = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_validate = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_values", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 8920, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.from_values", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_136from_values(((PyTypeObject*)__pyx_v_cls), __pyx_v_values, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 8920, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 8920, __pyx_L1_error)
08927: ) -> Memory:
08928: r"""Creates a virtual memory from a byte-like sequence.
08929:
08930: Arguments:
08931: values (iterable byte-like sequence):
08932: An iterable sequence of byte values.
08933: Values of ``None`` are translated as gaps.
08934:
08935: offset (int):
08936: An address offset applied to all the values.
08937:
08938: start (int):
08939: Optional memory start address.
08940: Anything before will be trimmed away.
08941:
08942: endex (int):
08943: Optional memory exclusive end address.
08944: Anything at or after it will be trimmed away.
08945:
08946: validate (bool):
08947: Validates the resulting :obj:`ImmutableMemory` object.
08948:
08949: Returns:
08950: :obj:`ImmutableMemory`: The resulting memory object.
08951:
08952: Raises:
08953: :obj:`ValueError`: Some requirements are not satisfied.
08954:
08955: See Also:
08956: :meth:`to_bytes`
08957:
08958: Examples:
08959: >>> from bytesparse.inplace import Memory
08960:
08961: >>> memory = Memory.from_values(range(0))
08962: >>> memory.to_blocks()
08963: []
08964:
08965: ~~~
08966:
08967: +---+---+---+---+---+---+---+---+---+
08968: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
08969: +===+===+===+===+===+===+===+===+===+
08970: | | |[A | B | C | D | E]| | |
08971: +---+---+---+---+---+---+---+---+---+
08972:
08973: >>> memory = Memory.from_values(range(ord('A'), ord('F')), offset=2)
08974: >>> memory.to_blocks()
08975: [[2, b'ABCDE']]
08976: """
08977: cdef:
+08978: Memory_* memory_ = Memory_FromValues(values, offset, start, endex, validate)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_validate); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8978, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_FromValues(__pyx_v_values, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_t_1); if (unlikely(__pyx_t_2 == ((Memory_ *)NULL))) __PYX_ERR(0, 8978, __pyx_L1_error) __pyx_v_memory_ = __pyx_t_2;
08979:
+08980: return Memory_AsObject(memory_)
__Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_3 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
08981:
+08982: @classmethod
__pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_fromhex, __pyx_t_6) < 0) __PYX_ERR(0, 8983, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory);
+08983: def fromhex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_139fromhex(PyObject *__pyx_v_cls, PyObject *__pyx_v_string); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_138fromhex[] = "Memory.fromhex(type cls, unicode string: str) -> ImmutableMemory\nCreates a virtual memory from an hexadecimal string.\n\n Arguments:\n string (str):\n Hexadecimal string.\n\n Returns:\n :obj:`ImmutableMemory`: The resulting memory object.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> memory = Memory.fromhex('')\n >>> bytes(memory)\n b''\n\n ~~~\n\n >>> memory = Memory.fromhex('48656C6C6F2C20576F726C6421')\n >>> bytes(memory)\n b'Hello, World!'\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_139fromhex = {"fromhex", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_139fromhex, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_138fromhex}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_139fromhex(PyObject *__pyx_v_cls, PyObject *__pyx_v_string) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fromhex (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_string), (&PyUnicode_Type), 1, "string", 1))) __PYX_ERR(0, 8985, __pyx_L1_error) __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_138fromhex(((PyTypeObject*)__pyx_v_cls), ((PyObject*)__pyx_v_string)); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_138fromhex(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_string) { Memory_ *__pyx_v_memory_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fromhex", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory.fromhex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_142generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__184 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_string, __pyx_n_s_memory_2); if (unlikely(!__pyx_tuple__184)) __PYX_ERR(0, 8983, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__184); __Pyx_GIVEREF(__pyx_tuple__184); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_string, __pyx_n_u_unicode) < 0) __PYX_ERR(0, 8983, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_139fromhex, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_fromhex, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__185)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_fromhex, __pyx_t_7) < 0) __PYX_ERR(0, 8983, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); /* … */ __Pyx_GetNameInClass(__pyx_t_7, (PyObject *)__pyx_ptype_11cbytesparse_1c_Memory, __pyx_n_s_fromhex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_codeobj__185 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__184, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_fromhex, 8983, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) __PYX_ERR(0, 8983, __pyx_L1_error)
08984: cls,
08985: string: str,
+08986: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 8983, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
08987: r"""Creates a virtual memory from an hexadecimal string.
08988:
08989: Arguments:
08990: string (str):
08991: Hexadecimal string.
08992:
08993: Returns:
08994: :obj:`ImmutableMemory`: The resulting memory object.
08995:
08996: Examples:
08997: >>> from cbytesparse.c import Memory
08998:
08999: >>> memory = Memory.fromhex('')
09000: >>> bytes(memory)
09001: b''
09002:
09003: ~~~
09004:
09005: >>> memory = Memory.fromhex('48656C6C6F2C20576F726C6421')
09006: >>> bytes(memory)
09007: b'Hello, World!'
09008: """
09009: cdef:
+09010: Memory_* memory_ = Memory_FromBytes(bytes.fromhex(string), 0, None, None)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyBytes_Type)), __pyx_n_s_fromhex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_string) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_string); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_FromBytes(__pyx_t_1, __pyx_int_0, Py_None, Py_None); if (unlikely(__pyx_t_4 == ((Memory_ *)NULL))) __PYX_ERR(0, 9010, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_memory_ = __pyx_t_4;
09011:
+09012: return Memory_AsObject(memory_)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
09013:
+09014: def gaps(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_141gaps(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_140gaps[] = "Memory.gaps(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[OpenInterval]\nIterates over block gaps.\n\n Iterates over gaps emptiness bounds within an address range.\n If a yielded bound is ``None``, that direction is infinitely empty\n (valid before or after global data bounds).\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Yields:\n pair of addresses: Block data interval boundaries.\n\n See Also:\n :meth:`intervals`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B]| | |[x]| |[1 | 2 | 3]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])\n >>> list(memory.gaps())\n [(None, 1), (3, 5), (6, 7), (10, None)]\n >>> list(memory.gaps(0, 11))\n [(0, 1), (3, 5), (6, 7), (10, 11)]\n >>> list(memory.gaps(*memory.span))\n [(3, 5), (6, 7)]\n >>> list(memory.gaps(2, 6))\n [(3, 5)]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_141gaps = {"gaps", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_141gaps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_140gaps}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_141gaps(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gaps (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_140gaps(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_6_gaps *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gaps", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_6_gaps *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_6_gaps(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_6_gaps, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_6_gaps *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 9014, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_142generator6, __pyx_codeobj__34, (PyObject *) __pyx_cur_scope, __pyx_n_s_gaps, __pyx_n_s_Memory_gaps, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.gaps", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_142generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gaps", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9014, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("gaps", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__186 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_start_3, __pyx_n_s_endex_3); if (unlikely(!__pyx_tuple__186)) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__186); __Pyx_GIVEREF(__pyx_tuple__186); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9014, __pyx_L1_error) /* … */ __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_141gaps, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_gaps, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_gaps, __pyx_t_12) < 0) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(3, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__186, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_gaps, 9014, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 9014, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_6_gaps { PyObject_HEAD Block_ const *__pyx_v_block; size_t __pyx_v_block_count; addr_t __pyx_v_block_endex; size_t __pyx_v_block_index; size_t __pyx_v_block_index_endex; size_t __pyx_v_block_index_start; addr_t __pyx_v_block_start; Rack_ const *__pyx_v_blocks; PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; PyObject *__pyx_v_endex__; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; PyObject *__pyx_v_start; addr_t __pyx_v_start_; PyObject *__pyx_v_start__; size_t __pyx_t_0; size_t __pyx_t_1; size_t __pyx_t_2; };
09015: self: Memory,
+09016: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_12) < 0) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+09017: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gaps") < 0)) __PYX_ERR(0, 9014, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("gaps", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9014, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.gaps", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_140gaps(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09018: ) -> Iterator[OpenInterval]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_OpenInterval); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_12) < 0) __PYX_ERR(0, 9014, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
09019: r"""Iterates over block gaps.
09020:
09021: Iterates over gaps emptiness bounds within an address range.
09022: If a yielded bound is ``None``, that direction is infinitely empty
09023: (valid before or after global data bounds).
09024:
09025: Arguments:
09026: start (int):
09027: Inclusive start address.
09028: If ``None``, :attr:`start` is considered.
09029:
09030: endex (int):
09031: Exclusive end address.
09032: If ``None``, :attr:`endex` is considered.
09033:
09034: Yields:
09035: pair of addresses: Block data interval boundaries.
09036:
09037: See Also:
09038: :meth:`intervals`
09039:
09040: Examples:
09041: >>> from cbytesparse.c import Memory
09042:
09043: +---+---+---+---+---+---+---+---+---+---+---+
09044: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
09045: +===+===+===+===+===+===+===+===+===+===+===+
09046: | |[A | B]| | |[x]| |[1 | 2 | 3]| |
09047: +---+---+---+---+---+---+---+---+---+---+---+
09048:
09049: >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])
09050: >>> list(memory.gaps())
09051: [(None, 1), (3, 5), (6, 7), (10, None)]
09052: >>> list(memory.gaps(0, 11))
09053: [(0, 1), (3, 5), (6, 7), (10, 11)]
09054: >>> list(memory.gaps(*memory.span))
09055: [(3, 5), (6, 7)]
09056: >>> list(memory.gaps(2, 6))
09057: [(3, 5)]
09058: """
09059: cdef:
09060: addr_t start_
09061: addr_t endex_
+09062: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_->blocks; __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
+09063: size_t block_count = Rack_Length(blocks)
__pyx_cur_scope->__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_cur_scope->__pyx_v_blocks);
09064: size_t block_index
09065: size_t block_index_start
09066: size_t block_index_endex
09067: const Block_* block
09068: addr_t block_start
09069: addr_t block_endex
09070:
+09071: if block_count:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+09072: start__ = start
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_start__ = __pyx_cur_scope->__pyx_v_start;
+09073: endex__ = endex
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_endex__ = __pyx_cur_scope->__pyx_v_endex;
+09074: start_, endex_ = Memory_Bound(self._, start, endex)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 9074, __pyx_L1_error)
__pyx_t_4 = __pyx_t_3.f0;
__pyx_t_5 = __pyx_t_3.f1;
__pyx_cur_scope->__pyx_v_start_ = __pyx_t_4;
__pyx_cur_scope->__pyx_v_endex_ = __pyx_t_5;
09075:
+09076: if start__ is None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_start__ == Py_None); __pyx_t_6 = (__pyx_t_2 != 0); if (__pyx_t_6) { /* … */ goto __pyx_L5; }
+09077: block = Rack_First__(blocks)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_First__(__pyx_cur_scope->__pyx_v_blocks);
+09078: start_ = Block_Start(block) # override trim start
__pyx_cur_scope->__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+09079: yield None, start_
__pyx_t_7 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_start_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_8, 0, Py_None); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L6_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9079, __pyx_L1_error)
+09080: block_index_start = 0
__pyx_cur_scope->__pyx_v_block_index_start = 0;
09081: else:
+09082: block_index_start = Rack_IndexStart(blocks, start_)
/*else*/ { __pyx_cur_scope->__pyx_v_block_index_start = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_start_); } __pyx_L5:;
09083:
+09084: if endex__ is None:
__pyx_t_6 = (__pyx_cur_scope->__pyx_v_endex__ == Py_None); __pyx_t_2 = (__pyx_t_6 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L7; }
+09085: block_index_endex = block_count
__pyx_cur_scope->__pyx_v_block_index_endex = __pyx_cur_scope->__pyx_v_block_count;
09086: else:
+09087: block_index_endex = Rack_IndexEndex(blocks, endex_)
/*else*/ { __pyx_cur_scope->__pyx_v_block_index_endex = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_endex_); } __pyx_L7:;
09088:
+09089: for block_index in range(block_index_start, block_index_endex):
__pyx_t_9 = __pyx_cur_scope->__pyx_v_block_index_endex; __pyx_t_10 = __pyx_t_9; for (__pyx_t_11 = __pyx_cur_scope->__pyx_v_block_index_start; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_11;
+09090: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+09091: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+09092: if start_ < block_start:
__pyx_t_2 = ((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_block_start) != 0); if (__pyx_t_2) { /* … */ }
+09093: yield start_, block_start
__pyx_t_8 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_start_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_block_start); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_7); __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_r = __pyx_t_12; __pyx_t_12 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_9; __pyx_cur_scope->__pyx_t_1 = __pyx_t_10; __pyx_cur_scope->__pyx_t_2 = __pyx_t_11; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L11_resume_from_yield:; __pyx_t_9 = __pyx_cur_scope->__pyx_t_0; __pyx_t_10 = __pyx_cur_scope->__pyx_t_1; __pyx_t_11 = __pyx_cur_scope->__pyx_t_2; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9093, __pyx_L1_error)
+09094: start_ = Block_Endex(block)
__pyx_cur_scope->__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_cur_scope->__pyx_v_block); }
09095:
+09096: if endex__ is None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex__ == Py_None); __pyx_t_6 = (__pyx_t_2 != 0); if (__pyx_t_6) { /* … */ goto __pyx_L12; }
+09097: yield start_, None
__pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_start_); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_7, 1, Py_None); __pyx_t_12 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 3; return __pyx_r; __pyx_L13_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9097, __pyx_L1_error)
+09098: elif start_ < endex_:
__pyx_t_6 = ((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_endex_) != 0); if (__pyx_t_6) { /* … */ } __pyx_L12:;
+09099: yield start_, endex_
__pyx_t_7 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_start_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex_); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_12); __pyx_t_7 = 0; __pyx_t_12 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 4; return __pyx_r; __pyx_L14_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9099, __pyx_L1_error)
09100:
09101: else:
+09102: yield None, None
/*else*/ { __Pyx_INCREF(__pyx_tuple__35); __pyx_r = __pyx_tuple__35; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 5; return __pyx_r; __pyx_L15_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9102, __pyx_L1_error) } __pyx_L4:; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* … */ __pyx_tuple__35 = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 9102, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__35); __Pyx_GIVEREF(__pyx_tuple__35);
09103:
+09104: def get(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_144get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_143get[] = "Memory.get(self: Memory, address: Address, default: Optional[Value] = None) -> Optional[Value]\nGets the item at an address.\n\n Returns:\n int: The item at `address`, `default` if empty.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.get(3) # -> ord('C') = 67\n 67\n >>> memory.get(6) # -> ord('$') = 36\n 36\n >>> memory.get(10) # -> ord('z') = 122\n 122\n >>> memory.get(0) # -> empty -> default = None\n None\n >>> memory.get(7) # -> empty -> default = None\n None\n >>> memory.get(11) # -> empty -> default = None\n None\n >>> memory.get(0, 123) # -> empty -> default = 123\n 123\n >>> memory.get(7, 123) # -> empty -> default = 123\n 123\n >>> memory.get(11, 123) # -> empty -> default = 123\n 123\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_144get = {"get", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_144get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_143get}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_144get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_default = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_default,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_143get(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_default) { addr_t __pyx_v_address_; Memory_ const *__pyx_v_memory; Rack_ const *__pyx_v_blocks; Py_ssize_t __pyx_v_block_index; Block_ const *__pyx_v_block; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.get", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__187 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_default, __pyx_n_s_address_2, __pyx_n_s_memory, __pyx_n_s_blocks, __pyx_n_s_block_index, __pyx_n_s_block); if (unlikely(!__pyx_tuple__187)) __PYX_ERR(0, 9104, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__187); __Pyx_GIVEREF(__pyx_tuple__187); /* … */ __pyx_t_12 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9104, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_144get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_get, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_get, __pyx_t_6) < 0) __PYX_ERR(0, 9104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__187, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_get, 9104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(0, 9104, __pyx_L1_error)
09105: self: Memory,
+09106: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 9104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09107: default: Optional[Value] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 9104, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_default = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9104, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.get", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_143get(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_default); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_default, __pyx_t_7) < 0) __PYX_ERR(0, 9104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09108: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 9104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
09109: r"""Gets the item at an address.
09110:
09111: Returns:
09112: int: The item at `address`, `default` if empty.
09113:
09114: Examples:
09115: >>> from cbytesparse.c import Memory
09116:
09117: +---+---+---+---+---+---+---+---+---+---+---+---+
09118: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
09119: +===+===+===+===+===+===+===+===+===+===+===+===+
09120: | |[A | B | C | D]| |[$]| |[x | y | z]| |
09121: +---+---+---+---+---+---+---+---+---+---+---+---+
09122:
09123: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
09124: >>> memory.get(3) # -> ord('C') = 67
09125: 67
09126: >>> memory.get(6) # -> ord('$') = 36
09127: 36
09128: >>> memory.get(10) # -> ord('z') = 122
09129: 122
09130: >>> memory.get(0) # -> empty -> default = None
09131: None
09132: >>> memory.get(7) # -> empty -> default = None
09133: None
09134: >>> memory.get(11) # -> empty -> default = None
09135: None
09136: >>> memory.get(0, 123) # -> empty -> default = 123
09137: 123
09138: >>> memory.get(7, 123) # -> empty -> default = 123
09139: 123
09140: >>> memory.get(11, 123) # -> empty -> default = 123
09141: 123
09142: """
09143: cdef:
+09144: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9144, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
+09145: const Memory_* memory = self._
__pyx_t_2 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_2;
+09146: const Rack_* blocks = memory.blocks
__pyx_t_3 = __pyx_v_memory->blocks; __pyx_v_blocks = __pyx_t_3;
+09147: ssize_t block_index = Rack_IndexAt(blocks, address_)
__pyx_v_block_index = __pyx_f_11cbytesparse_1c_Rack_IndexAt(__pyx_v_blocks, __pyx_v_address_);
09148: const Block_* block
09149:
+09150: if block_index < 0:
__pyx_t_4 = ((__pyx_v_block_index < 0) != 0); if (__pyx_t_4) { /* … */ }
+09151: return default
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_default); __pyx_r = __pyx_v_default; goto __pyx_L0;
09152: else:
+09153: block = Rack_Get__(blocks, <size_t>block_index)
/*else*/ { __pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, ((size_t)__pyx_v_block_index));
+09154: return Block_Get__(block, <size_t>(address_ - Block_Start(block)))
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = __Pyx_PyInt_From_byte_t(__pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, ((size_t)(__pyx_v_address_ - __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block))))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; }
09155:
+09156: def hex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_146hex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_145hex[] = "Memory.hex(self: Memory, *args: Any) -> str\nConverts into an hexadecimal string.\n\n Arguments:\n sep (str):\n Separator string between bytes.\n Defaults to an emoty string if not provided.\n Available since Python 3.8.\n\n bytes_per_sep (int):\n Number of bytes grouped between separators.\n Defaults to one byte per group.\n Available since Python 3.8.\n\n Returns:\n str: Hexadecimal string representation.\n\n Raises:\n :obj:`ValueError`: Data not contiguous (see :attr:`contiguous`).\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> Memory().hex() == ''\n True\n\n ~~~\n\n >>> memory = Memory.from_bytes(b'Hello, World!')\n >>> memory.hex()\n 48656c6c6f2c20576f726c6421\n >>> memory.hex('.')\n 48.65.6c.6c.6f.2c.20.57.6f.72.6c.64.21\n >>> memory.hex('.', 4)\n 48.656c6c6f.2c20576f.726c6421\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_146hex = {"hex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_146hex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_145hex}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_146hex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_args = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("hex (wrapper)", 0); if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hex", 0))) return NULL; __Pyx_INCREF(__pyx_args); __pyx_v_args = __pyx_args; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_145hex(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_args); /* function exit code */ __Pyx_XDECREF(__pyx_v_args); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_145hex(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_args) { Memory_ const *__pyx_v_memory; PyObject *__pyx_v_data = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("hex", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.hex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_data); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__189 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_memory, __pyx_n_s_data); if (unlikely(!__pyx_tuple__189)) __PYX_ERR(0, 9156, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__189); __Pyx_GIVEREF(__pyx_tuple__189); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9156, __pyx_L1_error) /* … */ __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_146hex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_hex, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_hex, __pyx_t_12) < 0) __PYX_ERR(0, 9156, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__189, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_hex, 9156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) __PYX_ERR(0, 9156, __pyx_L1_error)
09157: self: Memory,
+09158: *args: Any, # see docstring
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Any); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_args, __pyx_t_12) < 0) __PYX_ERR(0, 9156, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_n_u_unicode) < 0) __PYX_ERR(0, 9156, __pyx_L1_error)
09159: ) -> str:
09160: r"""Converts into an hexadecimal string.
09161:
09162: Arguments:
09163: sep (str):
09164: Separator string between bytes.
09165: Defaults to an emoty string if not provided.
09166: Available since Python 3.8.
09167:
09168: bytes_per_sep (int):
09169: Number of bytes grouped between separators.
09170: Defaults to one byte per group.
09171: Available since Python 3.8.
09172:
09173: Returns:
09174: str: Hexadecimal string representation.
09175:
09176: Raises:
09177: :obj:`ValueError`: Data not contiguous (see :attr:`contiguous`).
09178:
09179: Examples:
09180: >>> from cbytesparse.c import Memory
09181:
09182: >>> Memory().hex() == ''
09183: True
09184:
09185: ~~~
09186:
09187: >>> memory = Memory.from_bytes(b'Hello, World!')
09188: >>> memory.hex()
09189: 48656c6c6f2c20576f726c6421
09190: >>> memory.hex('.')
09191: 48.65.6c.6c.6f.2c.20.57.6f.72.6c.64.21
09192: >>> memory.hex('.', 4)
09193: 48.656c6c6f.2c20576f.726c6421
09194: """
09195: cdef:
+09196: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
09197: bytes data
09198:
+09199: if not Rack_Bool(memory.blocks):
__pyx_t_2 = ((!(__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_memory->blocks) != 0)) != 0); if (__pyx_t_2) { /* … */ }
+09200: return ''
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_kp_u__12); __pyx_r = __pyx_kp_u__12; goto __pyx_L0;
09201:
+09202: data = self.__bytes__()
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 9202, __pyx_L1_error) __pyx_v_data = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+09203: return data.hex(*args)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_hex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_v_args, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 9203, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L0;
09204:
+09205: def index(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_148index(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_147index[] = "Memory.index(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address\nIndex of an item.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n int: The index of the first item equal to `value`.\n\n Raises:\n :obj:`ValueError`: Item not found.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_148index = {"index", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_148index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_147index}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_148index(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("index (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_147index(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("index", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.index", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__191 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__191)) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__191); __Pyx_GIVEREF(__pyx_tuple__191); /* … */ __pyx_t_12 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9205, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_148index, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_index, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__192)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_index, __pyx_t_7) < 0) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__192 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__191, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_index, 9205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(0, 9205, __pyx_L1_error)
09206: self: Memory,
+09207: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_7); __pyx_t_13 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09208: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09209: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "index") < 0)) __PYX_ERR(0, 9205, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("index", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9205, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.index", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_147index(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09210: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 9205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
09211: r"""Index of an item.
09212:
09213: Arguments:
09214: item (items):
09215: Value to find. Can be either some byte string or an integer.
09216:
09217: start (int):
09218: Inclusive start of the searched range.
09219: If ``None``, :attr:`start` is considered.
09220:
09221: endex (int):
09222: Exclusive end of the searched range.
09223: If ``None``, :attr:`endex` is considered.
09224:
09225: Returns:
09226: int: The index of the first item equal to `value`.
09227:
09228: Raises:
09229: :obj:`ValueError`: Item not found.
09230: """
09231:
+09232: return Memory_Index(self._, item, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Index(__pyx_v_self->_, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
09233:
+09234: def insert(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_150insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_149insert[] = "Memory.insert(self: Memory, address: Address, data: Union[AnyBytes, Value, ImmutableMemory]) -> None\nInserts data.\n\n Inserts data, moving existing items after the insertion address by the\n size of the inserted data.\n\n Arguments::\n address (int):\n Address of the insertion point.\n\n data (bytes):\n Data to insert.\n\n See Also:\n :meth:`insert_backup`\n :meth:`insert_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C]| | |[x | y | z]| |[$]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C]| | |[x | y | 1 | z]| |[$]|\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> memory.insert(10, b'$')\n >>> memory.to_blocks()\n [[1, b'ABC'], [6, b'xyz'], [10, b'$']]\n >>> memory.insert(8, b'1')\n >>> memory.to_blocks()\n [[1, b'ABC'], [6, b'xy1z'], [11, b'$']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_150insert = {"insert", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_150insert, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_149insert}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_150insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); __PYX_ERR(0, 9234, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert") < 0)) __PYX_ERR(0, 9234, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_data = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9234, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_149insert(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_data); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_149insert(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__193 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data); if (unlikely(!__pyx_tuple__193)) __PYX_ERR(0, 9234, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__193); __Pyx_GIVEREF(__pyx_tuple__193); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9234, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_150insert, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_insert, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__194)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_insert, __pyx_t_13) < 0) __PYX_ERR(0, 9234, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__194 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__193, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_insert, 9234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__194)) __PYX_ERR(0, 9234, __pyx_L1_error)
09235: self: Memory,
+09236: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_12) < 0) __PYX_ERR(0, 9234, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+09237: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Union); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_13); __pyx_t_11 = 0; __pyx_t_6 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_data, __pyx_t_13) < 0) __PYX_ERR(0, 9234, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09238: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 9234, __pyx_L1_error)
09239: r"""Inserts data.
09240:
09241: Inserts data, moving existing items after the insertion address by the
09242: size of the inserted data.
09243:
09244: Arguments::
09245: address (int):
09246: Address of the insertion point.
09247:
09248: data (bytes):
09249: Data to insert.
09250:
09251: See Also:
09252: :meth:`insert_backup`
09253: :meth:`insert_restore`
09254:
09255: Examples:
09256: >>> from cbytesparse.c import Memory
09257:
09258: +---+---+---+---+---+---+---+---+---+---+---+---+
09259: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
09260: +===+===+===+===+===+===+===+===+===+===+===+===+
09261: | |[A | B | C]| | |[x | y | z]| | | |
09262: +---+---+---+---+---+---+---+---+---+---+---+---+
09263: | |[A | B | C]| | |[x | y | z]| |[$]| |
09264: +---+---+---+---+---+---+---+---+---+---+---+---+
09265: | |[A | B | C]| | |[x | y | 1 | z]| |[$]|
09266: +---+---+---+---+---+---+---+---+---+---+---+---+
09267:
09268: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
09269: >>> memory.insert(10, b'$')
09270: >>> memory.to_blocks()
09271: [[1, b'ABC'], [6, b'xyz'], [10, b'$']]
09272: >>> memory.insert(8, b'1')
09273: >>> memory.to_blocks()
09274: [[1, b'ABC'], [6, b'xy1z'], [11, b'$']]
09275: """
09276:
+09277: Memory_Insert(self._, address, data)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Insert(__pyx_v_self->_, __pyx_v_address, __pyx_v_data); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9277, __pyx_L1_error)
09278:
+09279: def insert_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_152insert_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_151insert_backup[] = "Memory.insert_backup(self: Memory, address: Address, data: Union[AnyBytes, Value, ImmutableMemory]) -> Tuple[Address, ImmutableMemory]\nBackups an `insert()` operation.\n\n Arguments:\n address (int):\n Address of the insertion point.\n\n data (bytes):\n Data to insert.\n\n Returns:\n (int, :obj:`ImmutableMemory`): Insertion address, backup memory region.\n\n See Also:\n :meth:`insert`\n :meth:`insert_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_152insert_backup = {"insert_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_152insert_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_151insert_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_152insert_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("insert_backup", 1, 2, 2, 1); __PYX_ERR(0, 9279, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert_backup") < 0)) __PYX_ERR(0, 9279, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_data = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("insert_backup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9279, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.insert_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_151insert_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_data); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_151insert_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data) { Py_ssize_t __pyx_v_size; PyObject *__pyx_v_backup = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.Memory.insert_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_backup); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__195 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data, __pyx_n_s_size, __pyx_n_s_backup); if (unlikely(!__pyx_tuple__195)) __PYX_ERR(0, 9279, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__195); __Pyx_GIVEREF(__pyx_tuple__195); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9279, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_152insert_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_insert_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__196)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_insert_backup, __pyx_t_7) < 0) __PYX_ERR(0, 9279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__195, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_insert_backup, 9279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(0, 9279, __pyx_L1_error)
09280: self: Memory,
+09281: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 9279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09282: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_6); __pyx_t_10 = 0; __pyx_t_12 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_data, __pyx_t_6) < 0) __PYX_ERR(0, 9279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09283: ) -> Tuple[Address, ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_7); __pyx_t_11 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 9279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
09284: r"""Backups an `insert()` operation.
09285:
09286: Arguments:
09287: address (int):
09288: Address of the insertion point.
09289:
09290: data (bytes):
09291: Data to insert.
09292:
09293: Returns:
09294: (int, :obj:`ImmutableMemory`): Insertion address, backup memory region.
09295:
09296: See Also:
09297: :meth:`insert`
09298: :meth:`insert_restore`
09299: """
09300:
+09301: size = 1 if isinstance(data, int) else len(data)
__pyx_t_2 = PyInt_Check(__pyx_v_data); if ((__pyx_t_2 != 0)) { __pyx_t_1 = 1; } else { __pyx_t_3 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9301, __pyx_L1_error) __pyx_t_1 = __pyx_t_3; } __pyx_v_size = __pyx_t_1;
+09302: backup = self._pretrim_endex_backup(address, size)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pretrim_endex_backup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_address, __pyx_t_6}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9302, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_address, __pyx_t_6}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9302, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_address); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_backup = __pyx_t_4; __pyx_t_4 = 0;
+09303: return address, backup
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_address); __Pyx_INCREF(__pyx_v_backup); __Pyx_GIVEREF(__pyx_v_backup); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_backup); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
09304:
+09305: def insert_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_154insert_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_153insert_restore[] = "Memory.insert_restore(self: Memory, address: Address, backup: ImmutableMemory) -> None\nRestores an `insert()` operation.\n\n Arguments:\n address (int):\n Address of the insertion point.\n\n backup (:obj:`Memory`):\n Backup memory region to restore.\n\n See Also:\n :meth:`insert`\n :meth:`insert_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_154insert_restore = {"insert_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_154insert_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_153insert_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_154insert_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_backup = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_backup,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_backup)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("insert_restore", 1, 2, 2, 1); __PYX_ERR(0, 9305, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert_restore") < 0)) __PYX_ERR(0, 9305, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_backup = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("insert_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9305, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.insert_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_153insert_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_backup); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_153insert_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_backup) { Memory_ *__pyx_v_memory; Memory_ const *__pyx_v_backup_; addr_t __pyx_v_address_; addr_t __pyx_v_size; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.insert_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_157generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__197 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_backup, __pyx_n_s_memory, __pyx_n_s_backup_2, __pyx_n_s_address_2, __pyx_n_s_size); if (unlikely(!__pyx_tuple__197)) __PYX_ERR(0, 9305, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__197); __Pyx_GIVEREF(__pyx_tuple__197); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9305, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_154insert_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_insert_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__198)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_insert_restore, __pyx_t_13) < 0) __PYX_ERR(0, 9305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__198 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__197, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_insert_restore, 9305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) __PYX_ERR(0, 9305, __pyx_L1_error)
09306: self: Memory,
+09307: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_13) < 0) __PYX_ERR(0, 9305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09308: backup: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_backup, __pyx_t_13) < 0) __PYX_ERR(0, 9305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09309: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 9305, __pyx_L1_error)
09310: r"""Restores an `insert()` operation.
09311:
09312: Arguments:
09313: address (int):
09314: Address of the insertion point.
09315:
09316: backup (:obj:`Memory`):
09317: Backup memory region to restore.
09318:
09319: See Also:
09320: :meth:`insert`
09321: :meth:`insert_backup`
09322: """
09323: cdef:
+09324: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
09325: const Memory_* backup_
+09326: addr_t address_ = <addr_t>address
__pyx_t_2 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_2 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9326, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_2);
09327: addr_t size
09328:
+09329: if isinstance(backup, Memory):
__pyx_t_3 = __Pyx_TypeCheck(__pyx_v_backup, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_4 = (__pyx_t_3 != 0);
if (__pyx_t_4) {
/* … */
goto __pyx_L3;
}
+09330: backup_ = (<Memory>backup)._
__pyx_t_1 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_backup)->_; __pyx_v_backup_ = __pyx_t_1;
+09331: size = Memory_Length(backup_)
__pyx_v_size = __pyx_f_11cbytesparse_1c_Memory_Length(__pyx_v_backup_);
+09332: CheckAddAddrU(address_, size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address_, __pyx_v_size); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9332, __pyx_L1_error)
+09333: Memory_Delete_(memory, address_, address_ + size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Delete_(__pyx_v_memory, __pyx_v_address_, (__pyx_v_address_ + __pyx_v_size)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9333, __pyx_L1_error)
+09334: Memory_WriteSame_(memory, 0, backup_, True)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_memory, 0, __pyx_v_backup_, 1); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9334, __pyx_L1_error)
09335: else:
+09336: size = <addr_t>len(backup)
/*else*/ { __pyx_t_6 = PyObject_Length(__pyx_v_backup); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9336, __pyx_L1_error) __pyx_v_size = ((addr_t)__pyx_t_6);
+09337: CheckAddAddrU(address_, size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address_, __pyx_v_size); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9337, __pyx_L1_error)
+09338: Memory_Delete_(memory, address_, address_ + size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Delete_(__pyx_v_memory, __pyx_v_address_, (__pyx_v_address_ + __pyx_v_size)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9338, __pyx_L1_error)
+09339: Memory_Write(memory, 0, backup, True)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9339, __pyx_L1_error)
}
__pyx_L3:;
09340:
+09341: def intervals(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_156intervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_155intervals[] = "Memory.intervals(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[ClosedInterval]\nIterates over block intervals.\n\n Iterates over data boundaries within an address range.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Yields:\n pair of addresses: Block data interval boundaries.\n\n See Also:\n :meth:`blocks`\n :meth:`gaps`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B]| | |[x]| |[1 | 2 | 3]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])\n >>> list(memory.intervals())\n [(1, 3), (5, 6), (7, 10)]\n >>> list(memory.intervals(2, 9))\n [(2, 3), (5, 6), (7, 9)]\n >>> list(memory.intervals(3, 5))\n []\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_156intervals = {"intervals", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_156intervals, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_155intervals}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_156intervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("intervals (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_155intervals(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_7_intervals *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("intervals", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_7_intervals *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_7_intervals(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_7_intervals, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_7_intervals *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 9341, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_157generator7, __pyx_codeobj__36, (PyObject *) __pyx_cur_scope, __pyx_n_s_intervals, __pyx_n_s_Memory_intervals, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.intervals", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_157generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("intervals", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9341, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("intervals", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_160generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__199 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_slice_start, __pyx_n_s_slice_endex); if (unlikely(!__pyx_tuple__199)) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__199); __Pyx_GIVEREF(__pyx_tuple__199); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9341, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_156intervals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_intervals, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_intervals, __pyx_t_6) < 0) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(3, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__199, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_intervals, 9341, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 9341, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_7_intervals { PyObject_HEAD Block_ const *__pyx_v_block; size_t __pyx_v_block_count; addr_t __pyx_v_block_endex; size_t __pyx_v_block_index; size_t __pyx_v_block_index_endex; size_t __pyx_v_block_index_start; addr_t __pyx_v_block_start; Rack_ const *__pyx_v_blocks; PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; size_t __pyx_v_slice_endex; size_t __pyx_v_slice_start; PyObject *__pyx_v_start; addr_t __pyx_v_start_; size_t __pyx_t_0; size_t __pyx_t_1; size_t __pyx_t_2; };
09342: self: Memory,
+09343: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09344: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "intervals") < 0)) __PYX_ERR(0, 9341, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("intervals", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9341, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.intervals", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_155intervals(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09345: ) -> Iterator[ClosedInterval]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_ClosedInterval); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 9341, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
09346: r"""Iterates over block intervals.
09347:
09348: Iterates over data boundaries within an address range.
09349:
09350: Arguments:
09351: start (int):
09352: Inclusive start address.
09353: If ``None``, :attr:`start` is considered.
09354:
09355: endex (int):
09356: Exclusive end address.
09357: If ``None``, :attr:`endex` is considered.
09358:
09359: Yields:
09360: pair of addresses: Block data interval boundaries.
09361:
09362: See Also:
09363: :meth:`blocks`
09364: :meth:`gaps`
09365:
09366: Examples:
09367: >>> from cbytesparse.c import Memory
09368:
09369: +---+---+---+---+---+---+---+---+---+---+---+
09370: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
09371: +===+===+===+===+===+===+===+===+===+===+===+
09372: | |[A | B]| | |[x]| |[1 | 2 | 3]| |
09373: +---+---+---+---+---+---+---+---+---+---+---+
09374:
09375: >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])
09376: >>> list(memory.intervals())
09377: [(1, 3), (5, 6), (7, 10)]
09378: >>> list(memory.intervals(2, 9))
09379: [(2, 3), (5, 6), (7, 9)]
09380: >>> list(memory.intervals(3, 5))
09381: []
09382: """
09383: cdef:
09384: addr_t start_
09385: addr_t endex_
+09386: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_->blocks; __pyx_cur_scope->__pyx_v_blocks = __pyx_t_1;
+09387: size_t block_count = Rack_Length(blocks)
__pyx_cur_scope->__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_cur_scope->__pyx_v_blocks);
09388: size_t block_index
09389: size_t block_index_start
09390: size_t block_index_endex
09391: const Block_* block
09392: addr_t block_start
09393: addr_t block_endex
09394: size_t slice_start
09395: size_t slice_endex
09396:
+09397: if block_count:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_block_count != 0); if (__pyx_t_2) { /* … */ } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+09398: block_index_start = 0 if start is None else Rack_IndexStart(blocks, <addr_t>start)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_start == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_3 = 0; } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9398, __pyx_L1_error) __pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_cur_scope->__pyx_v_blocks, ((addr_t)__pyx_t_4)); } __pyx_cur_scope->__pyx_v_block_index_start = __pyx_t_3;
+09399: block_index_endex = block_count if endex is None else Rack_IndexEndex(blocks, <addr_t>endex)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); if ((__pyx_t_2 != 0)) { __pyx_t_3 = __pyx_cur_scope->__pyx_v_block_count; } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9399, __pyx_L1_error) __pyx_t_3 = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_cur_scope->__pyx_v_blocks, ((addr_t)__pyx_t_4)); } __pyx_cur_scope->__pyx_v_block_index_endex = __pyx_t_3;
+09400: start_, endex_ = Memory_Bound(self._, start, endex)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 9400, __pyx_L1_error)
__pyx_t_4 = __pyx_t_5.f0;
__pyx_t_6 = __pyx_t_5.f1;
__pyx_cur_scope->__pyx_v_start_ = __pyx_t_4;
__pyx_cur_scope->__pyx_v_endex_ = __pyx_t_6;
09401:
+09402: for block_index in range(block_index_start, block_index_endex):
__pyx_t_3 = __pyx_cur_scope->__pyx_v_block_index_endex; __pyx_t_7 = __pyx_t_3; for (__pyx_t_8 = __pyx_cur_scope->__pyx_v_block_index_start; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_cur_scope->__pyx_v_block_index = __pyx_t_8;
+09403: block = Rack_Get__(blocks, block_index)
__pyx_cur_scope->__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_cur_scope->__pyx_v_blocks, __pyx_cur_scope->__pyx_v_block_index);
+09404: block_start = Block_Start(block)
__pyx_cur_scope->__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_cur_scope->__pyx_v_block);
+09405: block_endex = Block_Endex(block)
__pyx_cur_scope->__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_cur_scope->__pyx_v_block);
+09406: slice_start = block_start if start_ < block_start else start_
if (((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_block_start) != 0)) { __pyx_t_6 = __pyx_cur_scope->__pyx_v_block_start; } else { __pyx_t_6 = __pyx_cur_scope->__pyx_v_start_; } __pyx_cur_scope->__pyx_v_slice_start = __pyx_t_6;
+09407: slice_endex = endex_ if endex_ < block_endex else block_endex
if (((__pyx_cur_scope->__pyx_v_endex_ < __pyx_cur_scope->__pyx_v_block_endex) != 0)) { __pyx_t_6 = __pyx_cur_scope->__pyx_v_endex_; } else { __pyx_t_6 = __pyx_cur_scope->__pyx_v_block_endex; } __pyx_cur_scope->__pyx_v_slice_endex = __pyx_t_6;
+09408: if slice_start < slice_endex:
__pyx_t_2 = ((__pyx_cur_scope->__pyx_v_slice_start < __pyx_cur_scope->__pyx_v_slice_endex) != 0); if (__pyx_t_2) { /* … */ } }
+09409: yield slice_start, slice_endex
__pyx_t_9 = __Pyx_PyInt_FromSize_t(__pyx_cur_scope->__pyx_v_slice_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyInt_FromSize_t(__pyx_cur_scope->__pyx_v_slice_endex); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10); __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_r = __pyx_t_11; __pyx_t_11 = 0; __pyx_cur_scope->__pyx_t_0 = __pyx_t_3; __pyx_cur_scope->__pyx_t_1 = __pyx_t_7; __pyx_cur_scope->__pyx_t_2 = __pyx_t_8; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L8_resume_from_yield:; __pyx_t_3 = __pyx_cur_scope->__pyx_t_0; __pyx_t_7 = __pyx_cur_scope->__pyx_t_1; __pyx_t_8 = __pyx_cur_scope->__pyx_t_2; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9409, __pyx_L1_error)
09410:
+09411: def items(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_159items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_158items[] = "Memory.items(self: Memory, start: Optional[Address] = None, endex: Optional[Union[Address, EllipsisType]] = None, pattern: Optional[Union[AnyBytes, Value]] = None) -> Iterator[Tuple[Address, Optional[Value]]]\nIterates over address and value pairs.\n\n Iterates over address and value pairs, from `start` to `endex`.\n Implemets the interface of :obj:`dict`.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n If ``Ellipsis``, the iterator is infinite.\n\n pattern (items):\n Pattern of values to fill emptiness.\n\n Yields:\n int: Range address and value pairs.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> from itertools import islice\n >>> memory = Memory()\n >>> list(memory.items(endex=8))\n [(0, None), (1, None), (2, None), (3, None), (4, None), (5, None), (6, None), (7, None)]\n >>> list(memory.items(3, 8))\n [(3, None), (4, None), (5, None), (6, None), (7, None)]\n >>> list(islice(memory.items(3, ...), 7))\n [(3, None), (4, None), (5, None), (6, None), (7, None), (8, None), (9, None)]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | | 65| 66| 67| | |120|121|122| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> list(memory.items())\n [(1, 65), (2, 66), (3, 67), (4, None), (5, None""), (6, 120), (7, 121), (8, 122)]\n >>> list(memory.items(3, 8))\n [(3, 67), (4, None), (5, None), (6, 120), (7, 121)]\n >>> list(islice(memory.items(3, ...), 7))\n [(3, 67), (4, None), (5, None), (6, 120), (7, 121), (8, 122), (9, None)]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_159items = {"items", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_159items, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_158items}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_159items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("items (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_158items(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_8_items *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("items", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_8_items *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_8_items(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_8_items, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_8_items *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 9411, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_pattern = __pyx_v_pattern; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pattern); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_160generator8, __pyx_codeobj__37, (PyObject *) __pyx_cur_scope, __pyx_n_s_items, __pyx_n_s_Memory_items, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.items", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_160generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("items", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9411, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("items", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_163generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__200 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_rover, __pyx_n_s_pattern_value, __pyx_n_s_pattern_view, __pyx_n_s_pattern_size, __pyx_n_s_pattern_data, __pyx_n_s_address, __pyx_n_s_value); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__200); __Pyx_GIVEREF(__pyx_tuple__200); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9411, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_159items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_items, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_items, __pyx_t_7) < 0) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(4, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_items, 9411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 9411, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_8_items { PyObject_HEAD addr_t __pyx_v_address; PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; PyObject *__pyx_v_pattern; byte_t const *__pyx_v_pattern_data; size_t __pyx_v_pattern_size; byte_t __pyx_v_pattern_value; __Pyx_memviewslice __pyx_v_pattern_view; Rover_ *__pyx_v_rover; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; PyObject *__pyx_v_start; addr_t __pyx_v_start_; int __pyx_v_value; };
09412: self: Memory,
+09413: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09414: endex: Optional[Union[Address, EllipsisType]] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Union); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_11); __pyx_t_13 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_10) < 0) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+09415: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "items") < 0)) __PYX_ERR(0, 9411, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("items", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9411, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.items", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_158items(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Union); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_12); __pyx_t_7 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_pattern, __pyx_t_13) < 0) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09416: ) -> Iterator[Tuple[Address, Optional[Value]]]:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Address); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); __pyx_t_10 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 9411, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
09417: r"""Iterates over address and value pairs.
09418:
09419: Iterates over address and value pairs, from `start` to `endex`.
09420: Implemets the interface of :obj:`dict`.
09421:
09422: Arguments:
09423: start (int):
09424: Inclusive start address.
09425: If ``None``, :attr:`start` is considered.
09426:
09427: endex (int):
09428: Exclusive end address.
09429: If ``None``, :attr:`endex` is considered.
09430: If ``Ellipsis``, the iterator is infinite.
09431:
09432: pattern (items):
09433: Pattern of values to fill emptiness.
09434:
09435: Yields:
09436: int: Range address and value pairs.
09437:
09438: Examples:
09439: >>> from cbytesparse.c import Memory
09440:
09441: >>> from itertools import islice
09442: >>> memory = Memory()
09443: >>> list(memory.items(endex=8))
09444: [(0, None), (1, None), (2, None), (3, None), (4, None), (5, None), (6, None), (7, None)]
09445: >>> list(memory.items(3, 8))
09446: [(3, None), (4, None), (5, None), (6, None), (7, None)]
09447: >>> list(islice(memory.items(3, ...), 7))
09448: [(3, None), (4, None), (5, None), (6, None), (7, None), (8, None), (9, None)]
09449:
09450: ~~~
09451:
09452: +---+---+---+---+---+---+---+---+---+---+
09453: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
09454: +===+===+===+===+===+===+===+===+===+===+
09455: | |[A | B | C]| | |[x | y | z]| |
09456: +---+---+---+---+---+---+---+---+---+---+
09457: | | 65| 66| 67| | |120|121|122| |
09458: +---+---+---+---+---+---+---+---+---+---+
09459:
09460: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
09461: >>> list(memory.items())
09462: [(1, 65), (2, 66), (3, 67), (4, None), (5, None), (6, 120), (7, 121), (8, 122)]
09463: >>> list(memory.items(3, 8))
09464: [(3, 67), (4, None), (5, None), (6, 120), (7, 121)]
09465: >>> list(islice(memory.items(3, ...), 7))
09466: [(3, 67), (4, None), (5, None), (6, 120), (7, 121), (8, 122), (9, None)]
09467: """
09468: cdef:
09469: addr_t start_
09470: addr_t endex_
+09471: Rover_* rover = NULL
__pyx_cur_scope->__pyx_v_rover = NULL;
09472: byte_t pattern_value
09473: const byte_t[:] pattern_view
+09474: size_t pattern_size = 0
__pyx_cur_scope->__pyx_v_pattern_size = 0;
+09475: const byte_t* pattern_data = NULL
__pyx_cur_scope->__pyx_v_pattern_data = NULL;
09476: addr_t address
09477: int value
09478:
+09479: if start is None:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+09480: start_ = Memory_Start(self._)
__pyx_cur_scope->__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_cur_scope->__pyx_v_self->_);
09481: else:
+09482: start_ = <addr_t>start
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9482, __pyx_L1_error) __pyx_cur_scope->__pyx_v_start_ = ((addr_t)__pyx_t_3); } __pyx_L4:;
09483:
+09484: if endex is None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+09485: endex_ = Memory_Endex(self._)
__pyx_cur_scope->__pyx_v_endex_ = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_cur_scope->__pyx_v_self->_);
+09486: elif endex is Ellipsis:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+09487: endex_ = ADDR_MAX
__pyx_cur_scope->__pyx_v_endex_ = ADDR_MAX;
09488: else:
+09489: endex_ = <addr_t>endex
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9489, __pyx_L1_error) __pyx_cur_scope->__pyx_v_endex_ = ((addr_t)__pyx_t_3); } __pyx_L5:;
09490:
+09491: if pattern is not None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_pattern != Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+09492: if isinstance(pattern, int):
__pyx_t_1 = PyInt_Check(__pyx_cur_scope->__pyx_v_pattern);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L7;
}
+09493: pattern_value = <byte_t>pattern
__pyx_t_4 = __Pyx_PyInt_As_byte_t(__pyx_cur_scope->__pyx_v_pattern); if (unlikely((__pyx_t_4 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9493, __pyx_L1_error) __pyx_cur_scope->__pyx_v_pattern_value = ((byte_t)__pyx_t_4);
+09494: pattern_size = 1
__pyx_cur_scope->__pyx_v_pattern_size = 1;
+09495: pattern_data = &pattern_value
__pyx_cur_scope->__pyx_v_pattern_data = (&__pyx_cur_scope->__pyx_v_pattern_value);
09496: else:
+09497: try:
/*else*/ { { /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L13_try_end; __pyx_L8_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L9_exception_handled:; __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_L13_try_end:; }
+09498: pattern_view = pattern
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_cur_scope->__pyx_v_pattern, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 9498, __pyx_L8_error) __pyx_cur_scope->__pyx_v_pattern_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+09499: except TypeError:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("cbytesparse.c.Memory.items", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 9499, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12);
+09500: pattern_view = bytes(pattern)
__pyx_t_13 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_cur_scope->__pyx_v_pattern); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9500, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_t_13, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 9500, __pyx_L10_except_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_cur_scope->__pyx_v_pattern_view, 1); __pyx_cur_scope->__pyx_v_pattern_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L9_exception_handled; } goto __pyx_L10_except_error; __pyx_L10_except_error:;
09501: with cython.boundscheck(False):
+09502: pattern_size = len(pattern_view)
__pyx_t_14 = __Pyx_MemoryView_Len(__pyx_cur_scope->__pyx_v_pattern_view);
__pyx_cur_scope->__pyx_v_pattern_size = __pyx_t_14;
+09503: pattern_data = &pattern_view[0]
__pyx_t_15 = 0; if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_cur_scope->__pyx_v_pattern_view.shape[0]; __pyx_cur_scope->__pyx_v_pattern_data = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_cur_scope->__pyx_v_pattern_view.data + __pyx_t_15 * __pyx_cur_scope->__pyx_v_pattern_view.strides[0]) )))); } __pyx_L7:;
09504:
+09505: try:
/*try:*/ {
+09506: rover = Rover_Create(self._, start_, endex_, pattern_size, pattern_data, True, endex is Ellipsis)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis);
__pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Create(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start_, __pyx_cur_scope->__pyx_v_endex_, __pyx_cur_scope->__pyx_v_pattern_size, __pyx_cur_scope->__pyx_v_pattern_data, 1, __pyx_t_2); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL))) __PYX_ERR(0, 9506, __pyx_L17_error)
__pyx_cur_scope->__pyx_v_rover = __pyx_t_16;
+09507: while Rover_HasNext(rover):
while (1) { __pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rover_HasNext(__pyx_cur_scope->__pyx_v_rover) != 0); if (!__pyx_t_2) break;
+09508: address = Rover_Address(rover)
__pyx_cur_scope->__pyx_v_address = __pyx_f_11cbytesparse_1c_Rover_Address(__pyx_cur_scope->__pyx_v_rover);
+09509: value = Rover_Next_(rover)
__pyx_t_9 = __pyx_f_11cbytesparse_1c_Rover_Next_(__pyx_cur_scope->__pyx_v_rover); if (unlikely(__pyx_t_9 == ((int)-2))) __PYX_ERR(0, 9509, __pyx_L17_error)
__pyx_cur_scope->__pyx_v_value = __pyx_t_9;
+09510: yield address, (None if value < 0 else value)
__pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9510, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_12); if (((__pyx_cur_scope->__pyx_v_value < 0) != 0)) { __Pyx_INCREF(Py_None); __pyx_t_11 = Py_None; } else { __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9510, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __pyx_t_10; __pyx_t_10 = 0; } __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9510, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_11); __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L21_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9510, __pyx_L17_error) } }
09511: finally:
+09512: rover = Rover_Free(rover)
/*finally:*/ { /*normal exit:*/{ __pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_cur_scope->__pyx_v_rover); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 9512, __pyx_L1_error) __pyx_cur_scope->__pyx_v_rover = __pyx_t_16; goto __pyx_L18; } __pyx_L17_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_cur_scope->__pyx_v_rover); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 9512, __pyx_L23_error) __pyx_cur_scope->__pyx_v_rover = __pyx_t_16; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L1_error; __pyx_L23_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; goto __pyx_L1_error; } __pyx_L18:; } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
09513:
+09514: def keys(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_162keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_161keys[] = "Memory.keys(self: Memory, start: Optional[Address] = None, endex: Optional[Union[Address, EllipsisType]] = None) -> Iterator[Address]\nIterates over addresses.\n\n Iterates over addresses, from `start` to `endex`.\n Implemets the interface of :obj:`dict`.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n If ``Ellipsis``, the iterator is infinite.\n\n Yields:\n int: Range address.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> from itertools import islice\n >>> memory = Memory()\n >>> list(memory.keys())\n []\n >>> list(memory.keys(endex=8))\n [0, 1, 2, 3, 4, 5, 6, 7]\n >>> list(memory.keys(3, 8))\n [3, 4, 5, 6, 7]\n >>> list(islice(memory.keys(3, ...), 7))\n [3, 4, 5, 6, 7, 8, 9]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> list(memory.keys())\n [1, 2, 3, 4, 5, 6, 7, 8]\n >>> list(memory.keys(endex=8))\n [1, 2, 3, 4, 5, 6, 7]\n >>> list(memory.keys(3, 8))\n [3, 4, 5, 6, 7]\n >>> list(islice(memory.keys(3, ...), 7))\n [3, 4, 5, 6, 7, 8, 9]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_162keys = {"keys", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_162keys, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_161keys}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_162keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keys (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_161keys(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_9_keys *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keys", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_9_keys *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_9_keys(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_9_keys, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_9_keys *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 9514, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_163generator9, __pyx_codeobj__38, (PyObject *) __pyx_cur_scope, __pyx_n_s_keys, __pyx_n_s_Memory_keys, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_163generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keys", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9514, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__201 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__201)) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__201); __Pyx_GIVEREF(__pyx_tuple__201); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9514, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_162keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_keys, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_keys, __pyx_t_13) < 0) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__201, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_keys, 9514, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 9514, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_9_keys { PyObject_HEAD PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; PyObject *__pyx_v_start; addr_t __pyx_v_start_; };
09515: self: Memory,
+09516: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_13) < 0) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09517: endex: Optional[Union[Address, EllipsisType]] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "keys") < 0)) __PYX_ERR(0, 9514, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("keys", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9514, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_161keys(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_12); __pyx_t_6 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_10) < 0) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+09518: ) -> Iterator[Address]:
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9518, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9518, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9518, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_13) < 0) __PYX_ERR(0, 9514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
09519: r"""Iterates over addresses.
09520:
09521: Iterates over addresses, from `start` to `endex`.
09522: Implemets the interface of :obj:`dict`.
09523:
09524: Arguments:
09525: start (int):
09526: Inclusive start address.
09527: If ``None``, :attr:`start` is considered.
09528:
09529: endex (int):
09530: Exclusive end address.
09531: If ``None``, :attr:`endex` is considered.
09532: If ``Ellipsis``, the iterator is infinite.
09533:
09534: Yields:
09535: int: Range address.
09536:
09537: Examples:
09538: >>> from cbytesparse.c import Memory
09539:
09540: >>> from itertools import islice
09541: >>> memory = Memory()
09542: >>> list(memory.keys())
09543: []
09544: >>> list(memory.keys(endex=8))
09545: [0, 1, 2, 3, 4, 5, 6, 7]
09546: >>> list(memory.keys(3, 8))
09547: [3, 4, 5, 6, 7]
09548: >>> list(islice(memory.keys(3, ...), 7))
09549: [3, 4, 5, 6, 7, 8, 9]
09550:
09551: ~~~
09552:
09553: +---+---+---+---+---+---+---+---+---+---+
09554: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
09555: +===+===+===+===+===+===+===+===+===+===+
09556: | |[A | B | C]| | |[x | y | z]| |
09557: +---+---+---+---+---+---+---+---+---+---+
09558:
09559: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
09560: >>> list(memory.keys())
09561: [1, 2, 3, 4, 5, 6, 7, 8]
09562: >>> list(memory.keys(endex=8))
09563: [1, 2, 3, 4, 5, 6, 7]
09564: >>> list(memory.keys(3, 8))
09565: [3, 4, 5, 6, 7]
09566: >>> list(islice(memory.keys(3, ...), 7))
09567: [3, 4, 5, 6, 7, 8, 9]
09568: """
09569: cdef:
09570: addr_t start_
09571: addr_t endex_
09572:
+09573: if start is None:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+09574: start_ = Memory_Start(self._)
__pyx_cur_scope->__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_cur_scope->__pyx_v_self->_);
09575: else:
+09576: start_ = <addr_t>start
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9576, __pyx_L1_error) __pyx_cur_scope->__pyx_v_start_ = ((addr_t)__pyx_t_3); } __pyx_L4:;
09577:
+09578: if endex is None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+09579: endex_ = Memory_Endex(self._)
__pyx_cur_scope->__pyx_v_endex_ = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_cur_scope->__pyx_v_self->_);
+09580: elif endex is Ellipsis:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+09581: endex_ = ADDR_MAX
__pyx_cur_scope->__pyx_v_endex_ = ADDR_MAX;
09582: else:
+09583: endex_ = <addr_t>endex
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9583, __pyx_L1_error) __pyx_cur_scope->__pyx_v_endex_ = ((addr_t)__pyx_t_3); } __pyx_L5:;
09584:
+09585: while start_ < endex_:
while (1) { __pyx_t_2 = ((__pyx_cur_scope->__pyx_v_start_ < __pyx_cur_scope->__pyx_v_endex_) != 0); if (!__pyx_t_2) break;
+09586: yield start_
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_cur_scope->__pyx_v_start_); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L8_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9586, __pyx_L1_error)
+09587: start_ += 1
__pyx_cur_scope->__pyx_v_start_ = (__pyx_cur_scope->__pyx_v_start_ + 1); } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
09588:
+09589: def ofind(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_165ofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_164ofind[] = "Memory.ofind(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Optional[Address]\nIndex of an item.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n int: The index of the first item equal to `value`, or ``None``.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_165ofind = {"ofind", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_165ofind, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_164ofind}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_165ofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ofind (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_164ofind(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ofind", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.ofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__202 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__202)) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__202); __Pyx_GIVEREF(__pyx_tuple__202); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9589, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_165ofind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_ofind, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__203)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_ofind, __pyx_t_7) < 0) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__203 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__202, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_ofind, 9589, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(0, 9589, __pyx_L1_error)
09590: self: Memory,
+09591: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_10); __pyx_t_12 = 0; __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_item, __pyx_t_10) < 0) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+09592: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09593: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ofind") < 0)) __PYX_ERR(0, 9589, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("ofind", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9589, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.ofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_164ofind(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_endex, __pyx_t_10) < 0) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+09594: ) -> Optional[Address]:
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 9589, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
09595: r"""Index of an item.
09596:
09597: Arguments:
09598: item (items):
09599: Value to find. Can be either some byte string or an integer.
09600:
09601: start (int):
09602: Inclusive start of the searched range.
09603: If ``None``, :attr:`start` is considered.
09604:
09605: endex (int):
09606: Exclusive end of the searched range.
09607: If ``None``, :attr:`endex` is considered.
09608:
09609: Returns:
09610: int: The index of the first item equal to `value`, or ``None``.
09611: """
09612:
+09613: return Memory_ObjFind(self._, item, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_ObjFind(__pyx_v_self->_, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
09614:
+09615: def peek(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_167peek(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_166peek[] = "Memory.peek(self: Memory, address: Address) -> Optional[Value]\nGets the item at an address.\n\n Returns:\n int: The item at `address`, ``None`` if empty.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.peek(3) # -> ord('C') = 67\n 67\n >>> memory.peek(6) # -> ord('$') = 36\n 36\n >>> memory.peek(10) # -> ord('z') = 122\n 122\n >>> memory.peek(0)\n None\n >>> memory.peek(7)\n None\n >>> memory.peek(11)\n None\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_167peek = {"peek", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_167peek, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_166peek}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_167peek(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("peek (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_166peek(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_166peek(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("peek", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.peek", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__204 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__204)) __PYX_ERR(0, 9615, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__204); __Pyx_GIVEREF(__pyx_tuple__204); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9615, __pyx_L1_error) /* … */ __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_167peek, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_peek, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__205)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_peek, __pyx_t_10) < 0) __PYX_ERR(0, 9615, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__205 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__204, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_peek, 9615, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(0, 9615, __pyx_L1_error)
09616: self: Memory,
+09617: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_13) < 0) __PYX_ERR(0, 9615, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09618: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_10) < 0) __PYX_ERR(0, 9615, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
09619: r"""Gets the item at an address.
09620:
09621: Returns:
09622: int: The item at `address`, ``None`` if empty.
09623:
09624: Examples:
09625: >>> from cbytesparse.c import Memory
09626:
09627: +---+---+---+---+---+---+---+---+---+---+---+---+
09628: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
09629: +===+===+===+===+===+===+===+===+===+===+===+===+
09630: | |[A | B | C | D]| |[$]| |[x | y | z]| |
09631: +---+---+---+---+---+---+---+---+---+---+---+---+
09632:
09633: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
09634: >>> memory.peek(3) # -> ord('C') = 67
09635: 67
09636: >>> memory.peek(6) # -> ord('$') = 36
09637: 36
09638: >>> memory.peek(10) # -> ord('z') = 122
09639: 122
09640: >>> memory.peek(0)
09641: None
09642: >>> memory.peek(7)
09643: None
09644: >>> memory.peek(11)
09645: None
09646: """
09647:
+09648: return Memory_Peek(self._, address)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Peek(__pyx_v_self->_, __pyx_v_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
09649:
+09650: def poke(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_169poke(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_168poke[] = "Memory.poke(self: Memory, address: Address, item: Optional[Union[AnyBytes, Value]]) -> None\nSets the item at an address.\n\n Arguments:\n address (int):\n Address of the target item.\n\n item (int or byte):\n Item to set, ``None`` to clear the cell.\n\n See Also:\n :meth:`poke_backup`\n :meth:`poke_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.poke(3, b'@')\n >>> memory.peek(3) # -> ord('@') = 64\n 64\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.poke(5, b'@')\n >>> memory.peek(5) # -> ord('@') = 64\n 64\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_169poke = {"poke", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_169poke, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_168poke}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_169poke(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_item = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_item,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("poke", 1, 2, 2, 1); __PYX_ERR(0, 9650, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poke") < 0)) __PYX_ERR(0, 9650, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_item = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("poke", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9650, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.poke", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_168poke(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_item); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_168poke(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.poke", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__206 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_item); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(0, 9650, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__206); __Pyx_GIVEREF(__pyx_tuple__206); /* … */ __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9650, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_169poke, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_poke, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__207)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_poke, __pyx_t_6) < 0) __PYX_ERR(0, 9650, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__206, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_poke, 9650, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(0, 9650, __pyx_L1_error)
09651: self: Memory,
+09652: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 9650, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09653: item: Optional[Union[AnyBytes, Value]],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_12); __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 9650, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09654: ) -> None:
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 9650, __pyx_L1_error)
09655: r"""Sets the item at an address.
09656:
09657: Arguments:
09658: address (int):
09659: Address of the target item.
09660:
09661: item (int or byte):
09662: Item to set, ``None`` to clear the cell.
09663:
09664: See Also:
09665: :meth:`poke_backup`
09666: :meth:`poke_restore`
09667:
09668: Examples:
09669: >>> from cbytesparse.c import Memory
09670:
09671: +---+---+---+---+---+---+---+---+---+---+---+---+
09672: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
09673: +===+===+===+===+===+===+===+===+===+===+===+===+
09674: | |[A | B | C | D]| |[$]| |[x | y | z]| |
09675: +---+---+---+---+---+---+---+---+---+---+---+---+
09676:
09677: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
09678: >>> memory.poke(3, b'@')
09679: >>> memory.peek(3) # -> ord('@') = 64
09680: 64
09681: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
09682: >>> memory.poke(5, b'@')
09683: >>> memory.peek(5) # -> ord('@') = 64
09684: 64
09685: """
09686:
+09687: Memory_Poke(self._, address, item)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Poke(__pyx_v_self->_, __pyx_v_address, __pyx_v_item); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9687, __pyx_L1_error)
09688:
+09689: def poke_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_171poke_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_170poke_backup[] = "Memory.poke_backup(self: Memory, address: Address) -> Tuple[Address, Optional[Value]]\nBackups a `poke()` operation.\n\n Arguments:\n address (int):\n Address of the target item.\n\n Returns:\n (int, int): `address`, item at `address` (``None`` if empty).\n\n See Also:\n :meth:`poke`\n :meth:`poke_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_171poke_backup = {"poke_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_171poke_backup, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_170poke_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_171poke_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_170poke_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_170poke_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.poke_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__208 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(0, 9689, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__208); __Pyx_GIVEREF(__pyx_tuple__208); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9689, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_171poke_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_poke_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__209)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_poke_backup, __pyx_t_13) < 0) __PYX_ERR(0, 9689, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__208, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_poke_backup, 9689, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(0, 9689, __pyx_L1_error)
09690: self: Memory,
+09691: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Address); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_10) < 0) __PYX_ERR(0, 9689, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+09692: ) -> Tuple[Address, Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_13); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9692, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_13) < 0) __PYX_ERR(0, 9689, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
09693: r"""Backups a `poke()` operation.
09694:
09695: Arguments:
09696: address (int):
09697: Address of the target item.
09698:
09699: Returns:
09700: (int, int): `address`, item at `address` (``None`` if empty).
09701:
09702: See Also:
09703: :meth:`poke`
09704: :meth:`poke_restore`
09705: """
09706:
+09707: return address, Memory_Peek(self._, address)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Peek(__pyx_v_self->_, __pyx_v_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_address); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
09708:
+09709: def poke_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_173poke_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_172poke_restore[] = "Memory.poke_restore(self: Memory, address: Address, item: Optional[Value]) -> None\nRestores a `poke()` operation.\n\n Arguments:\n address (int):\n Address of the target item.\n\n item (int or byte):\n Item to restore.\n\n See Also:\n :meth:`poke`\n :meth:`poke_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_173poke_restore = {"poke_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_173poke_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_172poke_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_173poke_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_item = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_item,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("poke_restore", 1, 2, 2, 1); __PYX_ERR(0, 9709, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poke_restore") < 0)) __PYX_ERR(0, 9709, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_item = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("poke_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9709, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.poke_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_172poke_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_item); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_172poke_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.poke_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__210 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_item); if (unlikely(!__pyx_tuple__210)) __PYX_ERR(0, 9709, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__210); __Pyx_GIVEREF(__pyx_tuple__210); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9709, __pyx_L1_error) /* … */ __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_173poke_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_poke_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__211)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_poke_restore, __pyx_t_10) < 0) __PYX_ERR(0, 9709, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__211 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__210, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_poke_restore, 9709, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(0, 9709, __pyx_L1_error)
09710: self: Memory,
+09711: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 9709, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09712: item: Optional[Value],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_item, __pyx_t_10) < 0) __PYX_ERR(0, 9709, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+09713: ) -> None:
if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 9709, __pyx_L1_error)
09714: r"""Restores a `poke()` operation.
09715:
09716: Arguments:
09717: address (int):
09718: Address of the target item.
09719:
09720: item (int or byte):
09721: Item to restore.
09722:
09723: See Also:
09724: :meth:`poke`
09725: :meth:`poke_backup`
09726: """
09727:
+09728: if item is None:
__pyx_t_1 = (__pyx_v_item == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+09729: Memory_PokeNone_(self._, <addr_t>address)
__pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9729, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_PokeNone_(__pyx_v_self->_, ((addr_t)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9729, __pyx_L1_error)
09730: else:
+09731: Memory_Poke_(self._, <addr_t>address, <byte_t>item)
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9731, __pyx_L1_error) __pyx_t_5 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_5 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9731, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_self->_, ((addr_t)__pyx_t_3), ((byte_t)__pyx_t_5)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9731, __pyx_L1_error) } __pyx_L3:;
09732:
+09733: def pop(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_175pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_174pop[] = "Memory.pop(self: Memory, address: Optional[Address] = None, default: Optional[Value] = None) -> Optional[Value]\nTakes a value away.\n\n Arguments:\n address (int):\n Address of the byte to pop.\n If ``None``, the very last byte is popped.\n\n default (int):\n Value to return if `address` is within emptiness.\n\n Return:\n int: Value at `address`; `default` within emptiness.\n\n See Also:\n :meth:`pop_backup`\n :meth:`pop_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C | D]| |[$]| |[x | y]| | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | D]| |[$]| |[x | y]| | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.pop() # -> ord('z') = 122\n 122\n >>> memory.pop(3) # -> ord('C') = 67\n 67\n >>> memory.pop(6, 63) # -> ord('?') = 67\n 63\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_175pop = {"pop", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_175pop, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_174pop}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_175pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_default = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_default,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_174pop(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_default) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__212 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_default); if (unlikely(!__pyx_tuple__212)) __PYX_ERR(0, 9733, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__212); __Pyx_GIVEREF(__pyx_tuple__212); /* … */ __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9733, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9733, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_175pop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_pop, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__213)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9733, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_pop, __pyx_t_6) < 0) __PYX_ERR(0, 9733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pop, 9733, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(0, 9733, __pyx_L1_error)
09734: self: Memory,
+09735: address: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 9733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09736: default: Optional[Value] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pop") < 0)) __PYX_ERR(0, 9733, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_default = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("pop", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9733, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_174pop(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_default); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_default, __pyx_t_13) < 0) __PYX_ERR(0, 9733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09737: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 9733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
09738: r"""Takes a value away.
09739:
09740: Arguments:
09741: address (int):
09742: Address of the byte to pop.
09743: If ``None``, the very last byte is popped.
09744:
09745: default (int):
09746: Value to return if `address` is within emptiness.
09747:
09748: Return:
09749: int: Value at `address`; `default` within emptiness.
09750:
09751: See Also:
09752: :meth:`pop_backup`
09753: :meth:`pop_restore`
09754:
09755: Examples:
09756: >>> from cbytesparse.c import Memory
09757:
09758: +---+---+---+---+---+---+---+---+---+---+---+---+
09759: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
09760: +===+===+===+===+===+===+===+===+===+===+===+===+
09761: | |[A | B | C | D]| |[$]| |[x | y | z]| |
09762: +---+---+---+---+---+---+---+---+---+---+---+---+
09763: | |[A | B | C | D]| |[$]| |[x | y]| | |
09764: +---+---+---+---+---+---+---+---+---+---+---+---+
09765: | |[A | B | D]| |[$]| |[x | y]| | | |
09766: +---+---+---+---+---+---+---+---+---+---+---+---+
09767:
09768: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
09769: >>> memory.pop() # -> ord('z') = 122
09770: 122
09771: >>> memory.pop(3) # -> ord('C') = 67
09772: 67
09773: >>> memory.pop(6, 63) # -> ord('?') = 67
09774: 63
09775: """
09776:
+09777: return Memory_Pop(self._, address, default)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Pop(__pyx_v_self->_, __pyx_v_address, __pyx_v_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
09778:
+09779: def pop_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_177pop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_176pop_backup[] = "Memory.pop_backup(self: Memory, address: Optional[Address] = None) -> Tuple[Address, Optional[Value]]\nBackups a `pop()` operation.\n\n Arguments:\n address (int):\n Address of the byte to pop.\n If ``None``, the very last byte is popped.\n\n Returns:\n (int, int): `address`, item at `address` (``None`` if empty).\n\n See Also:\n :meth:`pop`\n :meth:`pop_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_177pop_backup = {"pop_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_177pop_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_176pop_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_177pop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,0}; PyObject* values[1] = {0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_176pop_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop_backup", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.Memory.pop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__214 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__214)) __PYX_ERR(0, 9779, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__214); __Pyx_GIVEREF(__pyx_tuple__214); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9779, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_177pop_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_pop_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_pop_backup, __pyx_t_7) < 0) __PYX_ERR(0, 9779, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pop_backup, 9779, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(0, 9779, __pyx_L1_error)
09780: self: Memory,
+09781: address: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pop_backup") < 0)) __PYX_ERR(0, 9779, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("pop_backup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9779, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.pop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_176pop_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_13) < 0) __PYX_ERR(0, 9779, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09782: ) -> Tuple[Address, Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_7); __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 9779, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
09783: r"""Backups a `pop()` operation.
09784:
09785: Arguments:
09786: address (int):
09787: Address of the byte to pop.
09788: If ``None``, the very last byte is popped.
09789:
09790: Returns:
09791: (int, int): `address`, item at `address` (``None`` if empty).
09792:
09793: See Also:
09794: :meth:`pop`
09795: :meth:`pop_restore`
09796: """
09797:
+09798: if address is None:
__pyx_t_1 = (__pyx_v_address == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+09799: address = self.endex - 1
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_4); __pyx_t_4 = 0;
+09800: return address, Memory_Peek(self._, address)
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Peek(__pyx_v_self->_, __pyx_v_address); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_address); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
09801:
+09802: def pop_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_179pop_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_178pop_restore[] = "Memory.pop_restore(self: Memory, address: Address, item: Optional[Value]) -> None\nRestores a `pop()` operation.\n\n Arguments:\n address (int):\n Address of the target item.\n\n item (int or byte):\n Item to restore, ``None`` if empty.\n\n See Also:\n :meth:`pop`\n :meth:`pop_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_179pop_restore = {"pop_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_179pop_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_178pop_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_179pop_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_item = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_item,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("pop_restore", 1, 2, 2, 1); __PYX_ERR(0, 9802, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pop_restore") < 0)) __PYX_ERR(0, 9802, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_item = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("pop_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9802, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.pop_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_178pop_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_item); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_178pop_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_item) { byte_t __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.pop_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__216 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_item, __pyx_n_s_value); if (unlikely(!__pyx_tuple__216)) __PYX_ERR(0, 9802, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__216); __Pyx_GIVEREF(__pyx_tuple__216); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9802, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_179pop_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_pop_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__217)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_pop_restore, __pyx_t_13) < 0) __PYX_ERR(0, 9802, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pop_restore, 9802, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(0, 9802, __pyx_L1_error)
09803: self: Memory,
+09804: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 9802, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09805: item: Optional[Value],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_item, __pyx_t_13) < 0) __PYX_ERR(0, 9802, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09806: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 9802, __pyx_L1_error)
09807: r"""Restores a `pop()` operation.
09808:
09809: Arguments:
09810: address (int):
09811: Address of the target item.
09812:
09813: item (int or byte):
09814: Item to restore, ``None`` if empty.
09815:
09816: See Also:
09817: :meth:`pop`
09818: :meth:`pop_backup`
09819: """
09820: cdef:
09821: byte_t value
09822:
+09823: if item is None:
__pyx_t_1 = (__pyx_v_item == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+09824: Memory_Reserve_(self._, <addr_t>address, 1)
__pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9824, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Reserve_(__pyx_v_self->_, ((addr_t)__pyx_t_3), 1); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9824, __pyx_L1_error)
09825: else:
+09826: value = <byte_t>item
/*else*/ { __pyx_t_5 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_5 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9826, __pyx_L1_error) __pyx_v_value = ((byte_t)__pyx_t_5);
+09827: Memory_InsertRaw_(self._, address, 1, &value)
__pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9827, __pyx_L1_error) __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_InsertRaw_(__pyx_v_self->_, __pyx_t_3, 1, (&__pyx_v_value)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9827, __pyx_L1_error) } __pyx_L3:;
09828:
+09829: def popitem(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_181popitem(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_180popitem[] = "Memory.popitem(self: Memory) -> Tuple[Address, Value]\nPops the last item.\n\n Return:\n (int, int): Address and value of the last item.\n\n See Also:\n :meth:`popitem_backup`\n :meth:`popitem_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A]| | | | | | | |[y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'A'], [9, b'yz']])\n >>> memory.popitem() # -> ord('z') = 122\n (10, 122)\n >>> memory.popitem() # -> ord('y') = 121\n (9, 121)\n >>> memory.popitem() # -> ord('A') = 65\n (1, 65)\n >>> memory.popitem()\n Traceback (most recent call last):\n ...\n KeyError: empty\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_181popitem = {"popitem", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_181popitem, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_180popitem}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_181popitem(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("popitem (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_180popitem(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_180popitem(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { addr_t __pyx_v_address; int __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("popitem", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.Memory.popitem", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__218 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_value); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(0, 9829, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__218); __Pyx_GIVEREF(__pyx_tuple__218); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9829, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_181popitem, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_popitem, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_popitem, __pyx_t_6) < 0) __PYX_ERR(0, 9829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_popitem, 9829, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(0, 9829, __pyx_L1_error)
09830: self: Memory,
+09831: ) -> Tuple[Address, Value]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); __pyx_t_12 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 9829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
09832: r"""Pops the last item.
09833:
09834: Return:
09835: (int, int): Address and value of the last item.
09836:
09837: See Also:
09838: :meth:`popitem_backup`
09839: :meth:`popitem_restore`
09840:
09841: Examples:
09842: >>> from cbytesparse.c import Memory
09843:
09844: +---+---+---+---+---+---+---+---+---+---+---+---+
09845: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
09846: +===+===+===+===+===+===+===+===+===+===+===+===+
09847: | |[A]| | | | | | | |[y | z]| |
09848: +---+---+---+---+---+---+---+---+---+---+---+---+
09849:
09850: >>> memory = Memory.from_blocks([[1, b'A'], [9, b'yz']])
09851: >>> memory.popitem() # -> ord('z') = 122
09852: (10, 122)
09853: >>> memory.popitem() # -> ord('y') = 121
09854: (9, 121)
09855: >>> memory.popitem() # -> ord('A') = 65
09856: (1, 65)
09857: >>> memory.popitem()
09858: Traceback (most recent call last):
09859: ...
09860: KeyError: empty
09861: """
09862: cdef:
09863: addr_t address
09864: int value
09865:
+09866: address, value = Memory_PopItem(self._)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_PopItem(__pyx_v_self->_); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 9866, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1.f0;
__pyx_t_3 = __pyx_t_1.f1;
__pyx_v_address = __pyx_t_2;
__pyx_v_value = __pyx_t_3;
+09867: return address, value
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_address); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
09868:
+09869: def popitem_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_183popitem_backup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_182popitem_backup[] = "Memory.popitem_backup(self: Memory) -> Tuple[Address, Value]\nBackups a `popitem()` operation.\n\n Returns:\n (int, int): Address and value of the last item.\n\n See Also:\n :meth:`popitem`\n :meth:`popitem_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_183popitem_backup = {"popitem_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_183popitem_backup, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_182popitem_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_183popitem_backup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("popitem_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_182popitem_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_182popitem_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { Memory_ const *__pyx_v_memory; Rack_ const *__pyx_v_blocks; Block_ const *__pyx_v_block; size_t __pyx_v_offset; byte_t __pyx_v_backup; addr_t __pyx_v_address; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("popitem_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.Memory.popitem_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__220 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_memory, __pyx_n_s_blocks, __pyx_n_s_block, __pyx_n_s_offset, __pyx_n_s_backup, __pyx_n_s_address); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(0, 9869, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__220); __Pyx_GIVEREF(__pyx_tuple__220); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9869, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_183popitem_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_popitem_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_popitem_backup, __pyx_t_7) < 0) __PYX_ERR(0, 9869, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__220, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_popitem_backup, 9869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(0, 9869, __pyx_L1_error)
09870: self: Memory,
+09871: ) -> Tuple[Address, Value]:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_7); __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 9869, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
09872: r"""Backups a `popitem()` operation.
09873:
09874: Returns:
09875: (int, int): Address and value of the last item.
09876:
09877: See Also:
09878: :meth:`popitem`
09879: :meth:`popitem_restore`
09880: """
09881: cdef:
+09882: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+09883: const Rack_* blocks = memory.blocks
__pyx_t_2 = __pyx_v_memory->blocks; __pyx_v_blocks = __pyx_t_2;
09884: const Block_* block
09885: size_t offset
09886: byte_t backup
09887:
+09888: if Rack_Bool(blocks):
__pyx_t_3 = (__pyx_f_11cbytesparse_1c_Rack_Bool(__pyx_v_blocks) != 0); if (likely(__pyx_t_3)) { /* … */ }
+09889: block = Rack_Last_(blocks)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Last_(__pyx_v_blocks);
+09890: offset = Block_Length(block)
__pyx_v_offset = __pyx_f_11cbytesparse_1c_Block_Length(__pyx_v_block);
+09891: if offset:
__pyx_t_3 = (__pyx_v_offset != 0); if (likely(__pyx_t_3)) { /* … */ }
+09892: offset -= 1
__pyx_v_offset = (__pyx_v_offset - 1);
+09893: address = Block_Start(block) + offset
__pyx_v_address = (__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block) + __pyx_v_offset);
+09894: backup = Block_Get__(block, offset)
__pyx_v_backup = __pyx_f_11cbytesparse_1c_Block_Get__(__pyx_v_block, __pyx_v_offset);
+09895: return address, backup
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_address); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_byte_t(__pyx_v_backup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
09896: else:
+09897: raise RuntimeError('empty block')
/*else*/ { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 9897, __pyx_L1_error) }
09898: else:
+09899: raise KeyError('empty')
/*else*/ { __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 9899, __pyx_L1_error) }
09900:
+09901: def popitem_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_185popitem_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_184popitem_restore[] = "Memory.popitem_restore(self: Memory, address: Address, item: Value) -> None\nRestores a `popitem()` operation.\n\n Arguments:\n address (int):\n Address of the target item.\n\n item (int):\n Item to restore.\n\n See Also:\n :meth:`popitem`\n :meth:`popitem_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_185popitem_restore = {"popitem_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_185popitem_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_184popitem_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_185popitem_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_item = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("popitem_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_item,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("popitem_restore", 1, 2, 2, 1); __PYX_ERR(0, 9901, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "popitem_restore") < 0)) __PYX_ERR(0, 9901, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_item = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("popitem_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9901, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.popitem_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_184popitem_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_item); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_184popitem_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_item) { addr_t __pyx_v_address_; byte_t __pyx_v_item_; Memory_ *__pyx_v_memory; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("popitem_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.popitem_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__222 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_item, __pyx_n_s_address_2, __pyx_n_s_item_2, __pyx_n_s_memory); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(0, 9901, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__222); __Pyx_GIVEREF(__pyx_tuple__222); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9901, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_185popitem_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_popitem_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_popitem_restore, __pyx_t_6) < 0) __PYX_ERR(0, 9901, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__222, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_popitem_restore, 9901, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(0, 9901, __pyx_L1_error)
09902: self: Memory,
+09903: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 9901, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09904: item: Value,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9904, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 9901, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09905: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 9901, __pyx_L1_error)
09906: r"""Restores a `popitem()` operation.
09907:
09908: Arguments:
09909: address (int):
09910: Address of the target item.
09911:
09912: item (int):
09913: Item to restore.
09914:
09915: See Also:
09916: :meth:`popitem`
09917: :meth:`popitem_backup`
09918: """
09919: cdef:
+09920: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9920, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
+09921: byte_t item_ = <byte_t>item
__pyx_t_2 = __Pyx_PyInt_As_byte_t(__pyx_v_item); if (unlikely((__pyx_t_2 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9921, __pyx_L1_error) __pyx_v_item_ = ((byte_t)__pyx_t_2);
+09922: Memory_* memory = self._
__pyx_t_3 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_3;
09923:
+09924: if address_ == Memory_ContentEndex(memory):
__pyx_t_4 = ((__pyx_v_address_ == __pyx_f_11cbytesparse_1c_Memory_ContentEndex(__pyx_v_memory)) != 0); if (__pyx_t_4) { /* … */ goto __pyx_L3; }
+09925: Memory_Append_(memory, item_)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Append_(__pyx_v_memory, __pyx_v_item_); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9925, __pyx_L1_error)
09926: else:
+09927: Memory_InsertRaw_(memory, address_, 1, &item_)
/*else*/ {
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_InsertRaw_(__pyx_v_memory, __pyx_v_address_, 1, (&__pyx_v_item_)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9927, __pyx_L1_error)
}
__pyx_L3:;
09928:
+09929: def remove(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_187remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_186remove[] = "Memory.remove(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> None\nRemoves an item.\n\n Searches and deletes the first occurrence of an item.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Raises:\n :obj:`ValueError`: Item not found.\n\n See Also:\n :meth:`remove_backup`\n :meth:`remove_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | D]| |[$]| |[x | y | z]| | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[A | D]| | |[x | y | z]| | | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.remove(b'BC')\n >>> memory.to_blocks()\n [[1, b'AD'], [4, b'$'], [6, b'xyz']]\n >>> memory.remove(ord('$'))\n >>> memory.to_blocks()\n [[1, b'AD'], [5, b'xyz']]\n >>> memory.remove(b'?')\n Traceback (most recent call last):\n ...\n ValueError: subsection not found\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_187remove = {"remove", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_187remove, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_186remove}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_187remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_186remove(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { Memory_ *__pyx_v_memory; size_t __pyx_v_size; addr_t __pyx_v_address; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__224 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_memory, __pyx_n_s_size, __pyx_n_s_address); if (unlikely(!__pyx_tuple__224)) __PYX_ERR(0, 9929, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__224); __Pyx_GIVEREF(__pyx_tuple__224); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9929, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_187remove, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_remove, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_remove, __pyx_t_13) < 0) __PYX_ERR(0, 9929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_remove, 9929, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(0, 9929, __pyx_L1_error)
09930: self: Memory,
+09931: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_13); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_item, __pyx_t_13) < 0) __PYX_ERR(0, 9929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09932: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 9929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09933: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "remove") < 0)) __PYX_ERR(0, 9929, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("remove", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9929, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_186remove(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_13) < 0) __PYX_ERR(0, 9929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+09934: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 9929, __pyx_L1_error)
09935: r"""Removes an item.
09936:
09937: Searches and deletes the first occurrence of an item.
09938:
09939: Arguments:
09940: item (items):
09941: Value to find. Can be either some byte string or an integer.
09942:
09943: start (int):
09944: Inclusive start of the searched range.
09945: If ``None``, :attr:`start` is considered.
09946:
09947: endex (int):
09948: Exclusive end of the searched range.
09949: If ``None``, :attr:`endex` is considered.
09950:
09951: Raises:
09952: :obj:`ValueError`: Item not found.
09953:
09954: See Also:
09955: :meth:`remove_backup`
09956: :meth:`remove_restore`
09957:
09958: Examples:
09959: >>> from cbytesparse.c import Memory
09960:
09961: +---+---+---+---+---+---+---+---+---+---+---+---+
09962: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
09963: +===+===+===+===+===+===+===+===+===+===+===+===+
09964: | |[A | B | C | D]| |[$]| |[x | y | z]| |
09965: +---+---+---+---+---+---+---+---+---+---+---+---+
09966: | |[A | D]| |[$]| |[x | y | z]| | | |
09967: +---+---+---+---+---+---+---+---+---+---+---+---+
09968: | |[A | D]| | |[x | y | z]| | | | |
09969: +---+---+---+---+---+---+---+---+---+---+---+---+
09970:
09971: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
09972: >>> memory.remove(b'BC')
09973: >>> memory.to_blocks()
09974: [[1, b'AD'], [4, b'$'], [6, b'xyz']]
09975: >>> memory.remove(ord('$'))
09976: >>> memory.to_blocks()
09977: [[1, b'AD'], [5, b'xyz']]
09978: >>> memory.remove(b'?')
09979: Traceback (most recent call last):
09980: ...
09981: ValueError: subsection not found
09982: """
09983: cdef:
+09984: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+09985: size_t size = 1 if isinstance(item, int) else <size_t>len(item)
__pyx_t_3 = PyInt_Check(__pyx_v_item); if ((__pyx_t_3 != 0)) { __pyx_t_2 = 1; } else { __pyx_t_4 = PyObject_Length(__pyx_v_item); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9985, __pyx_L1_error) __pyx_t_2 = ((size_t)__pyx_t_4); } __pyx_v_size = __pyx_t_2;
+09986: addr_t address = <addr_t>Memory_Index(memory, item, start, endex)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Index(__pyx_v_memory, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_5); if (unlikely((__pyx_t_6 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9986, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_address = ((addr_t)__pyx_t_6);
09987:
+09988: CheckAddAddrU(address, size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address, __pyx_v_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9988, __pyx_L1_error)
+09989: Memory_Erase__(memory, address, address + size, True) # delete
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Erase__(__pyx_v_memory, __pyx_v_address, (__pyx_v_address + __pyx_v_size), 1); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 9989, __pyx_L1_error)
09990:
+09991: def remove_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_189remove_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_188remove_backup[] = "Memory.remove_backup(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory\nBackups a `remove()` operation.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n :obj:`Memory`: Backup memory region.\n\n See Also:\n :meth:`remove`\n :meth:`remove_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_189remove_backup = {"remove_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_189remove_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_188remove_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_189remove_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_188remove_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { Memory_ *__pyx_v_memory; size_t __pyx_v_size; addr_t __pyx_v_address; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.remove_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__226 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_memory, __pyx_n_s_size, __pyx_n_s_address); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__226); __Pyx_GIVEREF(__pyx_tuple__226); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 9991, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_189remove_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_remove_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__227)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_remove_backup, __pyx_t_7) < 0) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__226, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_remove_backup, 9991, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(0, 9991, __pyx_L1_error)
09992: self: Memory,
+09993: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_7); __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09994: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+09995: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "remove_backup") < 0)) __PYX_ERR(0, 9991, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("remove_backup", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9991, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.remove_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_188remove_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 9995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+09996: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 9991, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
09997: r"""Backups a `remove()` operation.
09998:
09999: Arguments:
10000: item (items):
10001: Value to find. Can be either some byte string or an integer.
10002:
10003: start (int):
10004: Inclusive start of the searched range.
10005: If ``None``, :attr:`start` is considered.
10006:
10007: endex (int):
10008: Exclusive end of the searched range.
10009: If ``None``, :attr:`endex` is considered.
10010:
10011: Returns:
10012: :obj:`Memory`: Backup memory region.
10013:
10014: See Also:
10015: :meth:`remove`
10016: :meth:`remove_restore`
10017: """
10018: cdef:
+10019: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+10020: size_t size = 1 if isinstance(item, int) else <size_t>len(item)
__pyx_t_3 = PyInt_Check(__pyx_v_item); if ((__pyx_t_3 != 0)) { __pyx_t_2 = 1; } else { __pyx_t_4 = PyObject_Length(__pyx_v_item); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10020, __pyx_L1_error) __pyx_t_2 = ((size_t)__pyx_t_4); } __pyx_v_size = __pyx_t_2;
+10021: addr_t address = <addr_t>Memory_Index(memory, item, start, endex)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Index(__pyx_v_memory, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_5); if (unlikely((__pyx_t_6 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10021, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_address = ((addr_t)__pyx_t_6);
10022:
+10023: CheckAddAddrU(address, size)
__pyx_t_7 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address, __pyx_v_size); if (unlikely(__pyx_t_7 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10023, __pyx_L1_error)
+10024: memory = Memory_Extract__(memory, address, address + size, 0, NULL, 1, True)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Extract__(__pyx_v_memory, __pyx_v_address, (__pyx_v_address + __pyx_v_size), 0, NULL, 1, 1); if (unlikely(__pyx_t_1 == ((Memory_ *)NULL))) __PYX_ERR(0, 10024, __pyx_L1_error)
__pyx_v_memory = __pyx_t_1;
+10025: return Memory_AsObject(memory)
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_AsObject(__pyx_v_memory)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
10026:
+10027: def remove_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_191remove_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_190remove_restore[] = "Memory.remove_restore(self: Memory, backup: ImmutableMemory) -> None\nRestores a `remove()` operation.\n\n Arguments:\n backup (:obj:`Memory`):\n Backup memory region.\n\n See Also:\n :meth:`remove`\n :meth:`remove_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_191remove_restore = {"remove_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_191remove_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_190remove_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_191remove_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backup) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_190remove_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_backup)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_190remove_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_backup) { Memory_ *__pyx_v_memory; Memory_ const *__pyx_v_backup_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.Memory.remove_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__228 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_backup, __pyx_n_s_memory, __pyx_n_s_backup_2); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(0, 10027, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__228); __Pyx_GIVEREF(__pyx_tuple__228); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10027, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10027, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_191remove_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_remove_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10027, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_remove_restore, __pyx_t_13) < 0) __PYX_ERR(0, 10027, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_remove_restore, 10027, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(0, 10027, __pyx_L1_error)
10028: self: Memory,
+10029: backup: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_backup, __pyx_t_13) < 0) __PYX_ERR(0, 10027, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10030: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10027, __pyx_L1_error)
10031: r"""Restores a `remove()` operation.
10032:
10033: Arguments:
10034: backup (:obj:`Memory`):
10035: Backup memory region.
10036:
10037: See Also:
10038: :meth:`remove`
10039: :meth:`remove_backup`
10040: """
10041: cdef:
+10042: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
10043: const Memory_* backup_
10044:
+10045: if isinstance(backup, Memory):
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_backup, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+10046: backup_ = (<Memory>backup)._
__pyx_t_1 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_backup)->_; __pyx_v_backup_ = __pyx_t_1;
+10047: Memory_Reserve_(memory, Memory_Start(backup_), Memory_Length(backup_))
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Reserve_(__pyx_v_memory, __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_backup_), __pyx_f_11cbytesparse_1c_Memory_Length(__pyx_v_backup_)); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10047, __pyx_L1_error)
+10048: Memory_WriteSame_(memory, 0, backup_, True)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_memory, 0, __pyx_v_backup_, 1); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10048, __pyx_L1_error)
10049: else:
+10050: Memory_Reserve(memory, backup.start, len(backup))
/*else*/ { __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_backup, __pyx_n_s_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_Length(__pyx_v_backup); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10050, __pyx_L1_error) __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Reserve(__pyx_v_memory, __pyx_t_5, __pyx_t_7); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10050, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10051: Memory_Write(memory, 0, backup, True)
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_4 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10051, __pyx_L1_error)
}
__pyx_L3:;
10052:
+10053: def reserve(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_193reserve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_192reserve[] = "Memory.reserve(self: Memory, address: Address, size: Address) -> None\nInserts emptiness.\n\n Reserves emptiness at the provided address.\n\n Arguments:\n address (int):\n Start address of the emptiness to insert.\n\n size (int):\n Size of the emptiness to insert.\n\n See Also:\n :meth:`reserve_backup`\n :meth:`reserve_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| |[x | y | z]| | | |\n +---+---+---+---+---+---+---+---+---+---+---+\n | |[A]| | | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[3, b'ABC'], [7, b'xyz']])\n >>> memory.reserve(4, 2)\n >>> memory.to_blocks()\n [[3, b'A'], [6, b'BC'], [9, b'xyz']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|\n +===+===+===+===+===+===+===+===+===+===+===+\n | | | |[A | B | C]| |[x | y | z]|)))|\n +---+---+---+---+---+---+---+---+---+---+---+\n | | | | | | | | |[A | B]|)))|\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']], endex=12)\n >>> memory.reserve(5, 5)\n >>> memory.to_blocks()\n [[10, b'AB']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_193reserve = {"reserve", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_193reserve, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_192reserve}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_193reserve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("reserve", 1, 2, 2, 1); __PYX_ERR(0, 10053, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reserve") < 0)) __PYX_ERR(0, 10053, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("reserve", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10053, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_192reserve(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_192reserve(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_size) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__230 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_size); if (unlikely(!__pyx_tuple__230)) __PYX_ERR(0, 10053, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__230); __Pyx_GIVEREF(__pyx_tuple__230); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10053, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_193reserve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_reserve, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_reserve, __pyx_t_7) < 0) __PYX_ERR(0, 10053, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_reserve, 10053, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(0, 10053, __pyx_L1_error)
10054: self: Memory,
+10055: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10055, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 10053, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10056: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_size, __pyx_t_7) < 0) __PYX_ERR(0, 10053, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10057: ) -> None:
if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10053, __pyx_L1_error)
10058: r"""Inserts emptiness.
10059:
10060: Reserves emptiness at the provided address.
10061:
10062: Arguments:
10063: address (int):
10064: Start address of the emptiness to insert.
10065:
10066: size (int):
10067: Size of the emptiness to insert.
10068:
10069: See Also:
10070: :meth:`reserve_backup`
10071: :meth:`reserve_restore`
10072:
10073: Examples:
10074: >>> from cbytesparse.c import Memory
10075:
10076: +---+---+---+---+---+---+---+---+---+---+---+
10077: | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|
10078: +===+===+===+===+===+===+===+===+===+===+===+
10079: | |[A | B | C]| |[x | y | z]| | | |
10080: +---+---+---+---+---+---+---+---+---+---+---+
10081: | |[A]| | | B | C]| |[x | y | z]| |
10082: +---+---+---+---+---+---+---+---+---+---+---+
10083:
10084: >>> memory = Memory.from_blocks([[3, b'ABC'], [7, b'xyz']])
10085: >>> memory.reserve(4, 2)
10086: >>> memory.to_blocks()
10087: [[3, b'A'], [6, b'BC'], [9, b'xyz']]
10088:
10089: ~~~
10090:
10091: +---+---+---+---+---+---+---+---+---+---+---+
10092: | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|
10093: +===+===+===+===+===+===+===+===+===+===+===+
10094: | | | |[A | B | C]| |[x | y | z]|)))|
10095: +---+---+---+---+---+---+---+---+---+---+---+
10096: | | | | | | | | |[A | B]|)))|
10097: +---+---+---+---+---+---+---+---+---+---+---+
10098:
10099: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']], endex=12)
10100: >>> memory.reserve(5, 5)
10101: >>> memory.to_blocks()
10102: [[10, b'AB']]
10103: """
10104:
+10105: Memory_Reserve(self._, address, size)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Reserve(__pyx_v_self->_, __pyx_v_address, __pyx_v_size); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10105, __pyx_L1_error)
10106:
+10107: def reserve_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_195reserve_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_194reserve_backup[] = "Memory.reserve_backup(self: Memory, address: Address, size: Address) -> Tuple[Address, ImmutableMemory]\nBackups a `reserve()` operation.\n\n Arguments:\n address (int):\n Start address of the emptiness to insert.\n\n size (int):\n Size of the emptiness to insert.\n\n Returns:\n (int, :obj:`ImmutableMemory`): Reservation address, backup memory region.\n\n See Also:\n :meth:`reserve`\n :meth:`reserve_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_195reserve_backup = {"reserve_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_195reserve_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_194reserve_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_195reserve_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("reserve_backup", 1, 2, 2, 1); __PYX_ERR(0, 10107, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reserve_backup") < 0)) __PYX_ERR(0, 10107, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("reserve_backup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10107, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.reserve_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_194reserve_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_194reserve_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_size) { PyObject *__pyx_v_backup = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.reserve_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_backup); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__232 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_size, __pyx_n_s_backup); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(0, 10107, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__232); __Pyx_GIVEREF(__pyx_tuple__232); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10107, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_195reserve_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_reserve_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_reserve_backup, __pyx_t_6) < 0) __PYX_ERR(0, 10107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_reserve_backup, 10107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(0, 10107, __pyx_L1_error)
10108: self: Memory,
+10109: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_13) < 0) __PYX_ERR(0, 10107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10110: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_size, __pyx_t_13) < 0) __PYX_ERR(0, 10107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10111: ) -> Tuple[Address, ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); __pyx_t_12 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 10107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10112: r"""Backups a `reserve()` operation.
10113:
10114: Arguments:
10115: address (int):
10116: Start address of the emptiness to insert.
10117:
10118: size (int):
10119: Size of the emptiness to insert.
10120:
10121: Returns:
10122: (int, :obj:`ImmutableMemory`): Reservation address, backup memory region.
10123:
10124: See Also:
10125: :meth:`reserve`
10126: :meth:`reserve_restore`
10127: """
10128:
+10129: backup = self._pretrim_endex_backup(address, size)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pretrim_endex_backup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_size}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10129, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_size}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10129, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_address); __Pyx_INCREF(__pyx_v_size); __Pyx_GIVEREF(__pyx_v_size); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_size); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_backup = __pyx_t_1; __pyx_t_1 = 0;
+10130: return address, backup
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10130, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_address); __Pyx_INCREF(__pyx_v_backup); __Pyx_GIVEREF(__pyx_v_backup); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_backup); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10131:
+10132: def reserve_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_197reserve_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_196reserve_restore[] = "Memory.reserve_restore(self: Memory, address: Address, backup: ImmutableMemory) -> None\nRestores a `reserve()` operation.\n\n Arguments:\n address (int):\n Address of the reservation point.\n\n backup (:obj:`ImmutableMemory`):\n Backup memory region to restore.\n\n See Also:\n :meth:`reserve`\n :meth:`reserve_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_197reserve_restore = {"reserve_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_197reserve_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_196reserve_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_197reserve_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_backup = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_backup,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_backup)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("reserve_restore", 1, 2, 2, 1); __PYX_ERR(0, 10132, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reserve_restore") < 0)) __PYX_ERR(0, 10132, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_backup = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("reserve_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10132, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.reserve_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_196reserve_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_backup); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_196reserve_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_backup) { addr_t __pyx_v_address_; addr_t __pyx_v_size; Memory_ *__pyx_v_memory; Memory_ const *__pyx_v_backup_; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.reserve_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__234 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_backup, __pyx_n_s_address_2, __pyx_n_s_size, __pyx_n_s_memory, __pyx_n_s_backup_2); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(0, 10132, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__234); __Pyx_GIVEREF(__pyx_tuple__234); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10132, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_197reserve_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_reserve_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_reserve_restore, __pyx_t_7) < 0) __PYX_ERR(0, 10132, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_reserve_restore, 10132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(0, 10132, __pyx_L1_error)
10133: self: Memory,
+10134: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 10132, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10135: backup: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_backup, __pyx_t_7) < 0) __PYX_ERR(0, 10132, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10136: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10132, __pyx_L1_error)
10137: r"""Restores a `reserve()` operation.
10138:
10139: Arguments:
10140: address (int):
10141: Address of the reservation point.
10142:
10143: backup (:obj:`ImmutableMemory`):
10144: Backup memory region to restore.
10145:
10146: See Also:
10147: :meth:`reserve`
10148: :meth:`reserve_backup`
10149: """
10150: cdef:
+10151: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10151, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
10152: addr_t size
+10153: Memory_* memory = self._
__pyx_t_2 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_2;
10154: const Memory_* backup_
10155:
+10156: if isinstance(backup, Memory):
__pyx_t_3 = __Pyx_TypeCheck(__pyx_v_backup, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_4 = (__pyx_t_3 != 0);
if (__pyx_t_4) {
/* … */
goto __pyx_L3;
}
+10157: backup_ = (<Memory>backup)._
__pyx_t_2 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_backup)->_; __pyx_v_backup_ = __pyx_t_2;
+10158: size = Memory_Length(backup_)
__pyx_v_size = __pyx_f_11cbytesparse_1c_Memory_Length(__pyx_v_backup_);
+10159: CheckAddAddrU(address_, size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address_, __pyx_v_size); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10159, __pyx_L1_error)
+10160: Memory_Delete_(memory, address_, address_ + size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Delete_(__pyx_v_memory, __pyx_v_address_, (__pyx_v_address_ + __pyx_v_size)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10160, __pyx_L1_error)
+10161: Memory_WriteSame_(memory, 0, backup_, True)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_WriteSame_(__pyx_v_memory, 0, __pyx_v_backup_, 1); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10161, __pyx_L1_error)
10162: else:
+10163: size = <addr_t>len(backup)
/*else*/ { __pyx_t_6 = PyObject_Length(__pyx_v_backup); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10163, __pyx_L1_error) __pyx_v_size = ((addr_t)__pyx_t_6);
+10164: CheckAddAddrU(address_, size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_address_, __pyx_v_size); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10164, __pyx_L1_error)
+10165: Memory_Delete_(memory, address_, address_ + size)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Delete_(__pyx_v_memory, __pyx_v_address_, (__pyx_v_address_ + __pyx_v_size)); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10165, __pyx_L1_error)
+10166: Memory_Write(memory, 0, backup, True)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10166, __pyx_L1_error)
}
__pyx_L3:;
10167:
+10168: def reverse(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_199reverse(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_198reverse[] = "Memory.reverse(self: Memory) -> None\nReverses the memory in-place.\n\n Data is reversed within the memory :attr:`span`.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[z | y | x]| |[$]| |[D | C | B | A]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.reverse()\n >>> memory.to_blocks()\n [[1, b'zyx'], [5, b'$'], [7, b'DCBA']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | | |[[[| |[A | B | C]| | | |)))| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | | |[[[| | |[C | B | A]| | |)))| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_bytes(b'ABCD', 3, start=2, endex=10)\n >>> memory.reverse()\n >>> memory.to_blocks()\n [[5, b'CBA']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_199reverse = {"reverse", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_199reverse, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_198reverse}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_199reverse(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reverse (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_198reverse(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_198reverse(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reverse", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__236 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(0, 10168, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__236); __Pyx_GIVEREF(__pyx_tuple__236); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10168, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_199reverse, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_reverse, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_reverse, __pyx_t_6) < 0) __PYX_ERR(0, 10168, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__237 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_reverse, 10168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(0, 10168, __pyx_L1_error)
10169: self: Memory,
+10170: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10168, __pyx_L1_error)
10171: r"""Reverses the memory in-place.
10172:
10173: Data is reversed within the memory :attr:`span`.
10174:
10175: Examples:
10176: >>> from cbytesparse.c import Memory
10177:
10178: +---+---+---+---+---+---+---+---+---+---+---+---+
10179: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
10180: +===+===+===+===+===+===+===+===+===+===+===+===+
10181: | |[A | B | C | D]| |[$]| |[x | y | z]| |
10182: +---+---+---+---+---+---+---+---+---+---+---+---+
10183: | |[z | y | x]| |[$]| |[D | C | B | A]| |
10184: +---+---+---+---+---+---+---+---+---+---+---+---+
10185:
10186: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
10187: >>> memory.reverse()
10188: >>> memory.to_blocks()
10189: [[1, b'zyx'], [5, b'$'], [7, b'DCBA']]
10190:
10191: ~~~
10192:
10193: +---+---+---+---+---+---+---+---+---+---+---+---+
10194: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
10195: +===+===+===+===+===+===+===+===+===+===+===+===+
10196: | | |[[[| |[A | B | C]| | | |)))| |
10197: +---+---+---+---+---+---+---+---+---+---+---+---+
10198: | | |[[[| | |[C | B | A]| | |)))| |
10199: +---+---+---+---+---+---+---+---+---+---+---+---+
10200:
10201: >>> memory = Memory.from_bytes(b'ABCD', 3, start=2, endex=10)
10202: >>> memory.reverse()
10203: >>> memory.to_blocks()
10204: [[5, b'CBA']]
10205: """
10206:
+10207: Memory_Reverse(self._)
__pyx_f_11cbytesparse_1c_Memory_Reverse(__pyx_v_self->_);
10208:
+10209: def rfind(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_201rfind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_200rfind[] = "Memory.rfind(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address\nIndex of an item, reversed search.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n int: The index of the last item equal to `value`, or -1.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_201rfind = {"rfind", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_201rfind, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_200rfind}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_201rfind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rfind (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_200rfind(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rfind", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.rfind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__238 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__238); __Pyx_GIVEREF(__pyx_tuple__238); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10209, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_201rfind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_rfind, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_rfind, __pyx_t_13) < 0) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__238, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rfind, 10209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(0, 10209, __pyx_L1_error)
10210: self: Memory,
+10211: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13); __pyx_t_2 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_item, __pyx_t_13) < 0) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10212: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10213: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rfind") < 0)) __PYX_ERR(0, 10209, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rfind", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10209, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.rfind", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_200rfind(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_13) < 0) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10214: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_13) < 0) __PYX_ERR(0, 10209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
10215: r"""Index of an item, reversed search.
10216:
10217: Arguments:
10218: item (items):
10219: Value to find. Can be either some byte string or an integer.
10220:
10221: start (int):
10222: Inclusive start of the searched range.
10223: If ``None``, :attr:`start` is considered.
10224:
10225: endex (int):
10226: Exclusive end of the searched range.
10227: If ``None``, :attr:`endex` is considered.
10228:
10229: Returns:
10230: int: The index of the last item equal to `value`, or -1.
10231: """
10232:
+10233: return Memory_RevFind(self._, item, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_RevFind(__pyx_v_self->_, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10234:
+10235: def rindex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_203rindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_202rindex[] = "Memory.rindex(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address\nIndex of an item, reversed search.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n int: The index of the last item equal to `value`.\n\n Raises:\n :obj:`ValueError`: Item not found.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_203rindex = {"rindex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_203rindex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_202rindex}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_203rindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rindex (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_202rindex(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rindex", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.rindex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__240 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__240)) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__240); __Pyx_GIVEREF(__pyx_tuple__240); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10235, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_203rindex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_rindex, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__241)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_rindex, __pyx_t_7) < 0) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__240, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rindex, 10235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(0, 10235, __pyx_L1_error)
10236: self: Memory,
+10237: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_7); __pyx_t_12 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10238: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+10239: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rindex") < 0)) __PYX_ERR(0, 10235, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rindex", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10235, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.rindex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_202rindex(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10240: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 10235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10241: r"""Index of an item, reversed search.
10242:
10243: Arguments:
10244: item (items):
10245: Value to find. Can be either some byte string or an integer.
10246:
10247: start (int):
10248: Inclusive start of the searched range.
10249: If ``None``, :attr:`start` is considered.
10250:
10251: endex (int):
10252: Exclusive end of the searched range.
10253: If ``None``, :attr:`endex` is considered.
10254:
10255: Returns:
10256: int: The index of the last item equal to `value`.
10257:
10258: Raises:
10259: :obj:`ValueError`: Item not found.
10260: """
10261:
+10262: return Memory_RevIndex(self._, item, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_RevIndex(__pyx_v_self->_, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10263:
+10264: def rofind(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_205rofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_204rofind[] = "Memory.rofind(self: Memory, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Optional[Address]\nIndex of an item, reversed search.\n\n Arguments:\n item (items):\n Value to find. Can be either some byte string or an integer.\n\n start (int):\n Inclusive start of the searched range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the searched range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n int: The index of the last item equal to `value`, or ``None``.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_205rofind = {"rofind", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_205rofind, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_204rofind}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_205rofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rofind (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_204rofind(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rofind", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.rofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_208generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__242 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__242)) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__242); __Pyx_GIVEREF(__pyx_tuple__242); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10264, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_205rofind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_rofind, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__243)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_rofind, __pyx_t_13) < 0) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__242, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rofind, 10264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(0, 10264, __pyx_L1_error)
10265: self: Memory,
+10266: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Union); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_6); __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+10267: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_13) < 0) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10268: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rofind") < 0)) __PYX_ERR(0, 10264, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rofind", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10264, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.rofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_204rofind(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+10269: ) -> Optional[Address]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_13) < 0) __PYX_ERR(0, 10264, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
10270: r"""Index of an item, reversed search.
10271:
10272: Arguments:
10273: item (items):
10274: Value to find. Can be either some byte string or an integer.
10275:
10276: start (int):
10277: Inclusive start of the searched range.
10278: If ``None``, :attr:`start` is considered.
10279:
10280: endex (int):
10281: Exclusive end of the searched range.
10282: If ``None``, :attr:`endex` is considered.
10283:
10284: Returns:
10285: int: The index of the last item equal to `value`, or ``None``.
10286: """
10287:
+10288: return Memory_RevObjFind(self._, item, start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_RevObjFind(__pyx_v_self->_, __pyx_v_item, __pyx_v_start, __pyx_v_endex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10289:
+10290: def rvalues(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_207rvalues(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_206rvalues[] = "Memory.rvalues(self: Memory, start: Optional[Union[Address, EllipsisType]] = None, endex: Optional[Address] = None, pattern: Optional[Union[AnyBytes, Value]] = None) -> Iterator[Optional[Value]]\nIterates over values, reversed order.\n\n Iterates over values, from `endex` to `start`.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n If ``Ellipsis``, the iterator is infinite.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n pattern (items):\n Pattern of values to fill emptiness.\n\n Yields:\n int: Range values.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | | | | A | B | C | D | A | | |\n +---+---+---+---+---+---+---+---+---+---+\n | | | | 65| 66| 67| 68| 65| | |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> from itertools import islice\n >>> memory = Memory()\n >>> list(memory.rvalues(endex=8))\n [None, None, None, None, None, None, None, None]\n >>> list(memory.rvalues(3, 8))\n [None, None, None, None, None]\n >>> list(islice(memory.rvalues(..., 8), 7))\n [None, None, None, None, None, None, None]\n >>> list(memory.rvalues(3, 8, b'ABCD'))\n [65, 68, 67, 66, 65]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]|<1 | 2>|[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+""\n | | 65| 66| 67| | |120|121|122| |\n +---+---+---+---+---+---+---+---+---+---+\n | | 65| 66| 67| 49| 50|120|121|122| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> list(memory.rvalues())\n [122, 121, 120, None, None, 67, 66, 65]\n >>> list(memory.rvalues(3, 8))\n [121, 120, None, None, 67]\n >>> list(islice(memory.rvalues(..., 8), 7))\n [121, 120, None, None, 67, 66, 65]\n >>> list(memory.rvalues(3, 8, b'0123'))\n [121, 120, 50, 49, 67]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_207rvalues = {"rvalues", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_207rvalues, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_206rvalues}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_207rvalues(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rvalues (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_206rvalues(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_10_rvalues *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rvalues", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_10_rvalues *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_10_rvalues(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_10_rvalues, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_10_rvalues *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 10290, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_pattern = __pyx_v_pattern; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pattern); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_208generator10, __pyx_codeobj__39, (PyObject *) __pyx_cur_scope, __pyx_n_s_rvalues, __pyx_n_s_Memory_rvalues, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.rvalues", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_208generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rvalues", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 10290, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("rvalues", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__244 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_rover, __pyx_n_s_pattern_value, __pyx_n_s_pattern_view, __pyx_n_s_pattern_size, __pyx_n_s_pattern_data); if (unlikely(!__pyx_tuple__244)) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__244); __Pyx_GIVEREF(__pyx_tuple__244); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10290, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_207rvalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_rvalues, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_rvalues, __pyx_t_7) < 0) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(4, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__244, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rvalues, 10290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 10290, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_10_rvalues { PyObject_HEAD PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; PyObject *__pyx_v_pattern; byte_t const *__pyx_v_pattern_data; size_t __pyx_v_pattern_size; byte_t __pyx_v_pattern_value; __Pyx_memviewslice __pyx_v_pattern_view; Rover_ *__pyx_v_rover; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; PyObject *__pyx_v_start; addr_t __pyx_v_start_; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; };
10291: self: Memory,
+10292: start: Optional[Union[Address, EllipsisType]] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Union); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2); __pyx_t_6 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_start, __pyx_t_10) < 0) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+10293: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10294: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rvalues") < 0)) __PYX_ERR(0, 10290, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rvalues", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10290, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.rvalues", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_206rvalues(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_12); __pyx_t_10 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_pattern, __pyx_t_6) < 0) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+10295: ) -> Iterator[Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 10290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10296: r"""Iterates over values, reversed order.
10297:
10298: Iterates over values, from `endex` to `start`.
10299:
10300: Arguments:
10301: start (int):
10302: Inclusive start address.
10303: If ``None``, :attr:`start` is considered.
10304: If ``Ellipsis``, the iterator is infinite.
10305:
10306: endex (int):
10307: Exclusive end address.
10308: If ``None``, :attr:`endex` is considered.
10309:
10310: pattern (items):
10311: Pattern of values to fill emptiness.
10312:
10313: Yields:
10314: int: Range values.
10315:
10316: Examples:
10317: >>> from cbytesparse.c import Memory
10318:
10319: +---+---+---+---+---+---+---+---+---+---+
10320: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10321: +===+===+===+===+===+===+===+===+===+===+
10322: | | | | A | B | C | D | A | | |
10323: +---+---+---+---+---+---+---+---+---+---+
10324: | | | | 65| 66| 67| 68| 65| | |
10325: +---+---+---+---+---+---+---+---+---+---+
10326:
10327: >>> from itertools import islice
10328: >>> memory = Memory()
10329: >>> list(memory.rvalues(endex=8))
10330: [None, None, None, None, None, None, None, None]
10331: >>> list(memory.rvalues(3, 8))
10332: [None, None, None, None, None]
10333: >>> list(islice(memory.rvalues(..., 8), 7))
10334: [None, None, None, None, None, None, None]
10335: >>> list(memory.rvalues(3, 8, b'ABCD'))
10336: [65, 68, 67, 66, 65]
10337:
10338: ~~~
10339:
10340: +---+---+---+---+---+---+---+---+---+---+
10341: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10342: +===+===+===+===+===+===+===+===+===+===+
10343: | |[A | B | C]|<1 | 2>|[x | y | z]| |
10344: +---+---+---+---+---+---+---+---+---+---+
10345: | | 65| 66| 67| | |120|121|122| |
10346: +---+---+---+---+---+---+---+---+---+---+
10347: | | 65| 66| 67| 49| 50|120|121|122| |
10348: +---+---+---+---+---+---+---+---+---+---+
10349:
10350: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
10351: >>> list(memory.rvalues())
10352: [122, 121, 120, None, None, 67, 66, 65]
10353: >>> list(memory.rvalues(3, 8))
10354: [121, 120, None, None, 67]
10355: >>> list(islice(memory.rvalues(..., 8), 7))
10356: [121, 120, None, None, 67, 66, 65]
10357: >>> list(memory.rvalues(3, 8, b'0123'))
10358: [121, 120, 50, 49, 67]
10359: """
10360: cdef:
10361: addr_t start_
10362: addr_t endex_
+10363: Rover_* rover = NULL
__pyx_cur_scope->__pyx_v_rover = NULL;
10364: byte_t pattern_value
10365: const byte_t[:] pattern_view
+10366: size_t pattern_size = 0
__pyx_cur_scope->__pyx_v_pattern_size = 0;
+10367: const byte_t* pattern_data = NULL
__pyx_cur_scope->__pyx_v_pattern_data = NULL;
10368:
+10369: if start is None:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+10370: start_ = Memory_Start(self._)
__pyx_cur_scope->__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_cur_scope->__pyx_v_self->_);
+10371: elif start is Ellipsis:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_start == __pyx_builtin_Ellipsis); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ goto __pyx_L4; }
+10372: start_ = ADDR_MIN
__pyx_cur_scope->__pyx_v_start_ = ADDR_MIN;
10373: else:
+10374: start_ = <addr_t>start
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10374, __pyx_L1_error) __pyx_cur_scope->__pyx_v_start_ = ((addr_t)__pyx_t_3); } __pyx_L4:;
10375:
+10376: if endex is None:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+10377: endex_ = Memory_Endex(self._)
__pyx_cur_scope->__pyx_v_endex_ = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_cur_scope->__pyx_v_self->_);
10378: else:
+10379: endex_ = <addr_t>endex
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10379, __pyx_L1_error) __pyx_cur_scope->__pyx_v_endex_ = ((addr_t)__pyx_t_3); } __pyx_L5:;
10380:
+10381: if pattern is not None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_pattern != Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+10382: if isinstance(pattern, int):
__pyx_t_1 = PyInt_Check(__pyx_cur_scope->__pyx_v_pattern);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L7;
}
+10383: pattern_value = <byte_t>pattern
__pyx_t_4 = __Pyx_PyInt_As_byte_t(__pyx_cur_scope->__pyx_v_pattern); if (unlikely((__pyx_t_4 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10383, __pyx_L1_error) __pyx_cur_scope->__pyx_v_pattern_value = ((byte_t)__pyx_t_4);
+10384: pattern_size = 1
__pyx_cur_scope->__pyx_v_pattern_size = 1;
+10385: pattern_data = &pattern_value
__pyx_cur_scope->__pyx_v_pattern_data = (&__pyx_cur_scope->__pyx_v_pattern_value);
10386: else:
+10387: try:
/*else*/ { { /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L13_try_end; __pyx_L8_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L9_exception_handled:; __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_L13_try_end:; }
+10388: pattern_view = pattern
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_cur_scope->__pyx_v_pattern, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 10388, __pyx_L8_error) __pyx_cur_scope->__pyx_v_pattern_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+10389: except TypeError:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("cbytesparse.c.Memory.rvalues", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 10389, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12);
+10390: pattern_view = bytes(pattern)
__pyx_t_13 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_cur_scope->__pyx_v_pattern); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10390, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_t_13, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 10390, __pyx_L10_except_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_cur_scope->__pyx_v_pattern_view, 1); __pyx_cur_scope->__pyx_v_pattern_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L9_exception_handled; } goto __pyx_L10_except_error; __pyx_L10_except_error:;
10391: with cython.boundscheck(False):
+10392: pattern_size = len(pattern_view)
__pyx_t_14 = __Pyx_MemoryView_Len(__pyx_cur_scope->__pyx_v_pattern_view);
__pyx_cur_scope->__pyx_v_pattern_size = __pyx_t_14;
+10393: pattern_data = &pattern_view[0]
__pyx_t_15 = 0; if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_cur_scope->__pyx_v_pattern_view.shape[0]; __pyx_cur_scope->__pyx_v_pattern_data = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_cur_scope->__pyx_v_pattern_view.data + __pyx_t_15 * __pyx_cur_scope->__pyx_v_pattern_view.strides[0]) )))); } __pyx_L7:;
10394:
+10395: rover = Rover_Create(self._, start_, endex_, pattern_size, pattern_data, False, start is Ellipsis)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_start == __pyx_builtin_Ellipsis);
__pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Create(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start_, __pyx_cur_scope->__pyx_v_endex_, __pyx_cur_scope->__pyx_v_pattern_size, __pyx_cur_scope->__pyx_v_pattern_data, 0, __pyx_t_2); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL))) __PYX_ERR(0, 10395, __pyx_L1_error)
__pyx_cur_scope->__pyx_v_rover = __pyx_t_16;
+10396: try:
/*try:*/ { { /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L24_try_end; __pyx_L19_error:; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); /* … */ __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5); goto __pyx_L17_error; __pyx_L20_exception_handled:; __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5); __pyx_L24_try_end:; } }
+10397: while True:
while (1) {
+10398: yield Rover_Next(rover)
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Rover_Next(__pyx_cur_scope->__pyx_v_rover); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10398, __pyx_L19_error) __Pyx_GOTREF(__pyx_t_12); __pyx_r = __pyx_t_12; __pyx_t_12 = 0; __Pyx_XGIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_t_0 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_t_2 = __pyx_t_7; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L27_resume_from_yield:; __pyx_t_5 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_5); __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_6); __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 10398, __pyx_L19_error) }
+10399: except StopIteration:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration); if (__pyx_t_9) { __Pyx_ErrRestore(0,0,0); goto __pyx_L20_exception_handled; } goto __pyx_L21_except_error; __pyx_L21_except_error:;
10400: pass
10401: finally:
+10402: Rover_Free(rover)
/*finally:*/ { /*normal exit:*/{ __pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_cur_scope->__pyx_v_rover); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 10402, __pyx_L1_error) /* … */ __pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_cur_scope->__pyx_v_rover); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 10402, __pyx_L30_error)
+10403: if pattern is not None: # keep
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_pattern != Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ } goto __pyx_L18; } __pyx_L17_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { /* … */ __pyx_t_1 = (__pyx_cur_scope->__pyx_v_pattern != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ } } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ErrRestore(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L1_error; __pyx_L30_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; goto __pyx_L1_error; } __pyx_L18:; } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+10404: pattern = None # release
__Pyx_INCREF(Py_None); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_pattern, Py_None); __Pyx_GIVEREF(Py_None); /* … */ __Pyx_INCREF(Py_None); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_pattern, Py_None); __Pyx_GIVEREF(Py_None);
10405:
+10406: def setdefault(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_210setdefault(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_209setdefault[] = "Memory.setdefault(self: Memory, address: Address, default: Optional[Union[AnyBytes, Value]] = None) -> Optional[Value]\nDefaults a value.\n\n Arguments:\n address (int):\n Address of the byte to set.\n\n default (int):\n Value to set if `address` is within emptiness.\n\n Return:\n int: Value at `address`; `default` within emptiness.\n\n See Also:\n :meth:`setdefault_backup`\n :meth:`setdefault_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> memory.setdefault(3, b'@') # -> ord('C') = 67\n 67\n >>> memory.peek(3) # -> ord('C') = 67\n 67\n >>> memory.setdefault(5, 64) # -> ord('@') = 64\n 64\n >>> memory.peek(5) # -> ord('@') = 64\n 64\n >>> memory.setdefault(9) is None\n False\n >>> memory.peek(9) is None\n False\n >>> memory.setdefault(7) is None\n True\n >>> memory.peek(7) is None\n True\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_210setdefault = {"setdefault", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_210setdefault, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_209setdefault}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_210setdefault(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_default = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_default,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_209setdefault(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_default) { addr_t __pyx_v_address_; Memory_ *__pyx_v_memory; int __pyx_v_backup; __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } }; byte_t __pyx_v_value; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault", 0); /* … */ /* function exit code */ __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cbytesparse.c.Memory.setdefault", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__245 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_default, __pyx_n_s_address_2, __pyx_n_s_memory, __pyx_n_s_backup, __pyx_n_s_view, __pyx_n_s_value); if (unlikely(!__pyx_tuple__245)) __PYX_ERR(0, 10406, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__245); __Pyx_GIVEREF(__pyx_tuple__245); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10406, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_210setdefault, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_setdefault, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__246)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_setdefault, __pyx_t_13) < 0) __PYX_ERR(0, 10406, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__246 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__245, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_setdefault, 10406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(0, 10406, __pyx_L1_error)
10407: self: Memory,
+10408: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_13) < 0) __PYX_ERR(0, 10406, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10409: default: Optional[Union[AnyBytes, Value]] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setdefault") < 0)) __PYX_ERR(0, 10406, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_default = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("setdefault", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10406, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.setdefault", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_209setdefault(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_default); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_12); __pyx_t_6 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_default, __pyx_t_10) < 0) __PYX_ERR(0, 10406, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+10410: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_13) < 0) __PYX_ERR(0, 10406, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
10411: r"""Defaults a value.
10412:
10413: Arguments:
10414: address (int):
10415: Address of the byte to set.
10416:
10417: default (int):
10418: Value to set if `address` is within emptiness.
10419:
10420: Return:
10421: int: Value at `address`; `default` within emptiness.
10422:
10423: See Also:
10424: :meth:`setdefault_backup`
10425: :meth:`setdefault_restore`
10426:
10427: Examples:
10428: >>> from cbytesparse.c import Memory
10429:
10430: +---+---+---+---+---+---+---+---+---+---+---+---+
10431: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
10432: +===+===+===+===+===+===+===+===+===+===+===+===+
10433: | |[A | B | C | D]| |[$]| |[x | y | z]| |
10434: +---+---+---+---+---+---+---+---+---+---+---+---+
10435:
10436: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
10437: >>> memory.setdefault(3, b'@') # -> ord('C') = 67
10438: 67
10439: >>> memory.peek(3) # -> ord('C') = 67
10440: 67
10441: >>> memory.setdefault(5, 64) # -> ord('@') = 64
10442: 64
10443: >>> memory.peek(5) # -> ord('@') = 64
10444: 64
10445: >>> memory.setdefault(9) is None
10446: False
10447: >>> memory.peek(9) is None
10448: False
10449: >>> memory.setdefault(7) is None
10450: True
10451: >>> memory.peek(7) is None
10452: True
10453: """
10454: cdef:
+10455: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10455, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
+10456: Memory_* memory = self._
__pyx_t_2 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_2;
+10457: int backup = Memory_Peek_(memory, address_)
__pyx_v_backup = __pyx_f_11cbytesparse_1c_Memory_Peek_(__pyx_v_memory, __pyx_v_address_);
10458: const byte_t[:] view
10459: byte_t value
10460:
+10461: if backup < 0:
__pyx_t_3 = ((__pyx_v_backup < 0) != 0); if (__pyx_t_3) { /* … */ }
+10462: if default is not None:
__pyx_t_3 = (__pyx_v_default != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* … */ }
+10463: if isinstance(default, int):
__pyx_t_4 = PyInt_Check(__pyx_v_default);
__pyx_t_3 = (__pyx_t_4 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L5;
}
+10464: value = <byte_t>default
__pyx_t_5 = __Pyx_PyInt_As_byte_t(__pyx_v_default); if (unlikely((__pyx_t_5 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10464, __pyx_L1_error) __pyx_v_value = ((byte_t)__pyx_t_5);
10465: else:
+10466: view = default
/*else*/ { __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_default, 0); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 10466, __pyx_L1_error) __pyx_v_view = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+10467: if len(view) != 1:
__pyx_t_7 = __Pyx_MemoryView_Len(__pyx_v_view);
__pyx_t_3 = ((__pyx_t_7 != 1) != 0);
if (unlikely(__pyx_t_3)) {
/* … */
}
+10468: raise ValueError('expecting single item')
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __PYX_ERR(0, 10468, __pyx_L1_error)
10469: with cython.boundscheck(False):
+10470: value = view[0]
__pyx_t_9 = 0; if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_v_view.shape[0]; __pyx_v_value = (*((byte_t const *) ( /* dim=0 */ (__pyx_v_view.data + __pyx_t_9 * __pyx_v_view.strides[0]) ))); } __pyx_L5:;
+10471: Memory_Poke_(memory, address_, value)
__pyx_t_10 = __pyx_f_11cbytesparse_1c_Memory_Poke_(__pyx_v_memory, __pyx_v_address_, __pyx_v_value); if (unlikely(__pyx_t_10 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10471, __pyx_L1_error)
+10472: return value
__Pyx_XDECREF(__pyx_r); __pyx_t_8 = __Pyx_PyInt_From_byte_t(__pyx_v_value); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
10473: else:
+10474: return None
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; }
10475: else:
+10476: return backup
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_backup); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0; }
10477:
+10478: def setdefault_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_212setdefault_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_211setdefault_backup[] = "Memory.setdefault_backup(self: Memory, address: Address) -> Tuple[Address, Optional[Value]]\nBackups a `setdefault()` operation.\n\n Arguments:\n address (int):\n Address of the byte to set.\n\n Returns:\n (int, int): `address`, item at `address` (``None`` if empty).\n\n See Also:\n :meth:`setdefault`\n :meth:`setdefault_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_212setdefault_backup = {"setdefault_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_212setdefault_backup, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_211setdefault_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_212setdefault_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_211setdefault_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_211setdefault_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.setdefault_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__247 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__247)) __PYX_ERR(0, 10478, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__247); __Pyx_GIVEREF(__pyx_tuple__247); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10478, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_212setdefault_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_setdefault_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__248)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_setdefault_backup, __pyx_t_6) < 0) __PYX_ERR(0, 10478, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__247, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_setdefault_backup, 10478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(0, 10478, __pyx_L1_error)
10479: self: Memory,
+10480: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 10478, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10481: ) -> Tuple[Address, Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Optional); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); __pyx_t_12 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 10478, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10482: r"""Backups a `setdefault()` operation.
10483:
10484: Arguments:
10485: address (int):
10486: Address of the byte to set.
10487:
10488: Returns:
10489: (int, int): `address`, item at `address` (``None`` if empty).
10490:
10491: See Also:
10492: :meth:`setdefault`
10493: :meth:`setdefault_restore`
10494: """
10495:
+10496: return address, Memory_Peek(self._, address)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Peek(__pyx_v_self->_, __pyx_v_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_address); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
10497:
+10498: def setdefault_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_214setdefault_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_213setdefault_restore[] = "Memory.setdefault_restore(self: Memory, address: Address, item: Optional[Value]) -> None\nRestores a `setdefault()` operation.\n\n Arguments:\n address (int):\n Address of the target item.\n\n item (int or byte):\n Item to restore, ``None`` if empty.\n\n See Also:\n :meth:`setdefault`\n :meth:`setdefault_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_214setdefault_restore = {"setdefault_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_214setdefault_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_213setdefault_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_214setdefault_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_item = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_item,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("setdefault_restore", 1, 2, 2, 1); __PYX_ERR(0, 10498, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setdefault_restore") < 0)) __PYX_ERR(0, 10498, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_item = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("setdefault_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10498, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.setdefault_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_213setdefault_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_item); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_213setdefault_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.setdefault_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__249 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_item); if (unlikely(!__pyx_tuple__249)) __PYX_ERR(0, 10498, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__249); __Pyx_GIVEREF(__pyx_tuple__249); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10498, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_214setdefault_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_setdefault_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__250)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_setdefault_restore, __pyx_t_7) < 0) __PYX_ERR(0, 10498, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__250 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__249, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_setdefault_restore, 10498, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__250)) __PYX_ERR(0, 10498, __pyx_L1_error)
10499: self: Memory,
+10500: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_13) < 0) __PYX_ERR(0, 10498, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10501: item: Optional[Value],
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 10498, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10502: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10498, __pyx_L1_error)
10503: r"""Restores a `setdefault()` operation.
10504:
10505: Arguments:
10506: address (int):
10507: Address of the target item.
10508:
10509: item (int or byte):
10510: Item to restore, ``None`` if empty.
10511:
10512: See Also:
10513: :meth:`setdefault`
10514: :meth:`setdefault_backup`
10515: """
10516:
+10517: Memory_Poke(self._, address, item)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Poke(__pyx_v_self->_, __pyx_v_address, __pyx_v_item); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10517, __pyx_L1_error)
10518:
+10519: def shift(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_216shift(PyObject *__pyx_v_self, PyObject *__pyx_v_offset); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_215shift[] = "Memory.shift(self: Memory, offset: Address) -> None\nShifts the items.\n\n Arguments:\n offset (int):\n Signed amount of address shifting.\n\n See Also:\n :meth:`shift_backup`\n :meth:`shift_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|\n +===+===+===+===+===+===+===+===+===+===+===+\n | | | |[A | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C]| |[x | y | z]| | | |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])\n >>> memory.shift(-2)\n >>> memory.to_blocks()\n [[3, b'ABC'], [7, b'xyz']]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[[[| |[A | B | C]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n | |[y | z]| | | | | | | | |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']], start=3)\n >>> memory.shift(-8)\n >>> memory.to_blocks()\n [[2, b'yz']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_216shift = {"shift", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_216shift, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_215shift}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_216shift(PyObject *__pyx_v_self, PyObject *__pyx_v_offset) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_215shift(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_offset)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_215shift(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_offset) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.shift", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__251 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_offset); if (unlikely(!__pyx_tuple__251)) __PYX_ERR(0, 10519, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__251); __Pyx_GIVEREF(__pyx_tuple__251); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10519, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_216shift, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_shift, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__252)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_shift, __pyx_t_6) < 0) __PYX_ERR(0, 10519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__252 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__251, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_shift, 10519, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__252)) __PYX_ERR(0, 10519, __pyx_L1_error)
10520: self: Memory,
+10521: offset: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_offset, __pyx_t_6) < 0) __PYX_ERR(0, 10519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+10522: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10519, __pyx_L1_error)
10523: r"""Shifts the items.
10524:
10525: Arguments:
10526: offset (int):
10527: Signed amount of address shifting.
10528:
10529: See Also:
10530: :meth:`shift_backup`
10531: :meth:`shift_restore`
10532:
10533: Examples:
10534: >>> from cbytesparse.c import Memory
10535:
10536: +---+---+---+---+---+---+---+---+---+---+---+
10537: | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|
10538: +===+===+===+===+===+===+===+===+===+===+===+
10539: | | | |[A | B | C]| |[x | y | z]| |
10540: +---+---+---+---+---+---+---+---+---+---+---+
10541: | |[A | B | C]| |[x | y | z]| | | |
10542: +---+---+---+---+---+---+---+---+---+---+---+
10543:
10544: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']])
10545: >>> memory.shift(-2)
10546: >>> memory.to_blocks()
10547: [[3, b'ABC'], [7, b'xyz']]
10548:
10549: ~~~
10550:
10551: +---+---+---+---+---+---+---+---+---+---+---+
10552: | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12|
10553: +===+===+===+===+===+===+===+===+===+===+===+
10554: | |[[[| |[A | B | C]| |[x | y | z]| |
10555: +---+---+---+---+---+---+---+---+---+---+---+
10556: | |[y | z]| | | | | | | | |
10557: +---+---+---+---+---+---+---+---+---+---+---+
10558:
10559: >>> memory = Memory.from_blocks([[5, b'ABC'], [9, b'xyz']], start=3)
10560: >>> memory.shift(-8)
10561: >>> memory.to_blocks()
10562: [[2, b'yz']]
10563: """
10564:
+10565: Memory_Shift(self._, offset)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Shift(__pyx_v_self->_, __pyx_v_offset); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10565, __pyx_L1_error)
10566:
+10567: def shift_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_218shift_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_offset); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_217shift_backup[] = "Memory.shift_backup(self: Memory, offset: Address) -> Tuple[Address, ImmutableMemory]\nBackups a `shift()` operation.\n\n Arguments:\n offset (int):\n Signed amount of address shifting.\n\n Returns:\n (int, :obj:`ImmutableMemory`): Shifting, backup memory region.\n\n See Also:\n :meth:`shift`\n :meth:`shift_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_218shift_backup = {"shift_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_218shift_backup, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_217shift_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_218shift_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_offset) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_217shift_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_offset)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_217shift_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_offset) { struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_backup = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.Memory.shift_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_backup); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__253 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_backup); if (unlikely(!__pyx_tuple__253)) __PYX_ERR(0, 10567, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__253); __Pyx_GIVEREF(__pyx_tuple__253); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10567, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10567, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_218shift_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_shift_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__254)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10567, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_shift_backup, __pyx_t_13) < 0) __PYX_ERR(0, 10567, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__254 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__253, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_shift_backup, 10567, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__254)) __PYX_ERR(0, 10567, __pyx_L1_error)
10568: self: Memory,
+10569: offset: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_7) < 0) __PYX_ERR(0, 10567, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10570: ) -> Tuple[Address, ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13); __pyx_t_2 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_13) < 0) __PYX_ERR(0, 10567, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
10571: r"""Backups a `shift()` operation.
10572:
10573: Arguments:
10574: offset (int):
10575: Signed amount of address shifting.
10576:
10577: Returns:
10578: (int, :obj:`ImmutableMemory`): Shifting, backup memory region.
10579:
10580: See Also:
10581: :meth:`shift`
10582: :meth:`shift_restore`
10583: """
10584: cdef:
10585: Memory backup
10586:
+10587: if offset < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10587, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 10587, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+10588: backup = self._pretrim_start_backup(None, -offset)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pretrim_start_backup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Negative(__pyx_v_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, Py_None, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10588, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, Py_None, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10588, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, Py_None); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 10588, __pyx_L1_error) __pyx_v_backup = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_1); __pyx_t_1 = 0;
10589: else:
+10590: backup = self._pretrim_endex_backup(None, +offset)
/*else*/ { __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pretrim_endex_backup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyNumber_Positive(__pyx_v_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, Py_None, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10590, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, Py_None, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10590, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, Py_None); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 10590, __pyx_L1_error) __pyx_v_backup = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_1); __pyx_t_1 = 0; } __pyx_L3:;
+10591: return offset, backup
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_offset); __Pyx_GIVEREF(__pyx_v_offset); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_offset); __Pyx_INCREF(((PyObject *)__pyx_v_backup)); __Pyx_GIVEREF(((PyObject *)__pyx_v_backup)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_backup)); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10592:
+10593: def shift_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_220shift_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_219shift_restore[] = "Memory.shift_restore(self: Memory, offset: Address, backup: ImmutableMemory) -> None\nRestores an `shift()` operation.\n\n Arguments:\n offset (int):\n Signed amount of address shifting.\n\n backup (:obj:`ImmutableMemory`):\n Backup memory region to restore.\n\n See Also:\n :meth:`shift`\n :meth:`shift_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_220shift_restore = {"shift_restore", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_220shift_restore, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_219shift_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_220shift_restore(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_backup = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift_restore (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_backup,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_backup)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("shift_restore", 1, 2, 2, 1); __PYX_ERR(0, 10593, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "shift_restore") < 0)) __PYX_ERR(0, 10593, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_offset = values[0]; __pyx_v_backup = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("shift_restore", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10593, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.shift_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_219shift_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_offset, __pyx_v_backup); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_219shift_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_offset, PyObject *__pyx_v_backup) { Memory_ *__pyx_v_memory; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("cbytesparse.c.Memory.shift_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__255 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_backup, __pyx_n_s_memory); if (unlikely(!__pyx_tuple__255)) __PYX_ERR(0, 10593, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__255); __Pyx_GIVEREF(__pyx_tuple__255); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10593, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_220shift_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_shift_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__256)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_shift_restore, __pyx_t_6) < 0) __PYX_ERR(0, 10593, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__256 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__255, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_shift_restore, 10593, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(0, 10593, __pyx_L1_error)
10594: self: Memory,
+10595: offset: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_offset, __pyx_t_6) < 0) __PYX_ERR(0, 10593, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+10596: backup: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_backup, __pyx_t_6) < 0) __PYX_ERR(0, 10593, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+10597: ) -> None:
if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10593, __pyx_L1_error)
10598: r"""Restores an `shift()` operation.
10599:
10600: Arguments:
10601: offset (int):
10602: Signed amount of address shifting.
10603:
10604: backup (:obj:`ImmutableMemory`):
10605: Backup memory region to restore.
10606:
10607: See Also:
10608: :meth:`shift`
10609: :meth:`shift_backup`
10610: """
10611: cdef:
+10612: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
10613:
+10614: Memory_Shift(memory, -offset)
__pyx_t_2 = PyNumber_Negative(__pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Shift(__pyx_v_memory, __pyx_t_2); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10614, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+10615: Memory_Write(memory, 0, backup, True)
__pyx_t_3 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_3 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10615, __pyx_L1_error)
10616:
10617: @property
+10618: def span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_4span_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_4span_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_4span___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_4span___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.span.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
10619: self: Memory,
10620: ) -> ClosedInterval:
10621: r"""tuple of int: Memory address span.
10622:
10623: A :obj:`tuple` holding both :attr:`start` and :attr:`endex`.
10624:
10625: Examples:
10626: >>> from cbytesparse.c import Memory
10627:
10628: >>> Memory().span
10629: (0, 0)
10630: >>> Memory(start=1, endex=8).span
10631: (1, 8)
10632:
10633: ~~~
10634:
10635: +---+---+---+---+---+---+---+---+---+
10636: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
10637: +===+===+===+===+===+===+===+===+===+
10638: | |[A | B | C]| |[x | y | z]| |
10639: +---+---+---+---+---+---+---+---+---+
10640:
10641: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
10642: >>> memory.span
10643: (1, 8)
10644: """
10645:
+10646: return Memory_Span(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_convert__to_py___pyx_ctuple_addr_t__and_addr_t(__pyx_f_11cbytesparse_1c_Memory_Span(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10646, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10647:
10648: @property
+10649: def start(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5start_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_5start_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_5start___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_5start___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
10650: self: Memory,
10651: ) -> Address:
10652: r"""int: Inclusive start address.
10653:
10654: This property holds the inclusive start address of the virtual space.
10655: By default, it is the current minimum inclusive start address of
10656: the first stored block.
10657:
10658: If :attr:`trim_start` not ``None``, that is returned.
10659:
10660: If the memory has no data and no trimming, 0 is returned.
10661:
10662: Examples:
10663: >>> from cbytesparse.c import Memory
10664:
10665: >>> Memory().start
10666: 0
10667:
10668: ~~~
10669:
10670: +---+---+---+---+---+---+---+---+---+
10671: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
10672: +===+===+===+===+===+===+===+===+===+
10673: | |[A | B | C]| |[x | y | z]| |
10674: +---+---+---+---+---+---+---+---+---+
10675:
10676: >>> memory = Memory.from_blocks([[1, b'ABC'], [5, b'xyz']])
10677: >>> memory.start
10678: 1
10679:
10680: ~~~
10681:
10682: +---+---+---+---+---+---+---+---+---+
10683: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
10684: +===+===+===+===+===+===+===+===+===+
10685: | |[[[| | | |[x | y | z]| |
10686: +---+---+---+---+---+---+---+---+---+
10687:
10688: >>> memory = Memory.from_blocks([[5, b'xyz']], start=1)
10689: >>> memory.start
10690: 1
10691: """
10692:
+10693: return Memory_Start(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_self->_)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10694:
+10695: def to_blocks(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_222to_blocks(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_221to_blocks[] = "Memory.to_blocks(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> BlockList\nExports into blocks.\n\n Exports data blocks within an address range, converting them into\n standalone :obj:`bytes` objects.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n list of blocks: Exported data blocks.\n\n See Also:\n :meth:`blocks`\n :meth:`from_blocks`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n +===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B]| | |[x]| |[1 | 2 | 3]| |\n +---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])\n >>> memory.to_blocks()\n [[1, b'AB'], [5, b'x'], [7, b'123']]\n >>> memory.to_blocks(2, 9)\n [[2, b'B'], [5, b'x'], [7, b'12']]\n >>> memory.to_blocks(3, 5)]\n []\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_222to_blocks = {"to_blocks", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_222to_blocks, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_221to_blocks}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_222to_blocks(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_blocks (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_221to_blocks(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { addr_t __pyx_v_start_; addr_t __pyx_v_endex_; Rack_ const *__pyx_v_blocks; size_t __pyx_v_block_count; size_t __pyx_v_block_index; size_t __pyx_v_block_index_start; size_t __pyx_v_block_index_endex; Block_ const *__pyx_v_block; addr_t __pyx_v_block_start; addr_t __pyx_v_block_endex; addr_t __pyx_v_slice_start; addr_t __pyx_v_slice_endex; PyObject *__pyx_v_slice_data = 0; PyObject *__pyx_v_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_blocks", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("cbytesparse.c.Memory.to_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_slice_data); __Pyx_XDECREF(__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__257 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_blocks, __pyx_n_s_block_count, __pyx_n_s_block_index, __pyx_n_s_block_index_start_2, __pyx_n_s_block_index_endex_2, __pyx_n_s_block, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_slice_start, __pyx_n_s_slice_endex, __pyx_n_s_slice_data, __pyx_n_s_result); if (unlikely(!__pyx_tuple__257)) __PYX_ERR(0, 10695, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__257); __Pyx_GIVEREF(__pyx_tuple__257); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10695, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_222to_blocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_to_blocks, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__258)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_to_blocks, __pyx_t_13) < 0) __PYX_ERR(0, 10695, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(3, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_to_blocks, 10695, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(0, 10695, __pyx_L1_error)
10696: self: Memory,
+10697: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 10695, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10698: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "to_blocks") < 0)) __PYX_ERR(0, 10695, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("to_blocks", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10695, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.to_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_221to_blocks(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_13) < 0) __PYX_ERR(0, 10695, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+10699: ) -> BlockList:
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_BlockList); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_13) < 0) __PYX_ERR(0, 10695, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
10700: r"""Exports into blocks.
10701:
10702: Exports data blocks within an address range, converting them into
10703: standalone :obj:`bytes` objects.
10704:
10705: Arguments:
10706: start (int):
10707: Inclusive start address.
10708: If ``None``, :attr:`start` is considered.
10709:
10710: endex (int):
10711: Exclusive end address.
10712: If ``None``, :attr:`endex` is considered.
10713:
10714: Returns:
10715: list of blocks: Exported data blocks.
10716:
10717: See Also:
10718: :meth:`blocks`
10719: :meth:`from_blocks`
10720:
10721: Examples:
10722: >>> from cbytesparse.c import Memory
10723:
10724: +---+---+---+---+---+---+---+---+---+---+---+
10725: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|
10726: +===+===+===+===+===+===+===+===+===+===+===+
10727: | |[A | B]| | |[x]| |[1 | 2 | 3]| |
10728: +---+---+---+---+---+---+---+---+---+---+---+
10729:
10730: >>> memory = Memory.from_blocks([[1, b'AB'], [5, b'x'], [7, b'123']])
10731: >>> memory.to_blocks()
10732: [[1, b'AB'], [5, b'x'], [7, b'123']]
10733: >>> memory.to_blocks(2, 9)
10734: [[2, b'B'], [5, b'x'], [7, b'12']]
10735: >>> memory.to_blocks(3, 5)]
10736: []
10737: """
10738: cdef:
10739: addr_t start_
10740: addr_t endex_
+10741: const Rack_* blocks = self._.blocks
__pyx_t_1 = __pyx_v_self->_->blocks; __pyx_v_blocks = __pyx_t_1;
+10742: size_t block_count = Rack_Length(blocks)
__pyx_v_block_count = __pyx_f_11cbytesparse_1c_Rack_Length(__pyx_v_blocks);
10743: size_t block_index
10744: size_t block_index_start
10745: size_t block_index_endex
10746: const Block_* block
10747: addr_t block_start
10748: addr_t block_endex
10749: addr_t slice_start
10750: addr_t slice_endex
10751: bytes slice_data
+10752: list result = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_result = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
10753:
+10754: if block_count:
__pyx_t_3 = (__pyx_v_block_count != 0); if (__pyx_t_3) { /* … */ }
+10755: if start is None and endex is None: # faster
__pyx_t_4 = (__pyx_v_start == Py_None); __pyx_t_5 = (__pyx_t_4 != 0); if (__pyx_t_5) { } else { __pyx_t_3 = __pyx_t_5; goto __pyx_L5_bool_binop_done; } __pyx_t_5 = (__pyx_v_endex == Py_None); __pyx_t_4 = (__pyx_t_5 != 0); __pyx_t_3 = __pyx_t_4; __pyx_L5_bool_binop_done:; if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+10756: for block_index in range(block_count):
__pyx_t_6 = __pyx_v_block_count; __pyx_t_7 = __pyx_t_6; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_block_index = __pyx_t_8;
+10757: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+10758: result.append([Block_Start(block), Block_Bytes(block)])
__pyx_t_2 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __pyx_f_11cbytesparse_1c_Block_Bytes(__pyx_v_block); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyList_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_2); PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_9); PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __pyx_t_2 = 0; __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_10); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 10758, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; }
10759: else:
+10760: block_index_start = 0 if start is None else Rack_IndexStart(blocks, start)
/*else*/ { __pyx_t_3 = (__pyx_v_start == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_6 = 0; } else { __pyx_t_12 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_12 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10760, __pyx_L1_error) __pyx_t_6 = __pyx_f_11cbytesparse_1c_Rack_IndexStart(__pyx_v_blocks, __pyx_t_12); } __pyx_v_block_index_start = __pyx_t_6;
+10761: block_index_endex = block_count if endex is None else Rack_IndexEndex(blocks, endex)
__pyx_t_3 = (__pyx_v_endex == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_6 = __pyx_v_block_count; } else { __pyx_t_12 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_12 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 10761, __pyx_L1_error) __pyx_t_6 = __pyx_f_11cbytesparse_1c_Rack_IndexEndex(__pyx_v_blocks, __pyx_t_12); } __pyx_v_block_index_endex = __pyx_t_6;
+10762: start_, endex_ = Memory_Bound(self._, start, endex)
__pyx_t_13 = __pyx_f_11cbytesparse_1c_Memory_Bound(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 10762, __pyx_L1_error)
__pyx_t_12 = __pyx_t_13.f0;
__pyx_t_14 = __pyx_t_13.f1;
__pyx_v_start_ = __pyx_t_12;
__pyx_v_endex_ = __pyx_t_14;
10763:
+10764: for block_index in range(block_index_start, block_index_endex):
__pyx_t_6 = __pyx_v_block_index_endex; __pyx_t_7 = __pyx_t_6; for (__pyx_t_8 = __pyx_v_block_index_start; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_block_index = __pyx_t_8;
+10765: block = Rack_Get__(blocks, block_index)
__pyx_v_block = __pyx_f_11cbytesparse_1c_Rack_Get__(__pyx_v_blocks, __pyx_v_block_index);
+10766: block_start = Block_Start(block)
__pyx_v_block_start = __pyx_f_11cbytesparse_1c_Block_Start(__pyx_v_block);
+10767: block_endex = Block_Endex(block)
__pyx_v_block_endex = __pyx_f_11cbytesparse_1c_Block_Endex(__pyx_v_block);
+10768: slice_start = block_start if start_ < block_start else start_
if (((__pyx_v_start_ < __pyx_v_block_start) != 0)) { __pyx_t_14 = __pyx_v_block_start; } else { __pyx_t_14 = __pyx_v_start_; } __pyx_v_slice_start = __pyx_t_14;
+10769: slice_endex = endex_ if endex_ < block_endex else block_endex
if (((__pyx_v_endex_ < __pyx_v_block_endex) != 0)) { __pyx_t_14 = __pyx_v_endex_; } else { __pyx_t_14 = __pyx_v_block_endex; } __pyx_v_slice_endex = __pyx_t_14;
+10770: if slice_start < slice_endex:
__pyx_t_3 = ((__pyx_v_slice_start < __pyx_v_slice_endex) != 0); if (__pyx_t_3) { /* … */ } } } __pyx_L4:;
+10771: slice_start -= block_start
__pyx_v_slice_start = (__pyx_v_slice_start - __pyx_v_block_start);
+10772: slice_endex -= block_start
__pyx_v_slice_endex = (__pyx_v_slice_endex - __pyx_v_block_start);
+10773: slice_data = PyBytes_FromStringAndSize(<char*><void*>Block_At__(block, <size_t>slice_start),
__pyx_t_10 = PyBytes_FromStringAndSize(((char *)((void *)__pyx_f_11cbytesparse_1c_Block_At__(__pyx_v_block, ((size_t)__pyx_v_slice_start)))), ((Py_ssize_t)(__pyx_v_slice_endex - __pyx_v_slice_start))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_XDECREF_SET(__pyx_v_slice_data, ((PyObject*)__pyx_t_10)); __pyx_t_10 = 0;
10774: <ssize_t>(slice_endex - slice_start))
+10775: result.append([block_start + slice_start, slice_data])
__pyx_t_10 = __Pyx_PyInt_From_uint_fast64_t((__pyx_v_block_start + __pyx_v_slice_start)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = PyList_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __Pyx_INCREF(__pyx_v_slice_data); __Pyx_GIVEREF(__pyx_v_slice_data); PyList_SET_ITEM(__pyx_t_9, 1, __pyx_v_slice_data); __pyx_t_10 = 0; __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_9); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 10775, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+10776: return result
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_result); __pyx_r = __pyx_v_result; goto __pyx_L0;
10777:
+10778: def to_bytes(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_224to_bytes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_223to_bytes[] = "Memory.to_bytes(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> bytes\nExports into bytes.\n\n Exports data within an address range, converting into a standalone\n :obj:`bytes` object.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n bytes: Exported data bytes.\n\n See Also:\n :meth:`from_bytes`\n :meth:`view`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n >>> memory = Memory.from_bytes(b'')\n >>> memory.to_bytes()\n b''\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |\n +===+===+===+===+===+===+===+===+===+\n | | |[A | B | C | x | y | z]| |\n +---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_bytes(b'ABCxyz', 2)\n >>> memory.to_bytes()\n b'ABCxyz'\n >>> memory.to_bytes(start=4)\n b'Cxyz'\n >>> memory.to_bytes(endex=6)\n b'ABCx'\n >>> memory.to_bytes(4, 6)\n b'Cx'\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_224to_bytes = {"to_bytes", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_224to_bytes, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_223to_bytes}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_224to_bytes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_bytes (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_223to_bytes(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_v_view = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_bytes", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.Memory.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_view); __Pyx_XDECREF(__pyx_v_data); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__259 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_view, __pyx_n_s_data); if (unlikely(!__pyx_tuple__259)) __PYX_ERR(0, 10778, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__259); __Pyx_GIVEREF(__pyx_tuple__259); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10778, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_224to_bytes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_to_bytes, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__260)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_to_bytes, __pyx_t_6) < 0) __PYX_ERR(0, 10778, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__260 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__259, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_to_bytes, 10778, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__260)) __PYX_ERR(0, 10778, __pyx_L1_error)
10779: self: Memory,
+10780: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 10778, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+10781: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "to_bytes") < 0)) __PYX_ERR(0, 10778, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("to_bytes", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10778, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_223to_bytes(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 10778, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_n_u_bytes_2) < 0) __PYX_ERR(0, 10778, __pyx_L1_error)
10782: ) -> bytes:
10783: r"""Exports into bytes.
10784:
10785: Exports data within an address range, converting into a standalone
10786: :obj:`bytes` object.
10787:
10788: Arguments:
10789: start (int):
10790: Inclusive start address.
10791: If ``None``, :attr:`start` is considered.
10792:
10793: endex (int):
10794: Exclusive end address.
10795: If ``None``, :attr:`endex` is considered.
10796:
10797: Returns:
10798: bytes: Exported data bytes.
10799:
10800: See Also:
10801: :meth:`from_bytes`
10802: :meth:`view`
10803:
10804: Examples:
10805: >>> from cbytesparse.c import Memory
10806:
10807: >>> memory = Memory.from_bytes(b'')
10808: >>> memory.to_bytes()
10809: b''
10810:
10811: ~~~
10812:
10813: +---+---+---+---+---+---+---+---+---+
10814: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
10815: +===+===+===+===+===+===+===+===+===+
10816: | | |[A | B | C | x | y | z]| |
10817: +---+---+---+---+---+---+---+---+---+
10818:
10819: >>> memory = Memory.from_bytes(b'ABCxyz', 2)
10820: >>> memory.to_bytes()
10821: b'ABCxyz'
10822: >>> memory.to_bytes(start=4)
10823: b'Cxyz'
10824: >>> memory.to_bytes(endex=6)
10825: b'ABCx'
10826: >>> memory.to_bytes(4, 6)
10827: b'Cx'
10828: """
10829: cdef:
+10830: BlockView view = Memory_View(self._, start, endex)
__pyx_t_1 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_View(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_view = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_1); __pyx_t_1 = 0;
+10831: bytes data = view.__bytes__()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_view), __pyx_n_s_bytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 10831, __pyx_L1_error) __pyx_v_data = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
10832:
+10833: view.release_()
(void)(((struct __pyx_vtabstruct_11cbytesparse_1c_BlockView *)__pyx_v_view->__pyx_vtab)->release_(__pyx_v_view));
+10834: return data
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_data); __pyx_r = __pyx_v_data; goto __pyx_L0;
10835:
10836: @property
+10837: def trim_endex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_10trim_endex_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_10trim_endex_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_10trim_endex___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_10trim_endex___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.trim_endex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
10838: self: Memory,
10839: ) -> Optional[Address]:
10840: r"""int: Trimming exclusive end address.
10841:
10842: Any data at or after this address is automatically discarded.
10843: Disabled if ``None``.
10844: """
10845:
+10846: return Memory_GetTrimEndex(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_GetTrimEndex(__pyx_v_self->_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10847:
10848: @trim_endex.setter
+10849: def trim_endex(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_10trim_endex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_endex); /*proto*/ static int __pyx_pw_11cbytesparse_1c_6Memory_10trim_endex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_endex) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_10trim_endex_2__set__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_trim_endex)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_10trim_endex_2__set__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_trim_endex) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.trim_endex.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
10850: self: Memory,
10851: trim_endex: Address,
10852: ) -> None:
10853:
+10854: Memory_SetTrimEndex(self._, trim_endex)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_SetTrimEndex(__pyx_v_self->_, __pyx_v_trim_endex); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10854, __pyx_L1_error)
10855:
10856: @property
+10857: def trim_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_9trim_span_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_9trim_span_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_9trim_span___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_9trim_span___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.trim_span.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
10858: self: Memory,
10859: ) -> OpenInterval:
10860: r"""tuple of int: Trimming span addresses.
10861:
10862: A :obj:`tuple` holding :attr:`trim_start` and :attr:`trim_endex`.
10863: """
10864:
+10865: return Memory_GetTrimSpan(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_GetTrimSpan(__pyx_v_self->_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10866:
10867: @trim_span.setter
+10868: def trim_span(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_9trim_span_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_span); /*proto*/ static int __pyx_pw_11cbytesparse_1c_6Memory_9trim_span_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_span) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_9trim_span_2__set__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_trim_span)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_9trim_span_2__set__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_trim_span) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.trim_span.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
10869: self: Memory,
10870: trim_span: OpenInterval,
10871: ) -> None:
10872:
+10873: Memory_SetTrimSpan(self._, trim_span)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_SetTrimSpan(__pyx_v_self->_, __pyx_v_trim_span); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10873, __pyx_L1_error)
10874:
10875: @property
+10876: def trim_start(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_10trim_start_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_10trim_start_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_10trim_start___get__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_10trim_start___get__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.Memory.trim_start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
10877: self: Memory,
10878: ) -> Optional[Address]:
10879: r"""int: Trimming start address.
10880:
10881: Any data before this address is automatically discarded.
10882: Disabled if ``None``.
10883: """
10884:
+10885: return Memory_GetTrimStart(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_GetTrimStart(__pyx_v_self->_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
10886:
10887: @trim_start.setter
+10888: def trim_start(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_6Memory_10trim_start_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_start); /*proto*/ static int __pyx_pw_11cbytesparse_1c_6Memory_10trim_start_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_start) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_10trim_start_2__set__(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_trim_start)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_6Memory_10trim_start_2__set__(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_trim_start) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.trim_start.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
10889: self: Memory,
10890: trim_start: Address,
10891: ) -> None:
10892:
+10893: Memory_SetTrimStart(self._, trim_start)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_SetTrimStart(__pyx_v_self->_, __pyx_v_trim_start); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10893, __pyx_L1_error)
10894:
+10895: def update(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_226update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_225update[] = "Memory.update(self: Memory, data: Union[AddressValueMapping, Iterable[Tuple[Address, Value]], Mapping[Address, Union[Value, AnyBytes]], ImmutableMemory], clear: bool = False, **kwargs: Any) -> None\nUpdates data.\n\n Arguments:\n data (iterable):\n Data to update with.\n Can be either another memory, an (address, value)\n mapping, or an iterable of (address, value) pairs.\n\n clear (bool):\n Clears the target range before writing data.\n Useful only if `data` is a :obj:`Memory` with empty spaces.\n\n See Also:\n :meth:`update_backup`\n :meth:`update_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | | | | | |[A | B | C]| | | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[x | y]| | |[A | B | C]| | | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | |[x | y | @]| |[A | ? | C]| | | | |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory()\n >>> memory.update(Memory.from_bytes(b'ABC', 5))\n >>> memory.to_blocks()\n [[5, b'ABC']]\n >>> memory.update({1: b'x', 2: ord('y')})\n >>> memory.to_blocks()\n [[1, b'xy'], [5, b'ABC']]\n >>> memory.update([(6, b'?'), (3, ord('@'))])\n >>> memory.to_blocks()\n [[1, b'xy@'], [5, b'A?C']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_226update = {"update", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_226update, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_225update}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_226update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_data = 0; PyObject *__pyx_v_clear = 0; PyObject *__pyx_v_kwargs = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update (wrapper)", 0); __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL; __Pyx_GOTREF(__pyx_v_kwargs); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_clear,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_225update(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_clear, PyObject *__pyx_v_kwargs) { Memory_ *__pyx_v_memory; PyObject *__pyx_v_address = NULL; PyObject *__pyx_v_value = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update", 0); __Pyx_INCREF(__pyx_v_data); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("cbytesparse.c.Memory.update", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XDECREF(__pyx_v_value); __Pyx_XDECREF(__pyx_v_data); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__261 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_clear, __pyx_n_s_kwargs, __pyx_n_s_memory, __pyx_n_s_address, __pyx_n_s_value); if (unlikely(!__pyx_tuple__261)) __PYX_ERR(0, 10895, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__261); __Pyx_GIVEREF(__pyx_tuple__261); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10895, __pyx_L1_error) /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_226update, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_update, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__262)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_update, __pyx_t_9) < 0) __PYX_ERR(0, 10895, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__262 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__261, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_update, 10895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__262)) __PYX_ERR(0, 10895, __pyx_L1_error)
10896: self: Memory,
+10897: data: Union[AddressValueMapping,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Union); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AddressValueMapping); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); /* … */ __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_9); __pyx_t_12 = 0; __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_t_9) < 0) __PYX_ERR(0, 10895, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+10898: Iterable[Tuple[Address, Value]],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Address); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_11); __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+10899: Mapping[Address, Union[Value, AnyBytes]],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1); __pyx_t_10 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1); __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+10900: ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9);
+10901: clear: bool = False,
values[1] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_clear); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "update") < 0)) __PYX_ERR(0, 10895, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_data = values[0]; __pyx_v_clear = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("update", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10895, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; __Pyx_AddTraceback("cbytesparse.c.Memory.update", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_225update(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_data, __pyx_v_clear, __pyx_v_kwargs); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_clear, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 10895, __pyx_L1_error)
+10902: **kwargs: Any, # string keys cannot become addresses
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Any); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_kwargs, __pyx_t_9) < 0) __PYX_ERR(0, 10895, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+10903: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10895, __pyx_L1_error)
10904: r"""Updates data.
10905:
10906: Arguments:
10907: data (iterable):
10908: Data to update with.
10909: Can be either another memory, an (address, value)
10910: mapping, or an iterable of (address, value) pairs.
10911:
10912: clear (bool):
10913: Clears the target range before writing data.
10914: Useful only if `data` is a :obj:`Memory` with empty spaces.
10915:
10916: See Also:
10917: :meth:`update_backup`
10918: :meth:`update_restore`
10919:
10920: Examples:
10921: >>> from cbytesparse.c import Memory
10922:
10923: +---+---+---+---+---+---+---+---+---+---+---+---+
10924: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
10925: +===+===+===+===+===+===+===+===+===+===+===+===+
10926: | | | | | |[A | B | C]| | | | |
10927: +---+---+---+---+---+---+---+---+---+---+---+---+
10928: | |[x | y]| | |[A | B | C]| | | | |
10929: +---+---+---+---+---+---+---+---+---+---+---+---+
10930: | |[x | y | @]| |[A | ? | C]| | | | |
10931: +---+---+---+---+---+---+---+---+---+---+---+---+
10932:
10933: >>> memory = Memory()
10934: >>> memory.update(Memory.from_bytes(b'ABC', 5))
10935: >>> memory.to_blocks()
10936: [[5, b'ABC']]
10937: >>> memory.update({1: b'x', 2: ord('y')})
10938: >>> memory.to_blocks()
10939: [[1, b'xy'], [5, b'ABC']]
10940: >>> memory.update([(6, b'?'), (3, ord('@'))])
10941: >>> memory.to_blocks()
10942: [[1, b'xy@'], [5, b'A?C']]
10943: """
10944: cdef:
+10945: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
10946:
+10947: if kwargs:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 10947, __pyx_L1_error) if (unlikely(__pyx_t_2)) { /* … */ }
+10948: raise KeyError('cannot convert kwargs.keys() into addresses')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10948, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 10948, __pyx_L1_error) /* … */ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_cannot_convert_kwargs_keys_into); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 10948, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40);
10949:
+10950: if isinstance(data, ImmutableMemory):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_IsInstance(__pyx_v_data, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10950, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = (__pyx_t_2 != 0); if (__pyx_t_4) { /* … */ goto __pyx_L4; }
+10951: Memory_Write(memory, 0, data, clear)
__pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_clear); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 10951, __pyx_L1_error) __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_data, __pyx_t_4); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10951, __pyx_L1_error)
10952: else:
+10953: if isinstance(data, Mapping):
/*else*/ { __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10953, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_IsInstance(__pyx_v_data, __pyx_t_3); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 10953, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = (__pyx_t_4 != 0); if (__pyx_t_2) { /* … */ }
+10954: data = data.items()
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10954, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10954, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3); __pyx_t_3 = 0;
+10955: for address, value in data:
if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) { __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10955, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_9)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 10955, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 10955, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } } else { __pyx_t_6 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 10955, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_6); } if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) { PyObject* sequence = __pyx_t_6; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 10955, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_7 = PyList_GET_ITEM(sequence, 0); __pyx_t_10 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_10); #else __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; index = 0; __pyx_t_7 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_10); if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 10955, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 10955, __pyx_L1_error) __pyx_L9_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_address, __pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_10); __pyx_t_10 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L4:;
+10956: Memory_Poke(memory, address, value)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Poke(__pyx_v_memory, __pyx_v_address, __pyx_v_value); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 10956, __pyx_L1_error)
10957:
+10958: def update_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_228update_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_227update_backup[] = "Memory.update_backup(self: Memory, data: Union[AddressValueMapping, Iterable[Tuple[Address, Value]], ImmutableMemory], clear: bool = False, **kwargs: Any) -> Union[AddressValueMapping, ImmutableMemory]\nBackups an `update()` operation.\n\n Arguments:\n data (iterable):\n Data to update with.\n Can be either another memory, an (address, value)\n mapping, or an iterable of (address, value) pairs.\n\n clear (bool):\n Clears the target range before writing data.\n Useful only if `data` is a :obj:`Memory` with empty spaces.\n\n Returns:\n list of :obj:`ImmutableMemory`: Backup memory regions.\n\n See Also:\n :meth:`update`\n :meth:`update_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_228update_backup = {"update_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_228update_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_227update_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_228update_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_data = 0; PyObject *__pyx_v_clear = 0; PyObject *__pyx_v_kwargs = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_backup (wrapper)", 0); __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL; __Pyx_GOTREF(__pyx_v_kwargs); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_clear,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_227update_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_clear, PyObject *__pyx_v_kwargs) { Memory_ *__pyx_v_memory; PyObject *__pyx_v_backups = NULL; PyObject *__pyx_7genexpr__pyx_v_address = NULL; PyObject *__pyx_8genexpr1__pyx_v_address = NULL; CYTHON_UNUSED PyObject *__pyx_8genexpr1__pyx_v__ = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("cbytesparse.c.Memory.update_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_backups); __Pyx_XDECREF(__pyx_7genexpr__pyx_v_address); __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_address); __Pyx_XDECREF(__pyx_8genexpr1__pyx_v__); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__264 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_clear, __pyx_n_s_kwargs, __pyx_n_s_memory, __pyx_n_s_backups, __pyx_n_s_address, __pyx_n_s_address, __pyx_n_s__263); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(0, 10958, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__264); __Pyx_GIVEREF(__pyx_tuple__264); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10958, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_228update_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_update_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__265)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_update_backup, __pyx_t_6) < 0) __PYX_ERR(0, 10958, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(3, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_update_backup, 10958, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(0, 10958, __pyx_L1_error)
10959: self: Memory,
+10960: data: Union[AddressValueMapping, Iterable[Tuple[Address, Value]], ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_AddressValueMapping); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Address); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_12); __pyx_t_5 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_12); __pyx_t_11 = 0; __pyx_t_7 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_data, __pyx_t_12) < 0) __PYX_ERR(0, 10958, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+10961: clear: bool = False,
values[1] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_clear); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "update_backup") < 0)) __PYX_ERR(0, 10958, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_data = values[0]; __pyx_v_clear = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("update_backup", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 10958, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; __Pyx_AddTraceback("cbytesparse.c.Memory.update_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_227update_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_data, __pyx_v_clear, __pyx_v_kwargs); /* … */ if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_clear, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 10958, __pyx_L1_error)
+10962: **kwargs: Any, # string keys cannot become addresses
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Any); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_kwargs, __pyx_t_12) < 0) __PYX_ERR(0, 10958, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+10963: ) -> Union[AddressValueMapping, ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Union); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_AddressValueMapping); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6); __pyx_t_13 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 10958, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10964: r"""Backups an `update()` operation.
10965:
10966: Arguments:
10967: data (iterable):
10968: Data to update with.
10969: Can be either another memory, an (address, value)
10970: mapping, or an iterable of (address, value) pairs.
10971:
10972: clear (bool):
10973: Clears the target range before writing data.
10974: Useful only if `data` is a :obj:`Memory` with empty spaces.
10975:
10976: Returns:
10977: list of :obj:`ImmutableMemory`: Backup memory regions.
10978:
10979: See Also:
10980: :meth:`update`
10981: :meth:`update_restore`
10982: """
10983: cdef:
+10984: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
10985:
+10986: if kwargs:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 10986, __pyx_L1_error) if (unlikely(__pyx_t_2)) { /* … */ }
+10987: raise KeyError('cannot convert kwargs.keys() into addresses')
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 10987, __pyx_L1_error)
10988:
+10989: if isinstance(data, ImmutableMemory):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_IsInstance(__pyx_v_data, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10989, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = (__pyx_t_2 != 0); if (__pyx_t_4) { /* … */ }
+10990: return self.write_backup(0, data, clear=clear)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_write_backup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_0); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_data); __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_clear, __pyx_v_clear) < 0) __PYX_ERR(0, 10990, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
10991: else:
+10992: if isinstance(data, Mapping):
/*else*/ { __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyObject_IsInstance(__pyx_v_data, __pyx_t_7); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 10992, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_2 = (__pyx_t_4 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+10993: backups = {address: Memory_Peek(memory, address) for address in data.keys()}
{ /* enter inner scope */ __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10993, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = 0; if (unlikely(__pyx_v_data == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys"); __PYX_ERR(0, 10993, __pyx_L8_error) } __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_data, 0, __pyx_n_s_keys, (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10993, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = __pyx_t_5; __pyx_t_5 = 0; while (1) { __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_9, &__pyx_t_8, &__pyx_t_5, NULL, NULL, __pyx_t_10); if (unlikely(__pyx_t_11 == 0)) break; if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 10993, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_address, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Peek(__pyx_v_memory, __pyx_7genexpr__pyx_v_address); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10993, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(PyDict_SetItem(__pyx_t_7, (PyObject*)__pyx_7genexpr__pyx_v_address, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 10993, __pyx_L8_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_address); __pyx_7genexpr__pyx_v_address = 0; goto __pyx_L11_exit_scope; __pyx_L8_error:; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_address); __pyx_7genexpr__pyx_v_address = 0; goto __pyx_L1_error; __pyx_L11_exit_scope:; } /* exit inner scope */ __pyx_v_backups = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
10994: else:
+10995: backups = {address: Memory_Peek(memory, address) for address, _ in data}
/*else*/ { { /* enter inner scope */ __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_7); if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) { __pyx_t_6 = __pyx_v_data; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0; __pyx_t_12 = NULL; } else { __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 10995, __pyx_L14_error) } for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 10995, __pyx_L14_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 10995, __pyx_L14_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 10995, __pyx_L14_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 10995, __pyx_L14_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_13 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_13); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_13); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_14 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_15 = Py_TYPE(__pyx_t_14)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_3)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_13 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_13)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_13); if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_14), 2) < 0) __PYX_ERR(0, 10995, __pyx_L14_error) __pyx_t_15 = NULL; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L18_unpacking_done; __pyx_L17_unpacking_failed:; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_15 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 10995, __pyx_L14_error) __pyx_L18_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_address, __pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v__, __pyx_t_13); __pyx_t_13 = 0; __pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_Peek(__pyx_v_memory, __pyx_8genexpr1__pyx_v_address); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(PyDict_SetItem(__pyx_t_7, (PyObject*)__pyx_8genexpr1__pyx_v_address, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 10995, __pyx_L14_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_8genexpr1__pyx_v__); __pyx_8genexpr1__pyx_v__ = 0; __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_address); __pyx_8genexpr1__pyx_v_address = 0; goto __pyx_L19_exit_scope; __pyx_L14_error:; __Pyx_XDECREF(__pyx_8genexpr1__pyx_v__); __pyx_8genexpr1__pyx_v__ = 0; __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_address); __pyx_8genexpr1__pyx_v_address = 0; goto __pyx_L1_error; __pyx_L19_exit_scope:; } /* exit inner scope */ __pyx_v_backups = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; } __pyx_L5:;
+10996: return backups
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_backups); __pyx_r = __pyx_v_backups; goto __pyx_L0; }
10997:
+10998: def update_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_230update_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backups); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_229update_restore[] = "Memory.update_restore(self: Memory, backups: Union[AddressValueMapping, List[ImmutableMemory]]) -> None\nRestores an `update()` operation.\n\n Arguments:\n backups (list of :obj:`ImmutableMemory`):\n Backup memory regions to restore.\n\n See Also:\n :meth:`update`\n :meth:`update_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_230update_restore = {"update_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_230update_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_229update_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_230update_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backups) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_229update_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_backups)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_229update_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_backups) { Memory_ *__pyx_v_memory; PyObject *__pyx_v_backup = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.Memory.update_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_backup); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__266 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_backups, __pyx_n_s_memory, __pyx_n_s_backup); if (unlikely(!__pyx_tuple__266)) __PYX_ERR(0, 10998, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__266); __Pyx_GIVEREF(__pyx_tuple__266); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 10998, __pyx_L1_error) /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_230update_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_update_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__267)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_update_restore, __pyx_t_11) < 0) __PYX_ERR(0, 10998, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__266, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_update_restore, 10998, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(0, 10998, __pyx_L1_error)
10999: self: Memory,
+11000: backups: Union[AddressValueMapping, List[ImmutableMemory]],
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Union); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_AddressValueMapping); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_List); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_11); __pyx_t_7 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_backups, __pyx_t_11) < 0) __PYX_ERR(0, 10998, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11001: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 10998, __pyx_L1_error)
11002: r"""Restores an `update()` operation.
11003:
11004: Arguments:
11005: backups (list of :obj:`ImmutableMemory`):
11006: Backup memory regions to restore.
11007:
11008: See Also:
11009: :meth:`update`
11010: :meth:`update_backup`
11011: """
11012: cdef:
+11013: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
11014:
+11015: if isinstance(backups, list):
__pyx_t_2 = PyList_Check(__pyx_v_backups);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+11016: for backup in backups:
if (likely(PyList_CheckExact(__pyx_v_backups)) || PyTuple_CheckExact(__pyx_v_backups)) { __pyx_t_4 = __pyx_v_backups; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_backups); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11016, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 11016, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 11016, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 11016, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } __Pyx_XDECREF_SET(__pyx_v_backup, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+11017: Memory_Write(memory, 0, backup, True)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_8 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11017, __pyx_L1_error)
11018: else:
+11019: self.update(backups)
/*else*/ { __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11019, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_backups) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_backups); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11019, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L3:;
11020:
+11021: def validate(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_232validate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_231validate[] = "Memory.validate(self: Memory) -> None\nValidates internal structure.\n\n It makes sure that all the allocated blocks are sorted by block start\n address, and that all the blocks are non-overlapping.\n\n Raises:\n :obj:`ValueError`: Invalid data detected (see exception message).\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_232validate = {"validate", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_232validate, METH_NOARGS, __pyx_doc_11cbytesparse_1c_6Memory_231validate}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_232validate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("validate (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_231validate(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_231validate(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("validate", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.validate", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_235generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__268 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__268)) __PYX_ERR(0, 11021, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__268); __Pyx_GIVEREF(__pyx_tuple__268); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 11021, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_232validate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_validate, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__269)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_validate, __pyx_t_6) < 0) __PYX_ERR(0, 11021, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__268, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_validate, 11021, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(0, 11021, __pyx_L1_error)
11022: self: Memory,
+11023: ) -> None:
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11021, __pyx_L1_error)
11024: r"""Validates internal structure.
11025:
11026: It makes sure that all the allocated blocks are sorted by block start
11027: address, and that all the blocks are non-overlapping.
11028:
11029: Raises:
11030: :obj:`ValueError`: Invalid data detected (see exception message).
11031: """
11032:
+11033: Memory_Validate(self._)
__pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_Validate(__pyx_v_self->_); if (unlikely(__pyx_t_1 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11033, __pyx_L1_error)
11034:
+11035: def values(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_234values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_233values[] = "Memory.values(self: Memory, start: Optional[Address] = None, endex: Optional[Union[Address, EllipsisType]] = None, pattern: Optional[Union[AnyBytes, Value]] = None) -> Iterator[Optional[Value]]\nIterates over values.\n\n Iterates over values, from `start` to `endex`.\n Implemets the interface of :obj:`dict`.\n\n Arguments:\n start (int):\n Inclusive start address.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address.\n If ``None``, :attr:`endex` is considered.\n If ``Ellipsis``, the iterator is infinite.\n\n pattern (items):\n Pattern of values to fill emptiness.\n\n Yields:\n int: Range values.\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | | | | A | B | C | D | A | | |\n +---+---+---+---+---+---+---+---+---+---+\n | | | | 65| 66| 67| 68| 65| | |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> from itertools import islice\n >>> memory = Memory()\n >>> list(memory.values(endex=8))\n [None, None, None, None, None, None, None, None]\n >>> list(memory.values(3, 8))\n [None, None, None, None, None]\n >>> list(islice(memory.values(3, ...), 7))\n [None, None, None, None, None, None, None]\n >>> list(memory.values(3, 8, b'ABCD'))\n [65, 66, 67, 68, 65]\n\n ~~~\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]|<1 | 2>|[x | y | z]| |\n +---+---+---+--""-+---+---+---+---+---+---+\n | | 65| 66| 67| | |120|121|122| |\n +---+---+---+---+---+---+---+---+---+---+\n | | 65| 66| 67| 49| 50|120|121|122| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> list(memory.values())\n [65, 66, 67, None, None, 120, 121, 122]\n >>> list(memory.values(3, 8))\n [67, None, None, 120, 121]\n >>> list(islice(memory.values(3, ...), 7))\n [67, None, None, 120, 121, 122, None]\n >>> list(memory.values(3, 8, b'0123'))\n [67, 49, 50, 120, 121]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_234values = {"values", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_234values, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_233values}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_234values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("values (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_233values(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_11_values *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("values", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_11_values *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_11_values(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_11_values, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_11_values *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 11035, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_pattern = __pyx_v_pattern; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pattern); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_6Memory_235generator11, __pyx_codeobj__41, (PyObject *) __pyx_cur_scope, __pyx_n_s_values, __pyx_n_s_Memory_values, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_6Memory_235generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("values", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11035, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__270 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_start_2, __pyx_n_s_endex_2, __pyx_n_s_rover, __pyx_n_s_pattern_value, __pyx_n_s_pattern_view, __pyx_n_s_pattern_size, __pyx_n_s_pattern_data); if (unlikely(!__pyx_tuple__270)) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__270); __Pyx_GIVEREF(__pyx_tuple__270); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 11035, __pyx_L1_error) /* … */ __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_234values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_values, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_values, __pyx_t_12) < 0) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(4, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__270, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_values, 11035, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 11035, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_11_values { PyObject_HEAD PyObject *__pyx_v_endex; addr_t __pyx_v_endex_; PyObject *__pyx_v_pattern; byte_t const *__pyx_v_pattern_data; size_t __pyx_v_pattern_size; byte_t __pyx_v_pattern_value; __Pyx_memviewslice __pyx_v_pattern_view; Rover_ *__pyx_v_rover; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self; PyObject *__pyx_v_start; addr_t __pyx_v_start_; };
11036: self: Memory,
+11037: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11038: endex: Optional[Union[Address, EllipsisType]] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Union); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_7); __pyx_t_11 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_12) < 0) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+11039: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "values") < 0)) __PYX_ERR(0, 11035, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("values", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11035, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.values", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_233values(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_13); __pyx_t_9 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_pattern, __pyx_t_11) < 0) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11040: ) -> Iterator[Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_12) < 0) __PYX_ERR(0, 11035, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
11041: r"""Iterates over values.
11042:
11043: Iterates over values, from `start` to `endex`.
11044: Implemets the interface of :obj:`dict`.
11045:
11046: Arguments:
11047: start (int):
11048: Inclusive start address.
11049: If ``None``, :attr:`start` is considered.
11050:
11051: endex (int):
11052: Exclusive end address.
11053: If ``None``, :attr:`endex` is considered.
11054: If ``Ellipsis``, the iterator is infinite.
11055:
11056: pattern (items):
11057: Pattern of values to fill emptiness.
11058:
11059: Yields:
11060: int: Range values.
11061:
11062: Examples:
11063: >>> from cbytesparse.c import Memory
11064:
11065: +---+---+---+---+---+---+---+---+---+---+
11066: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
11067: +===+===+===+===+===+===+===+===+===+===+
11068: | | | | A | B | C | D | A | | |
11069: +---+---+---+---+---+---+---+---+---+---+
11070: | | | | 65| 66| 67| 68| 65| | |
11071: +---+---+---+---+---+---+---+---+---+---+
11072:
11073: >>> from itertools import islice
11074: >>> memory = Memory()
11075: >>> list(memory.values(endex=8))
11076: [None, None, None, None, None, None, None, None]
11077: >>> list(memory.values(3, 8))
11078: [None, None, None, None, None]
11079: >>> list(islice(memory.values(3, ...), 7))
11080: [None, None, None, None, None, None, None]
11081: >>> list(memory.values(3, 8, b'ABCD'))
11082: [65, 66, 67, 68, 65]
11083:
11084: ~~~
11085:
11086: +---+---+---+---+---+---+---+---+---+---+
11087: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
11088: +===+===+===+===+===+===+===+===+===+===+
11089: | |[A | B | C]|<1 | 2>|[x | y | z]| |
11090: +---+---+---+---+---+---+---+---+---+---+
11091: | | 65| 66| 67| | |120|121|122| |
11092: +---+---+---+---+---+---+---+---+---+---+
11093: | | 65| 66| 67| 49| 50|120|121|122| |
11094: +---+---+---+---+---+---+---+---+---+---+
11095:
11096: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
11097: >>> list(memory.values())
11098: [65, 66, 67, None, None, 120, 121, 122]
11099: >>> list(memory.values(3, 8))
11100: [67, None, None, 120, 121]
11101: >>> list(islice(memory.values(3, ...), 7))
11102: [67, None, None, 120, 121, 122, None]
11103: >>> list(memory.values(3, 8, b'0123'))
11104: [67, 49, 50, 120, 121]
11105: """
11106: cdef:
11107: addr_t start_
11108: addr_t endex_
+11109: Rover_* rover = NULL
__pyx_cur_scope->__pyx_v_rover = NULL;
11110: byte_t pattern_value
11111: const byte_t[:] pattern_view
+11112: size_t pattern_size = 0
__pyx_cur_scope->__pyx_v_pattern_size = 0;
+11113: const byte_t* pattern_data = NULL
__pyx_cur_scope->__pyx_v_pattern_data = NULL;
11114:
+11115: if start is None:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_start == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+11116: start_ = Memory_Start(self._)
__pyx_cur_scope->__pyx_v_start_ = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_cur_scope->__pyx_v_self->_);
11117: else:
+11118: start_ = <addr_t>start
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_start); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11118, __pyx_L1_error) __pyx_cur_scope->__pyx_v_start_ = ((addr_t)__pyx_t_3); } __pyx_L4:;
11119:
+11120: if endex is None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+11121: endex_ = Memory_Endex(self._)
__pyx_cur_scope->__pyx_v_endex_ = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_cur_scope->__pyx_v_self->_);
+11122: elif endex is Ellipsis:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L5; }
+11123: endex_ = ADDR_MAX
__pyx_cur_scope->__pyx_v_endex_ = ADDR_MAX;
11124: else:
+11125: endex_ = <addr_t>endex
/*else*/ { __pyx_t_3 = __Pyx_PyInt_As_uint_fast64_t(__pyx_cur_scope->__pyx_v_endex); if (unlikely((__pyx_t_3 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11125, __pyx_L1_error) __pyx_cur_scope->__pyx_v_endex_ = ((addr_t)__pyx_t_3); } __pyx_L5:;
11126:
+11127: if pattern is not None:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_pattern != Py_None); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+11128: if isinstance(pattern, int):
__pyx_t_1 = PyInt_Check(__pyx_cur_scope->__pyx_v_pattern);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L7;
}
+11129: pattern_value = <byte_t>pattern
__pyx_t_4 = __Pyx_PyInt_As_byte_t(__pyx_cur_scope->__pyx_v_pattern); if (unlikely((__pyx_t_4 == ((byte_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11129, __pyx_L1_error) __pyx_cur_scope->__pyx_v_pattern_value = ((byte_t)__pyx_t_4);
+11130: pattern_size = 1
__pyx_cur_scope->__pyx_v_pattern_size = 1;
+11131: pattern_data = &pattern_value
__pyx_cur_scope->__pyx_v_pattern_data = (&__pyx_cur_scope->__pyx_v_pattern_value);
11132: else:
+11133: try:
/*else*/ { { /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L13_try_end; __pyx_L8_error:; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); /* … */ __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); goto __pyx_L1_error; __pyx_L9_exception_handled:; __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_L13_try_end:; }
+11134: pattern_view = pattern
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_cur_scope->__pyx_v_pattern, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 11134, __pyx_L8_error) __pyx_cur_scope->__pyx_v_pattern_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+11135: except TypeError:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("cbytesparse.c.Memory.values", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(0, 11135, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_12);
+11136: pattern_view = bytes(pattern)
__pyx_t_13 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_cur_scope->__pyx_v_pattern); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11136, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_t_13, 0); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 11136, __pyx_L10_except_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_cur_scope->__pyx_v_pattern_view, 1); __pyx_cur_scope->__pyx_v_pattern_view = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L9_exception_handled; } goto __pyx_L10_except_error; __pyx_L10_except_error:;
11137: with cython.boundscheck(False):
+11138: pattern_size = len(pattern_view)
__pyx_t_14 = __Pyx_MemoryView_Len(__pyx_cur_scope->__pyx_v_pattern_view);
__pyx_cur_scope->__pyx_v_pattern_size = __pyx_t_14;
+11139: pattern_data = &pattern_view[0]
__pyx_t_15 = 0; if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_cur_scope->__pyx_v_pattern_view.shape[0]; __pyx_cur_scope->__pyx_v_pattern_data = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_cur_scope->__pyx_v_pattern_view.data + __pyx_t_15 * __pyx_cur_scope->__pyx_v_pattern_view.strides[0]) )))); } __pyx_L7:;
11140:
+11141: try:
/*try:*/ {
+11142: rover = Rover_Create(self._, start_, endex_, pattern_size, pattern_data, True, endex is Ellipsis)
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis);
__pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Create(__pyx_cur_scope->__pyx_v_self->_, __pyx_cur_scope->__pyx_v_start_, __pyx_cur_scope->__pyx_v_endex_, __pyx_cur_scope->__pyx_v_pattern_size, __pyx_cur_scope->__pyx_v_pattern_data, 1, __pyx_t_2); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL))) __PYX_ERR(0, 11142, __pyx_L17_error)
__pyx_cur_scope->__pyx_v_rover = __pyx_t_16;
+11143: while Rover_HasNext(rover):
while (1) { __pyx_t_2 = (__pyx_f_11cbytesparse_1c_Rover_HasNext(__pyx_cur_scope->__pyx_v_rover) != 0); if (!__pyx_t_2) break;
+11144: yield Rover_Next(rover)
__pyx_t_12 = __pyx_f_11cbytesparse_1c_Rover_Next(__pyx_cur_scope->__pyx_v_rover); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11144, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_12); __pyx_r = __pyx_t_12; __pyx_t_12 = 0; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L21_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11144, __pyx_L17_error) } }
11145: finally:
+11146: rover = Rover_Free(rover)
/*finally:*/ { /*normal exit:*/{ __pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_cur_scope->__pyx_v_rover); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 11146, __pyx_L1_error) __pyx_cur_scope->__pyx_v_rover = __pyx_t_16; goto __pyx_L18; } __pyx_L17_error:; /*exception exit:*/{ __Pyx_PyThreadState_assign __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __pyx_t_16 = __pyx_f_11cbytesparse_1c_Rover_Free(__pyx_cur_scope->__pyx_v_rover); if (unlikely(__pyx_t_16 == ((Rover_ *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 11146, __pyx_L23_error) __pyx_cur_scope->__pyx_v_rover = __pyx_t_16; } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L1_error; __pyx_L23_error:; if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; goto __pyx_L1_error; } __pyx_L18:; } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
11147:
+11148: def view(
/* Python wrapper */ static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_pw_11cbytesparse_1c_6Memory_237view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_236view[] = "Memory.view(self: Memory, start: Optional[Address] = None, endex: Optional[Address] = None) -> BlockView\nCreates a view over a range.\n\n Creates a memory view over the selected address range.\n Data within the range is required to be contiguous.\n\n Arguments:\n start (int):\n Inclusive start of the viewed range.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end of the viewed range.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n :obj:`memoryview`: A view of the selected address range.\n\n Raises:\n :obj:`ValueError`: Data not contiguous (see :attr:`contiguous`).\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|\n +===+===+===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C | D]| |[$]| |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])\n >>> bytes(memory.view(2, 5))\n b'BCD'\n >>> bytes(memory.view(9, 10))\n b'y'\n >>> memory.view()\n Traceback (most recent call last):\n ...\n ValueError: non-contiguous data within range\n >>> memory.view(0, 6)\n Traceback (most recent call last):\n ...\n ValueError: non-contiguous data within range\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_237view = {"view", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_237view, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_236view}; static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_pw_11cbytesparse_1c_6Memory_237view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("view (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_pf_11cbytesparse_1c_6Memory_236view(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { Memory_ const *__pyx_v_memory; addr_t __pyx_v_start_; addr_t __pyx_v_endex_; struct __pyx_obj_11cbytesparse_1c_BlockView *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("view", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.view", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__271 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_memory, __pyx_n_s_start_2, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__271)) __PYX_ERR(0, 11148, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__271); __Pyx_GIVEREF(__pyx_tuple__271); /* … */ __pyx_t_12 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 11148, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_237view, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_view, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__272)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_view, __pyx_t_6) < 0) __PYX_ERR(0, 11148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__272 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__271, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_view, 11148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__272)) __PYX_ERR(0, 11148, __pyx_L1_error)
11149: self: Memory,
+11150: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11151: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(0, 11148, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("view", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11148, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.view", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_236view(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 11148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_n_u_BlockView) < 0) __PYX_ERR(0, 11148, __pyx_L1_error)
11152: ) -> BlockView:
11153: r"""Creates a view over a range.
11154:
11155: Creates a memory view over the selected address range.
11156: Data within the range is required to be contiguous.
11157:
11158: Arguments:
11159: start (int):
11160: Inclusive start of the viewed range.
11161: If ``None``, :attr:`start` is considered.
11162:
11163: endex (int):
11164: Exclusive end of the viewed range.
11165: If ``None``, :attr:`endex` is considered.
11166:
11167: Returns:
11168: :obj:`memoryview`: A view of the selected address range.
11169:
11170: Raises:
11171: :obj:`ValueError`: Data not contiguous (see :attr:`contiguous`).
11172:
11173: Examples:
11174: >>> from cbytesparse.c import Memory
11175:
11176: +---+---+---+---+---+---+---+---+---+---+---+---+
11177: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
11178: +===+===+===+===+===+===+===+===+===+===+===+===+
11179: | |[A | B | C | D]| |[$]| |[x | y | z]| |
11180: +---+---+---+---+---+---+---+---+---+---+---+---+
11181:
11182: >>> memory = Memory.from_blocks([[1, b'ABCD'], [6, b'$'], [8, b'xyz']])
11183: >>> bytes(memory.view(2, 5))
11184: b'BCD'
11185: >>> bytes(memory.view(9, 10))
11186: b'y'
11187: >>> memory.view()
11188: Traceback (most recent call last):
11189: ...
11190: ValueError: non-contiguous data within range
11191: >>> memory.view(0, 6)
11192: Traceback (most recent call last):
11193: ...
11194: ValueError: non-contiguous data within range
11195: """
11196: cdef:
+11197: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
+11198: addr_t start_ = Memory_Start(memory) if start is None else <addr_t>start
__pyx_t_3 = (__pyx_v_start == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11198, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_start_ = __pyx_t_2;
+11199: addr_t endex_ = Memory_Endex(memory) if endex is None else <addr_t>endex
__pyx_t_3 = (__pyx_v_endex == Py_None); if ((__pyx_t_3 != 0)) { __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_memory); } else { __pyx_t_4 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_endex); if (unlikely((__pyx_t_4 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11199, __pyx_L1_error) __pyx_t_2 = ((addr_t)__pyx_t_4); } __pyx_v_endex_ = __pyx_t_2;
11200:
+11201: return Memory_View_(memory, start_, endex_)
__Pyx_XDECREF(((PyObject *)__pyx_r)); __pyx_t_5 = ((PyObject *)__pyx_f_11cbytesparse_1c_Memory_View_(__pyx_v_memory, __pyx_v_start_, __pyx_v_endex_)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = ((struct __pyx_obj_11cbytesparse_1c_BlockView *)__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L0;
11202:
+11203: def write(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_239write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_238write[] = "Memory.write(self: Memory, address: Address, data: Union[AnyBytes, Value, ImmutableMemory], clear: bool = False) -> None\nWrites data.\n\n Arguments:\n address (int):\n Address where to start writing data.\n\n data (bytes):\n Data to write.\n\n clear (bool):\n Clears the target range before writing data.\n Useful only if `data` is a :obj:`ImmutableMemory` with empty spaces.\n\n See Also:\n :meth:`write_backup`\n :meth:`write_restore`\n\n Examples:\n >>> from cbytesparse.c import Memory\n\n +---+---+---+---+---+---+---+---+---+---+\n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n +===+===+===+===+===+===+===+===+===+===+\n | |[A | B | C]| | |[x | y | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n | |[A | B | C]| |[1 | 2 | 3 | z]| |\n +---+---+---+---+---+---+---+---+---+---+\n\n >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])\n >>> memory.write(5, b'123')\n >>> memory.to_blocks()\n [[1, b'ABC'], [5, b'123z']]\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_239write = {"write", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_239write, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_238write}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_239write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_v_clear = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,&__pyx_n_s_clear,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_238write(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data, PyObject *__pyx_v_clear) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.write", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__273 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data, __pyx_n_s_clear); if (unlikely(!__pyx_tuple__273)) __PYX_ERR(0, 11203, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__273); __Pyx_GIVEREF(__pyx_tuple__273); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 11203, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_239write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_write, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__274)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_write, __pyx_t_13) < 0) __PYX_ERR(0, 11203, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__274 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__273, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_write, 11203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__274)) __PYX_ERR(0, 11203, __pyx_L1_error)
11204: self: Memory,
+11205: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_12) < 0) __PYX_ERR(0, 11203, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+11206: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Union); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_13); __pyx_t_7 = 0; __pyx_t_11 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_t_13) < 0) __PYX_ERR(0, 11203, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+11207: clear: bool = False,
values[2] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, 1); __PYX_ERR(0, 11203, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_clear); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 11203, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_data = values[1]; __pyx_v_clear = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11203, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.write", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_238write(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_data, __pyx_v_clear); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_clear, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11203, __pyx_L1_error)
+11208: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11203, __pyx_L1_error)
11209: r"""Writes data.
11210:
11211: Arguments:
11212: address (int):
11213: Address where to start writing data.
11214:
11215: data (bytes):
11216: Data to write.
11217:
11218: clear (bool):
11219: Clears the target range before writing data.
11220: Useful only if `data` is a :obj:`ImmutableMemory` with empty spaces.
11221:
11222: See Also:
11223: :meth:`write_backup`
11224: :meth:`write_restore`
11225:
11226: Examples:
11227: >>> from cbytesparse.c import Memory
11228:
11229: +---+---+---+---+---+---+---+---+---+---+
11230: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
11231: +===+===+===+===+===+===+===+===+===+===+
11232: | |[A | B | C]| | |[x | y | z]| |
11233: +---+---+---+---+---+---+---+---+---+---+
11234: | |[A | B | C]| |[1 | 2 | 3 | z]| |
11235: +---+---+---+---+---+---+---+---+---+---+
11236:
11237: >>> memory = Memory.from_blocks([[1, b'ABC'], [6, b'xyz']])
11238: >>> memory.write(5, b'123')
11239: >>> memory.to_blocks()
11240: [[1, b'ABC'], [5, b'123z']]
11241: """
11242:
+11243: Memory_Write(self._, address, data, clear)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_clear); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 11243, __pyx_L1_error) __pyx_t_2 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_self->_, __pyx_v_address, __pyx_v_data, __pyx_t_1); if (unlikely(__pyx_t_2 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11243, __pyx_L1_error)
11244:
+11245: def write_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_241write_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_240write_backup[] = "Memory.write_backup(self: Memory, address: Address, data: Union[AnyBytes, Value, ImmutableMemory], clear: bool = False) -> List[ImmutableMemory]\nBackups a `write()` operation.\n\n Arguments:\n address (int):\n Address where to start writing data.\n\n data (bytes):\n Data to write.\n\n clear (bool):\n Clears the target range before writing data.\n Useful only if `data` is a :obj:`Memory` with empty spaces.\n\n Returns:\n list of :obj:`ImmutableMemory`: Backup memory regions.\n\n See Also:\n :meth:`write`\n :meth:`write_restore`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_241write_backup = {"write_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_6Memory_241write_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_6Memory_240write_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_241write_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_v_clear = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,&__pyx_n_s_clear,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_240write_backup(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data, PyObject *__pyx_v_clear) { addr_t __pyx_v_address_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory = 0; addr_t __pyx_v_start; addr_t __pyx_v_endex; PyObject *__pyx_v_backups = 0; PyObject *__pyx_8genexpr2__pyx_v_block_start = NULL; PyObject *__pyx_8genexpr2__pyx_v_block_endex = NULL; PyObject *__pyx_8genexpr3__pyx_v_block_start = NULL; PyObject *__pyx_8genexpr3__pyx_v_block_endex = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("cbytesparse.c.Memory.write_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory); __Pyx_XDECREF(__pyx_v_backups); __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_block_start); __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_block_endex); __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_block_start); __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_block_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__275 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data, __pyx_n_s_clear, __pyx_n_s_address_2, __pyx_n_s_memory, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_backups, __pyx_n_s_block_start, __pyx_n_s_block_endex, __pyx_n_s_block_start, __pyx_n_s_block_endex); if (unlikely(!__pyx_tuple__275)) __PYX_ERR(0, 11245, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__275); __Pyx_GIVEREF(__pyx_tuple__275); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 11245, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_241write_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_write_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__276)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_write_backup, __pyx_t_6) < 0) __PYX_ERR(0, 11245, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__276 = (PyObject*)__Pyx_PyCode_New(4, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__275, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_write_backup, 11245, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__276)) __PYX_ERR(0, 11245, __pyx_L1_error)
11246: self: Memory,
+11247: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 11245, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11248: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_data, __pyx_t_11) < 0) __PYX_ERR(0, 11245, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11249: clear: bool = False,
values[2] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("write_backup", 0, 2, 3, 1); __PYX_ERR(0, 11245, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_clear); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_backup") < 0)) __PYX_ERR(0, 11245, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_data = values[1]; __pyx_v_clear = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("write_backup", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11245, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.Memory.write_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_240write_backup(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), __pyx_v_address, __pyx_v_data, __pyx_v_clear); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_clear, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11245, __pyx_L1_error)
+11250: ) -> List[ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_List); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 11245, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11251: r"""Backups a `write()` operation.
11252:
11253: Arguments:
11254: address (int):
11255: Address where to start writing data.
11256:
11257: data (bytes):
11258: Data to write.
11259:
11260: clear (bool):
11261: Clears the target range before writing data.
11262: Useful only if `data` is a :obj:`Memory` with empty spaces.
11263:
11264: Returns:
11265: list of :obj:`ImmutableMemory`: Backup memory regions.
11266:
11267: See Also:
11268: :meth:`write`
11269: :meth:`write_restore`
11270: """
11271: cdef:
+11272: addr_t address_ = <addr_t>address
__pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11272, __pyx_L1_error) __pyx_v_address_ = ((addr_t)__pyx_t_1);
11273: Memory memory
11274: addr_t start
11275: addr_t endex
11276: list backups
11277:
+11278: if isinstance(data, Memory):
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_data, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+11279: memory = <Memory>data
__pyx_t_4 = __pyx_v_data;
__Pyx_INCREF(__pyx_t_4);
__pyx_v_memory = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_4);
__pyx_t_4 = 0;
+11280: start = Memory_Start(memory._)
__pyx_v_start = __pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory->_);
+11281: endex = Memory_Endex(memory._)
__pyx_v_endex = __pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_memory->_);
+11282: CheckAddAddrU(start, address_)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start, __pyx_v_address_); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11282, __pyx_L1_error)
+11283: CheckAddAddrU(endex, address_)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_endex, __pyx_v_address_); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11283, __pyx_L1_error)
+11284: start += address
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_v_address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_6); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11284, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_start = __pyx_t_1;
+11285: endex += address
__pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_v_address); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_4); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11285, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_endex = __pyx_t_1;
+11286: if endex <= start:
__pyx_t_3 = ((__pyx_v_endex <= __pyx_v_start) != 0); if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+11287: backups = []
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_backups = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+11288: elif clear:
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_clear); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 11288, __pyx_L1_error) if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+11289: backups = [Memory_Extract_(self._, start, endex, 0, NULL, 1, True)]
__pyx_t_4 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, 0, NULL, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_v_backups = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0;
11290: else:
+11291: backups = [Memory_Extract_(self._, <addr_t>block_start, <addr_t>block_endex, 0, NULL, 1, True)
/*else*/ { { /* enter inner scope */ __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11291, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_8genexpr2__pyx_v_block_start); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11291, __pyx_L7_error) __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_8genexpr2__pyx_v_block_endex); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11291, __pyx_L7_error) __pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_self->_, ((addr_t)__pyx_t_1), ((addr_t)__pyx_t_14), 0, NULL, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11291, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 11291, __pyx_L7_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+11292: for block_start, block_endex in memory.intervals(start=start, endex=endex)]
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memory), __pyx_n_s_intervals); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_8) < 0) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_8) < 0) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) { __pyx_t_7 = __pyx_t_8; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 11292, __pyx_L7_error) } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; for (;;) { if (likely(!__pyx_t_10)) { if (likely(PyList_CheckExact(__pyx_t_7))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 11292, __pyx_L7_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 11292, __pyx_L7_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); #endif } } else { __pyx_t_8 = __pyx_t_10(__pyx_t_7); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 11292, __pyx_L7_error) } break; } __Pyx_GOTREF(__pyx_t_8); } if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { PyObject* sequence = __pyx_t_8; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11292, __pyx_L7_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_11); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_11); #endif __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { Py_ssize_t index = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11292, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_4)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 11292, __pyx_L7_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11292, __pyx_L7_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_block_start, __pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_block_endex, __pyx_t_11); __pyx_t_11 = 0; /* … */ } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_block_endex); __pyx_8genexpr2__pyx_v_block_endex = 0; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_block_start); __pyx_8genexpr2__pyx_v_block_start = 0; goto __pyx_L12_exit_scope; __pyx_L7_error:; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_block_endex); __pyx_8genexpr2__pyx_v_block_endex = 0; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_block_start); __pyx_8genexpr2__pyx_v_block_start = 0; goto __pyx_L1_error; __pyx_L12_exit_scope:; } /* exit inner scope */ __pyx_v_backups = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0; } __pyx_L4:;
11293:
+11294: elif isinstance(data, ImmutableMemory):
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyObject_IsInstance(__pyx_v_data, __pyx_t_6); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 11294, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+11295: start = <addr_t>data.start
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_6); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11295, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_start = ((addr_t)__pyx_t_14);
+11296: endex = <addr_t>data.endex
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_endex); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_6); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11296, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_endex = ((addr_t)__pyx_t_14);
+11297: CheckAddAddrU(start, address_)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_start, __pyx_v_address_); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11297, __pyx_L1_error)
+11298: CheckAddAddrU(endex, address_)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_CheckAddAddrU(__pyx_v_endex, __pyx_v_address_); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11298, __pyx_L1_error)
+11299: start += address
__pyx_t_6 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_v_address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_7); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11299, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_start = __pyx_t_14;
+11300: endex += address
__pyx_t_7 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_v_address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_6); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11300, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_endex = __pyx_t_14;
+11301: if endex <= start:
__pyx_t_2 = ((__pyx_v_endex <= __pyx_v_start) != 0); if (__pyx_t_2) { /* … */ goto __pyx_L13; }
+11302: backups = []
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_backups = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0;
+11303: elif clear:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_clear); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 11303, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L13; }
+11304: backups = [Memory_Extract_(self._, start, endex, 0, NULL, 1, True)]
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, 0, NULL, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_v_backups = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
11305: else:
+11306: backups = [Memory_Extract_(self._, <addr_t>block_start, <addr_t>block_endex, 0, NULL, 1, True)
/*else*/ { { /* enter inner scope */ __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11306, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_14 = __Pyx_PyInt_As_uint_fast64_t(__pyx_8genexpr3__pyx_v_block_start); if (unlikely((__pyx_t_14 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11306, __pyx_L16_error) __pyx_t_1 = __Pyx_PyInt_As_uint_fast64_t(__pyx_8genexpr3__pyx_v_block_endex); if (unlikely((__pyx_t_1 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11306, __pyx_L16_error) __pyx_t_11 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_self->_, ((addr_t)__pyx_t_14), ((addr_t)__pyx_t_1), 0, NULL, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11306, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_11))) __PYX_ERR(0, 11306, __pyx_L16_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11307: for block_start, block_endex in data.intervals(start=start, endex=endex)]
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_intervals); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_11 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_start); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyInt_From_uint_fast64_t(__pyx_v_endex); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) { __pyx_t_8 = __pyx_t_11; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 11307, __pyx_L16_error) } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; for (;;) { if (likely(!__pyx_t_10)) { if (likely(PyList_CheckExact(__pyx_t_8))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_11); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 11307, __pyx_L16_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_11); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 11307, __pyx_L16_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); #endif } } else { __pyx_t_11 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_11)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 11307, __pyx_L16_error) } break; } __Pyx_GOTREF(__pyx_t_11); } if ((likely(PyTuple_CheckExact(__pyx_t_11))) || (PyList_CheckExact(__pyx_t_11))) { PyObject* sequence = __pyx_t_11; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11307, __pyx_L16_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else { Py_ssize_t index = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11307, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_6)) goto __pyx_L19_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_4 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_4)) goto __pyx_L19_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 11307, __pyx_L16_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L20_unpacking_done; __pyx_L19_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11307, __pyx_L16_error) __pyx_L20_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v_block_start, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v_block_endex, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_block_endex); __pyx_8genexpr3__pyx_v_block_endex = 0; __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_block_start); __pyx_8genexpr3__pyx_v_block_start = 0; goto __pyx_L21_exit_scope; __pyx_L16_error:; __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_block_endex); __pyx_8genexpr3__pyx_v_block_endex = 0; __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_block_start); __pyx_8genexpr3__pyx_v_block_start = 0; goto __pyx_L1_error; __pyx_L21_exit_scope:; } /* exit inner scope */ __pyx_v_backups = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; } __pyx_L13:;
11308:
11309: else:
+11310: if isinstance(data, int):
/*else*/ {
__pyx_t_2 = PyInt_Check(__pyx_v_data);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L22;
}
+11311: start = address_
__pyx_v_start = __pyx_v_address_;
+11312: endex = start + 1
__pyx_v_endex = (__pyx_v_start + 1);
+11313: backups = [Memory_Extract_(self._, start, endex, 0, NULL, 1, True)]
__pyx_t_7 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, 0, NULL, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_v_backups = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0;
11314: else:
+11315: start = address_
/*else*/ { __pyx_v_start = __pyx_v_address_;
+11316: endex = start + <size_t>len(data)
__pyx_t_9 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 11316, __pyx_L1_error) __pyx_v_endex = (__pyx_v_start + ((size_t)__pyx_t_9));
+11317: if start < endex:
__pyx_t_3 = ((__pyx_v_start < __pyx_v_endex) != 0); if (__pyx_t_3) { /* … */ goto __pyx_L23; }
+11318: backups = [Memory_Extract_(self._, start, endex, 0, NULL, 1, True)]
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_Extract_(__pyx_v_self->_, __pyx_v_start, __pyx_v_endex, 0, NULL, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_v_backups = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
11319: else:
+11320: backups = []
/*else*/ { __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_backups = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; } __pyx_L23:; } __pyx_L22:; } __pyx_L3:;
11321:
+11322: return backups
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_backups); __pyx_r = __pyx_v_backups; goto __pyx_L0;
11323:
+11324: def write_restore(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_243write_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backups); /*proto*/ static char __pyx_doc_11cbytesparse_1c_6Memory_242write_restore[] = "Memory.write_restore(self: Memory, backups: Sequence[ImmutableMemory]) -> None\nRestores a `write()` operation.\n\n Arguments:\n backups (list of :obj:`ImmutableMemory`):\n Backup memory regions to restore.\n\n See Also:\n :meth:`write`\n :meth:`write_backup`\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_6Memory_243write_restore = {"write_restore", (PyCFunction)__pyx_pw_11cbytesparse_1c_6Memory_243write_restore, METH_O, __pyx_doc_11cbytesparse_1c_6Memory_242write_restore}; static PyObject *__pyx_pw_11cbytesparse_1c_6Memory_243write_restore(PyObject *__pyx_v_self, PyObject *__pyx_v_backups) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write_restore (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_6Memory_242write_restore(((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_self), ((PyObject *)__pyx_v_backups)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_6Memory_242write_restore(struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_self, PyObject *__pyx_v_backups) { Memory_ *__pyx_v_memory; PyObject *__pyx_v_backup = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write_restore", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.Memory.write_restore", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_backup); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__277 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_backups, __pyx_n_s_memory, __pyx_n_s_backup); if (unlikely(!__pyx_tuple__277)) __PYX_ERR(0, 11324, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__277); __Pyx_GIVEREF(__pyx_tuple__277); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_self, __pyx_n_u_Memory) < 0) __PYX_ERR(0, 11324, __pyx_L1_error) /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_6Memory_243write_restore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Memory_write_restore, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__278)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory->tp_dict, __pyx_n_s_write_restore, __pyx_t_11) < 0) __PYX_ERR(0, 11324, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_Memory); __pyx_codeobj__278 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_write_restore, 11324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__278)) __PYX_ERR(0, 11324, __pyx_L1_error)
11325: self: Memory,
+11326: backups: Sequence[ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_backups, __pyx_t_11) < 0) __PYX_ERR(0, 11324, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11327: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11324, __pyx_L1_error)
11328: r"""Restores a `write()` operation.
11329:
11330: Arguments:
11331: backups (list of :obj:`ImmutableMemory`):
11332: Backup memory regions to restore.
11333:
11334: See Also:
11335: :meth:`write`
11336: :meth:`write_backup`
11337: """
11338: cdef:
+11339: Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->_; __pyx_v_memory = __pyx_t_1;
11340:
+11341: for backup in backups:
if (likely(PyList_CheckExact(__pyx_v_backups)) || PyTuple_CheckExact(__pyx_v_backups)) { __pyx_t_2 = __pyx_v_backups; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_backups); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11341, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 11341, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 11341, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 11341, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } __Pyx_XDECREF_SET(__pyx_v_backup, __pyx_t_5); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+11342: Memory_Write(memory, 0, backup, True)
__pyx_t_6 = __pyx_f_11cbytesparse_1c_Memory_Write(__pyx_v_memory, __pyx_int_0, __pyx_v_backup, 1); if (unlikely(__pyx_t_6 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11342, __pyx_L1_error)
11343:
11344:
+11345: ImmutableMemory.register(Memory)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_register); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11346: MutableMemory.register(Memory)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MutableMemory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_register); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_ptype_11cbytesparse_1c_Memory)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
11347:
11348:
11349: # =====================================================================================================================
11350:
11351: cdef class bytesparse(Memory):
11352: r"""Wrapper for more `bytearray` compatibility.
11353:
11354: This wrapper class can make :class:`Memory` closer to the actual
11355: :class:`bytearray` API.
11356:
11357: For instantiation, please refer to :meth:`bytearray.__init__`.
11358:
11359: With respect to :class:`Memory`, negative addresses are not allowed.
11360: Instead, negative addresses are to consider as referred to :attr:`endex`.
11361:
11362: Arguments:
11363: source:
11364: The optional `source` parameter can be used to initialize the
11365: array in a few different ways:
11366:
11367: * If it is a string, you must also give the `encoding` (and
11368: optionally, `errors`) parameters; it then converts the string to
11369: bytes using :meth:`str.encode`.
11370:
11371: * If it is an integer, the array will have that size and will be
11372: initialized with null bytes.
11373:
11374: * If it is an object conforming to the buffer interface, a
11375: read-only buffer of the object will be used to initialize the byte
11376: array.
11377:
11378: * If it is an iterable, it must be an iterable of integers in the
11379: range 0 <= x < 256, which are used as the initial contents of the
11380: array.
11381:
11382: encoding (str):
11383: Optional string encoding.
11384:
11385: errors (str):
11386: Optional string error management.
11387:
11388: start (int):
11389: Optional memory start address.
11390: Anything before will be trimmed away.
11391: If `source` is provided, its data start at this address
11392: (0 if `start` is ``None``).
11393:
11394: endex (int):
11395: Optional memory exclusive end address.
11396: Anything at or after it will be trimmed away.
11397: """
11398:
+11399: def __init__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_10bytesparse_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_11cbytesparse_1c_10bytesparse_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_args = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); if (PyTuple_GET_SIZE(__pyx_args) > 0) { __pyx_v_args = PyTuple_GetSlice(__pyx_args, 0, PyTuple_GET_SIZE(__pyx_args)); if (unlikely(!__pyx_v_args)) { __Pyx_RefNannyFinishContext(); return -1; } __Pyx_GOTREF(__pyx_v_args); } else { __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); } { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_XDECREF(__pyx_v_args); __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_10bytesparse___init__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_args) { __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } }; addr_t __pyx_v_address; size_t __pyx_v_size; byte_t const *__pyx_v_ptr; PyObject *__pyx_v_data = NULL; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); __Pyx_INCREF(__pyx_v_start); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __Pyx_AddTraceback("cbytesparse.c.bytesparse.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1); __Pyx_XDECREF(__pyx_v_data); __Pyx_XDECREF(__pyx_v_start); __Pyx_RefNannyFinishContext(); return __pyx_r; }
11400: self,
11401: *args: Any, # see bytearray.__init__()
+11402: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None);
+11403: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { default: case 0: break; } kw_args = PyDict_Size(__pyx_kwds); if (kw_args > 0 && likely(kw_args <= 2)) { Py_ssize_t index; for (index = 0; index < 2 && kw_args > 0; index++) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); if (value) { values[index] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(0, 11399, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { goto __pyx_L5_argtuple_error; } else { } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11399, __pyx_L3_error) __pyx_L3_error:; __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; __Pyx_AddTraceback("cbytesparse.c.bytesparse.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse___init__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_args);
11404: ):
11405: cdef:
11406: const byte_t[:] view
11407: addr_t address
11408: size_t size
11409: const byte_t* ptr
11410:
+11411: super().__init__(start, endex)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11412:
+11413: data = bytearray(*args)
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyByteArray_Type)), __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_data = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+11414: if data:
__pyx_t_6 = (PyByteArray_GET_SIZE(__pyx_v_data) != 0); if (__pyx_t_6) { /* … */ }
+11415: if start is None:
__pyx_t_6 = (__pyx_v_start == Py_None); __pyx_t_7 = (__pyx_t_6 != 0); if (__pyx_t_7) { /* … */ }
+11416: start = 0
__Pyx_INCREF(__pyx_int_0); __Pyx_DECREF_SET(__pyx_v_start, __pyx_int_0);
11417:
+11418: if endex is not None:
__pyx_t_7 = (__pyx_v_endex != Py_None); __pyx_t_6 = (__pyx_t_7 != 0); if (__pyx_t_6) { /* … */ }
+11419: if endex <= start:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_endex, __pyx_v_start, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11419, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 11419, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_6) { /* … */ }
+11420: return
__pyx_r = 0; goto __pyx_L0;
11421:
+11422: del data[(endex - start):]
__pyx_t_1 = PyNumber_Subtract(__pyx_v_endex, __pyx_v_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = (__pyx_t_1 == Py_None); if (__pyx_t_6) { __pyx_t_8 = 0; } else { __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 11422, __pyx_L1_error) __pyx_t_8 = __pyx_t_9; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__Pyx_PyObject_DelSlice(__pyx_v_data, __pyx_t_8, 0, NULL, NULL, NULL, 1, 0, 1) < 0) __PYX_ERR(0, 11422, __pyx_L1_error)
11423:
+11424: view = data
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_byte_t__const__(__pyx_v_data, 0); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 11424, __pyx_L1_error) __pyx_v_view = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
+11425: address = <addr_t>start
__pyx_t_11 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_start); if (unlikely((__pyx_t_11 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11425, __pyx_L1_error) __pyx_v_address = ((addr_t)__pyx_t_11);
11426: with cython.boundscheck(False):
+11427: size = <size_t>len(view)
__pyx_t_12 = __Pyx_MemoryView_Len(__pyx_v_view);
__pyx_v_size = ((size_t)__pyx_t_12);
+11428: ptr = &view[0]
__pyx_t_13 = 0; if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_v_view.shape[0]; __pyx_v_ptr = (&(*((byte_t const *) ( /* dim=0 */ (__pyx_v_view.data + __pyx_t_13 * __pyx_v_view.strides[0]) ))));
+11429: Memory_Place__(self._, address, size, ptr, False)
__pyx_t_14 = __pyx_f_11cbytesparse_1c_Memory_Place__(__pyx_v_self->__pyx_base._, __pyx_v_address, __pyx_v_size, __pyx_v_ptr, 0); if (unlikely(__pyx_t_14 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 11429, __pyx_L1_error)
11430:
+11431: def __delitem__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_10bytesparse_3__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ static int __pyx_pw_11cbytesparse_1c_10bytesparse_3__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_2__delitem__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_key)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_10bytesparse_2__delitem__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_key) { PyObject *__pyx_v_start = NULL; PyObject *__pyx_v_endex = NULL; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__delitem__", 0); __Pyx_INCREF(__pyx_v_key); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.bytesparse.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XDECREF(__pyx_v_key); __Pyx_RefNannyFinishContext(); return __pyx_r; }
11432: self,
11433: key: Union[Address, slice],
11434: ) -> None:
11435:
+11436: if isinstance(key, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_key);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+11437: start, endex = self._rectify_span(key.start, key.stop)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_stop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11437, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_9 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_9)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_6), 2) < 0) __PYX_ERR(0, 11437, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11437, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_start = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_endex = __pyx_t_9; __pyx_t_9 = 0;
+11438: key = slice(start, endex, key.step)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_step); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = PySlice_New(__pyx_v_start, __pyx_v_endex, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_9); __pyx_t_9 = 0;
11439: else:
+11440: key = self._rectify_address(key)
/*else*/ { __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_9); __pyx_t_9 = 0; } __pyx_L3:;
11441:
+11442: super().__delitem__(key)
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self)); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_delitem); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11443:
+11444: def __getitem__(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_4__getitem__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_key)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_4__getitem__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_key) { PyObject *__pyx_v_start = NULL; PyObject *__pyx_v_endex = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__", 0); __Pyx_INCREF(__pyx_v_key); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.bytesparse.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XDECREF(__pyx_v_key); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
11445: self,
11446: key: Union[Address, slice],
11447: ) -> Any:
11448:
+11449: if isinstance(key, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_key);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+11450: start, endex = self._rectify_span(key.start, key.stop)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_stop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11450, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_9 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_9)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_6), 2) < 0) __PYX_ERR(0, 11450, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11450, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_start = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_endex = __pyx_t_9; __pyx_t_9 = 0;
+11451: key = slice(start, endex, key.step)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_step); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = PySlice_New(__pyx_v_start, __pyx_v_endex, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_9); __pyx_t_9 = 0;
11452: else:
+11453: key = self._rectify_address(key)
/*else*/ { __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_9); __pyx_t_9 = 0; } __pyx_L3:;
11454:
+11455: return super().__getitem__(key)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self)); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_getitem); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0;
11456:
+11457: def __setitem__(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_10bytesparse_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/ static int __pyx_pw_11cbytesparse_1c_10bytesparse_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_6__setitem__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_10bytesparse_6__setitem__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { PyObject *__pyx_v_start = NULL; PyObject *__pyx_v_endex = NULL; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__", 0); __Pyx_INCREF(__pyx_v_key); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("cbytesparse.c.bytesparse.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XDECREF(__pyx_v_key); __Pyx_RefNannyFinishContext(); return __pyx_r; }
11458: self,
11459: key: Union[Address, slice],
11460: value: Optional[Union[AnyBytes, Value]],
11461: ) -> None:
11462:
+11463: if isinstance(key, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_key);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+11464: start, endex = self._rectify_span(key.start, key.stop)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_stop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11464, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_9 = __pyx_t_10(__pyx_t_6); if (unlikely(!__pyx_t_9)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_6), 2) < 0) __PYX_ERR(0, 11464, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11464, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_start = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_endex = __pyx_t_9; __pyx_t_9 = 0;
+11465: key = slice(start, endex, key.step)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_step); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = PySlice_New(__pyx_v_start, __pyx_v_endex, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_9); __pyx_t_9 = 0;
11466: else:
+11467: key = self._rectify_address(key)
/*else*/ { __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_9); __pyx_t_9 = 0; } __pyx_L3:;
11468:
+11469: super().__setitem__(key, value)
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self)); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_setitem); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_key, __pyx_v_value}; __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11469, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_9); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_key, __pyx_v_value}; __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11469, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_9); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_v_key); __Pyx_INCREF(__pyx_v_value); __Pyx_GIVEREF(__pyx_v_value); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_v_value); __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11470:
+11471: def _rectify_address(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_9_rectify_address(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_8_rectify_address[] = "bytesparse._rectify_address(self, address: Address) -> Address\nRectifies an address.\n\n In case the provided `address` is negative, it is recomputed as\n referred to :attr:`endex`.\n\n In case the rectified address would still be negative, an\n exception is raised.\n\n Arguments:\n address:\n Address to be rectified.\n\n Returns:\n int: Rectified address.\n\n Raises:\n IndexError: The rectified address would still be negative.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_9_rectify_address = {"_rectify_address", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_9_rectify_address, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_8_rectify_address}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_9_rectify_address(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_rectify_address (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_8_rectify_address(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_8_rectify_address(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_rectify_address", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("cbytesparse.c.bytesparse._rectify_address", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__283 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__283)) __PYX_ERR(0, 11471, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__283); __Pyx_GIVEREF(__pyx_tuple__283); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_9_rectify_address, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse__rectify_address, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__284)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_rectify_address, __pyx_t_6) < 0) __PYX_ERR(0, 11471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__284 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__283, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rectify_address, 11471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__284)) __PYX_ERR(0, 11471, __pyx_L1_error)
11472: self,
+11473: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 11471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11474: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 11471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11475: r"""Rectifies an address.
11476:
11477: In case the provided `address` is negative, it is recomputed as
11478: referred to :attr:`endex`.
11479:
11480: In case the rectified address would still be negative, an
11481: exception is raised.
11482:
11483: Arguments:
11484: address:
11485: Address to be rectified.
11486:
11487: Returns:
11488: int: Rectified address.
11489:
11490: Raises:
11491: IndexError: The rectified address would still be negative.
11492: """
11493:
+11494: try:
{ /*try:*/ { /* … */ } __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L7_try_return:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L0; }
+11495: try:
{ /*try:*/ { /* … */ } __pyx_L9_error:; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; /* … */ __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L3_error; __pyx_L13_try_return:; __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L7_try_return; __pyx_L12_except_return:; __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); goto __pyx_L7_try_return; }
+11496: return <addr_t>address
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyInt_As_uint_fast64_t(__pyx_v_address); if (unlikely((__pyx_t_7 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11496, __pyx_L9_error) __pyx_t_8 = __Pyx_PyInt_From_uint_fast64_t(((addr_t)__pyx_t_7)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11496, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L13_try_return;
11497:
+11498: except OverflowError:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); if (__pyx_t_9) { __Pyx_AddTraceback("cbytesparse.c.bytesparse._rectify_address", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 11498, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_11);
+11499: return <addr_t>(<object>Memory_Endex(self._) + address)
__Pyx_XDECREF(__pyx_r); __pyx_t_12 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_self->__pyx_base._)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11499, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyNumber_Add(__pyx_t_12, __pyx_v_address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11499, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_7 = __Pyx_PyInt_As_uint_fast64_t(__pyx_t_13); if (unlikely((__pyx_t_7 == ((addr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 11499, __pyx_L11_except_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyInt_From_uint_fast64_t(((addr_t)__pyx_t_7)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11499, __pyx_L11_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_r = __pyx_t_13; __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L12_except_return; } goto __pyx_L11_except_error; __pyx_L11_except_error:;
11500:
+11501: except OverflowError:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); if (__pyx_t_9) { __Pyx_AddTraceback("cbytesparse.c.bytesparse._rectify_address", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_10, &__pyx_t_8) < 0) __PYX_ERR(0, 11501, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_10); __Pyx_GOTREF(__pyx_t_8);
+11502: raise IndexError('index out of range')
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11502, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_Raise(__pyx_t_13, 0, 0, 0); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_ERR(0, 11502, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:;
11503:
+11504: def _rectify_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_11_rectify_span(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_10_rectify_span[] = "bytesparse._rectify_span(self, start: Optional[Address], endex: Optional[Address]) -> OpenInterval\nRectifies an address span.\n\n In case a provided address is negative, it is recomputed as\n referred to :attr:`endex`.\n\n In case the rectified address would still be negative, it is\n clamped to address zero.\n\n Arguments:\n start (int):\n Inclusive start address for rectification.\n If ``None``, :attr:`start` is considered.\n\n endex (int):\n Exclusive end address for rectification.\n If ``None``, :attr:`endex` is considered.\n\n Returns:\n pair of int: Rectified address span.\n "; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_11_rectify_span = {"_rectify_span", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_11_rectify_span, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_10_rectify_span}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_11_rectify_span(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_rectify_span (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("_rectify_span", 1, 2, 2, 1); __PYX_ERR(0, 11504, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_rectify_span") < 0)) __PYX_ERR(0, 11504, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_rectify_span", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11504, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse._rectify_span", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_10_rectify_span(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_10_rectify_span(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_v_endex_ = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_rectify_span", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse._rectify_span", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_endex_); __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__285 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__285)) __PYX_ERR(0, 11504, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__285); __Pyx_GIVEREF(__pyx_tuple__285); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_11_rectify_span, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse__rectify_span, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__286)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_rectify_span, __pyx_t_11) < 0) __PYX_ERR(0, 11504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__286 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__285, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rectify_span, 11504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__286)) __PYX_ERR(0, 11504, __pyx_L1_error)
11505: self,
+11506: start: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_13) < 0) __PYX_ERR(0, 11504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+11507: endex: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 11504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11508: ) -> OpenInterval:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_OpenInterval); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_11) < 0) __PYX_ERR(0, 11504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
11509: r"""Rectifies an address span.
11510:
11511: In case a provided address is negative, it is recomputed as
11512: referred to :attr:`endex`.
11513:
11514: In case the rectified address would still be negative, it is
11515: clamped to address zero.
11516:
11517: Arguments:
11518: start (int):
11519: Inclusive start address for rectification.
11520: If ``None``, :attr:`start` is considered.
11521:
11522: endex (int):
11523: Exclusive end address for rectification.
11524: If ``None``, :attr:`endex` is considered.
11525:
11526: Returns:
11527: pair of int: Rectified address span.
11528: """
11529:
+11530: endex_ = None
__Pyx_INCREF(Py_None);
__pyx_v_endex_ = Py_None;
11531:
+11532: if start is not None and start < 0:
__pyx_t_2 = (__pyx_v_start != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_start, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11532, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 11532, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+11533: endex_ = Memory_Endex(self._)
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_self->__pyx_base._)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_endex_, __pyx_t_4); __pyx_t_4 = 0;
+11534: start = endex_ + start
__pyx_t_4 = PyNumber_Add(__pyx_v_endex_, __pyx_v_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_4); __pyx_t_4 = 0;
+11535: if start < 0:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_start, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11535, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 11535, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { /* … */ }
+11536: start = 0
__Pyx_INCREF(__pyx_int_0); __Pyx_DECREF_SET(__pyx_v_start, __pyx_int_0);
11537:
+11538: if endex is not None and endex < 0:
__pyx_t_3 = (__pyx_v_endex != Py_None); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L8_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_endex, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11538, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 11538, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __pyx_t_2; __pyx_L8_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+11539: if endex_ is None:
__pyx_t_1 = (__pyx_v_endex_ == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+11540: endex_ = Memory_Endex(self._)
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Endex(__pyx_v_self->__pyx_base._)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_endex_, __pyx_t_4); __pyx_t_4 = 0;
+11541: endex = endex_ + endex
__pyx_t_4 = PyNumber_Add(__pyx_v_endex_, __pyx_v_endex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_4); __pyx_t_4 = 0;
+11542: if endex < 0:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_endex, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11542, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 11542, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_2) { /* … */ }
+11543: endex = 0
__Pyx_INCREF(__pyx_int_0); __Pyx_DECREF_SET(__pyx_v_endex, __pyx_int_0);
11544:
+11545: return start, endex
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_endex); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
11546:
+11547: def block_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_13block_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_12block_span[] = "bytesparse.block_span(self, address: Address) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_13block_span = {"block_span", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_13block_span, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_12block_span}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_13block_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("block_span (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_12block_span(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_12block_span(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("block_span", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.bytesparse.block_span", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_16generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__287 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__287)) __PYX_ERR(0, 11547, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__287); __Pyx_GIVEREF(__pyx_tuple__287); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_13block_span, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_block_span, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__288)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_block_span, __pyx_t_1) < 0) __PYX_ERR(0, 11547, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__288 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__287, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_block_span, 11547, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__288)) __PYX_ERR(0, 11547, __pyx_L1_error)
11548: self,
+11549: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 11547, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11550: ) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_1); __pyx_t_12 = 0; __pyx_t_9 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11547, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11551:
+11552: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11553: return super().block_span(address)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_block_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
11554:
+11555: def blocks(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_15blocks(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_14blocks[] = "bytesparse.blocks(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[Tuple[Address, memoryview]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_15blocks = {"blocks", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_15blocks, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_14blocks}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_15blocks(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("blocks (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_14blocks(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_12_blocks *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("blocks", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_12_blocks *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_12_blocks(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_12_blocks, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_12_blocks *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 11555, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_10bytesparse_16generator12, __pyx_codeobj__44, (PyObject *) __pyx_cur_scope, __pyx_n_s_blocks, __pyx_n_s_bytesparse_blocks, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_16generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("blocks", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11555, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__289 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__289)) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__289); __Pyx_GIVEREF(__pyx_tuple__289); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_15blocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_blocks, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_blocks, __pyx_t_12) < 0) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__289, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_blocks, 11555, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 11555, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_12_blocks { PyObject_HEAD PyObject *__pyx_v_endex; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self; PyObject *__pyx_v_start; };
11556: self,
+11557: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11558: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "blocks") < 0)) __PYX_ERR(0, 11555, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("blocks", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11555, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_14blocks(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11559: ) -> Iterator[Tuple[Address, memoryview]]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_memoryview); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_9); __pyx_t_6 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_12) < 0) __PYX_ERR(0, 11555, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
11560:
+11561: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_start); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11561, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11561, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11561, __pyx_L1_error) __pyx_L5_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0;
+11562: yield from super().blocks(start=start, endex=endex)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_blocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_cur_scope->__pyx_v_start) < 0) __PYX_ERR(0, 11562, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_cur_scope->__pyx_v_endex) < 0) __PYX_ERR(0, 11562, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L6_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11562, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 11562, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
11563:
+11564: def bound(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_18bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_17bound[] = "bytesparse.bound(self, start: Optional[Address], endex: Optional[Address]) -> ClosedInterval"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_18bound = {"bound", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_18bound, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_17bound}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_18bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("bound (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("bound", 1, 2, 2, 1); __PYX_ERR(0, 11564, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "bound") < 0)) __PYX_ERR(0, 11564, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11564, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.bound", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_17bound(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_17bound(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("bound", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.bound", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__290 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(0, 11564, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__290); __Pyx_GIVEREF(__pyx_tuple__290); /* … */ __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_18bound, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_bound, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_bound, __pyx_t_1) < 0) __PYX_ERR(0, 11564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_bound, 11564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(0, 11564, __pyx_L1_error)
11565: self,
+11566: start: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11567: endex: Optional[Address],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11567, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11567, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11567, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11568: ) -> ClosedInterval:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ClosedInterval); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11569:
+11570: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11570, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11570, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11570, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11571: return super().bound(start, endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bound); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11571, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11571, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
11572:
+11573: def clear(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_20clear(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_19clear[] = "bytesparse.clear(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_20clear = {"clear", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_20clear, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_19clear}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_20clear(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_19clear(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__292 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__292)) __PYX_ERR(0, 11573, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__292); __Pyx_GIVEREF(__pyx_tuple__292); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_20clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_clear, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__293)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_clear, __pyx_t_12) < 0) __PYX_ERR(0, 11573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__293 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__292, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_clear, 11573, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(0, 11573, __pyx_L1_error)
11574: self,
+11575: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11576: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "clear") < 0)) __PYX_ERR(0, 11573, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("clear", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11573, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_19clear(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_12) < 0) __PYX_ERR(0, 11573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+11577: ) -> None:
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11573, __pyx_L1_error)
11578:
+11579: start, endex = self._rectify_span(start=start, endex=endex)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11579, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11579, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11579, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 11579, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11579, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_1); __pyx_t_1 = 0;
+11580: super().clear(start, endex)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_start, __pyx_v_endex}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11580, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_start, __pyx_v_endex}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11580, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_endex); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11581:
+11582: def clear_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_22clear_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_21clear_backup[] = "bytesparse.clear_backup(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_22clear_backup = {"clear_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_22clear_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_21clear_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_22clear_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_21clear_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear_backup", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.clear_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__294 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(0, 11582, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__294); __Pyx_GIVEREF(__pyx_tuple__294); /* … */ __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_22clear_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_clear_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_clear_backup, __pyx_t_1) < 0) __PYX_ERR(0, 11582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_clear_backup, 11582, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(0, 11582, __pyx_L1_error)
11583: self,
+11584: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11585: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "clear_backup") < 0)) __PYX_ERR(0, 11582, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("clear_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11582, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.clear_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_21clear_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11586: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11587:
+11588: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11588, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11588, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11588, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11589: return super().clear_backup(start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_clear_backup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11589, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11589, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
11590:
+11591: def count(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_24count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_23count[] = "bytesparse.count(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> int"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_24count = {"count", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_24count, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_23count}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_24count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_23count(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.count", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__296 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(0, 11591, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__296); __Pyx_GIVEREF(__pyx_tuple__296); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_24count, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_count, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__297)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_count, __pyx_t_11) < 0) __PYX_ERR(0, 11591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__297 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__296, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_count, 11591, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(0, 11591, __pyx_L1_error)
11592: self,
+11593: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Union); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_item, __pyx_t_11) < 0) __PYX_ERR(0, 11591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11594: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_12) < 0) __PYX_ERR(0, 11591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+11595: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "count") < 0)) __PYX_ERR(0, 11591, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("count", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11591, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.count", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_23count(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 11591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_n_u_int) < 0) __PYX_ERR(0, 11591, __pyx_L1_error)
11596: ) -> int:
11597:
+11598: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11598, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11598, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11598, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11599: return super().count(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11599, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11599, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
11600:
+11601: def crop(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_26crop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_25crop[] = "bytesparse.crop(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_26crop = {"crop", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_26crop, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_25crop}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_26crop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_25crop(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.crop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__298 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__298)) __PYX_ERR(0, 11601, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__298); __Pyx_GIVEREF(__pyx_tuple__298); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_26crop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_crop, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__299)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_crop, __pyx_t_1) < 0) __PYX_ERR(0, 11601, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__299 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__298, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_crop, 11601, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(0, 11601, __pyx_L1_error)
11602: self,
+11603: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_start, __pyx_t_12) < 0) __PYX_ERR(0, 11601, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+11604: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "crop") < 0)) __PYX_ERR(0, 11601, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("crop", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11601, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.crop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_25crop(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11601, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11605: ) -> None:
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11601, __pyx_L1_error)
11606:
+11607: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11607, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11607, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11607, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11608: super().crop(start=start, endex=endex)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_crop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11608, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11608, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11609:
+11610: def crop_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_28crop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_27crop_backup[] = "bytesparse.crop_backup(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> Tuple[Optional[ImmutableMemory], Optional[ImmutableMemory]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_28crop_backup = {"crop_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_28crop_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_27crop_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_28crop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_27crop_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("crop_backup", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.crop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__300 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(0, 11610, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__300); __Pyx_GIVEREF(__pyx_tuple__300); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11610, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_28crop_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_crop_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__301)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11610, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_crop_backup, __pyx_t_6) < 0) __PYX_ERR(0, 11610, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__301 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__300, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_crop_backup, 11610, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(0, 11610, __pyx_L1_error)
11611: self,
+11612: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_12) < 0) __PYX_ERR(0, 11610, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+11613: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "crop_backup") < 0)) __PYX_ERR(0, 11610, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("crop_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11610, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.crop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_27crop_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 11610, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11614: ) -> Tuple[Optional[ImmutableMemory], Optional[ImmutableMemory]]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_6); __pyx_t_9 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 11610, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11615:
+11616: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11616, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11616, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11616, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11617: return super().crop_backup(start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_crop_backup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11617, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
11618:
+11619: def cut(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_30cut(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_29cut[] = "bytesparse.cut(self, start: Optional[Address] = None, endex: Optional[Address] = None, bound: bool = True) -> ImmutableMemory"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_30cut = {"cut", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_30cut, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_29cut}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_30cut(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; CYTHON_UNUSED PyObject *__pyx_v_bound = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("cut (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_bound,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_29cut(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, CYTHON_UNUSED PyObject *__pyx_v_bound) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("cut", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.cut", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__302 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_bound); if (unlikely(!__pyx_tuple__302)) __PYX_ERR(0, 11619, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__302); __Pyx_GIVEREF(__pyx_tuple__302); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_30cut, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_cut, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__303)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_cut, __pyx_t_1) < 0) __PYX_ERR(0, 11619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__302, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_cut, 11619, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(0, 11619, __pyx_L1_error)
11620: self,
+11621: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11622: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11623: bound: bool = True,
values[2] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bound); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cut") < 0)) __PYX_ERR(0, 11619, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_bound = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("cut", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11619, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.cut", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_29cut(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_bound); /* … */ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_bound, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11619, __pyx_L1_error)
+11624: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11625:
+11626: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11626, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11626, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11626, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11627: return super().cut(start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_cut); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11627, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11627, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
11628:
+11629: def delete(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_32delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_31delete[] = "bytesparse.delete(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_32delete = {"delete", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_32delete, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_31delete}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_32delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_31delete(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.delete", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__304 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__304)) __PYX_ERR(0, 11629, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__304); __Pyx_GIVEREF(__pyx_tuple__304); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_32delete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_delete, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__305)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_delete, __pyx_t_6) < 0) __PYX_ERR(0, 11629, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__304, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_delete, 11629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(0, 11629, __pyx_L1_error)
11630: self,
+11631: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11629, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11632: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "delete") < 0)) __PYX_ERR(0, 11629, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("delete", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11629, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.delete", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_31delete(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 11629, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11633: ) -> None:
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11629, __pyx_L1_error)
11634:
+11635: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11635, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11635, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11635, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11636: super().delete(start=start, endex=endex)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_delete); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11636, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11636, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11637:
+11638: def delete_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_34delete_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_33delete_backup[] = "bytesparse.delete_backup(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_34delete_backup = {"delete_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_34delete_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_33delete_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_34delete_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_33delete_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("delete_backup", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.delete_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__306 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(0, 11638, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__306); __Pyx_GIVEREF(__pyx_tuple__306); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_34delete_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_delete_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__307)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_delete_backup, __pyx_t_1) < 0) __PYX_ERR(0, 11638, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__307 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__306, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_delete_backup, 11638, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(0, 11638, __pyx_L1_error)
11639: self,
+11640: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11638, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11641: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "delete_backup") < 0)) __PYX_ERR(0, 11638, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("delete_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11638, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.delete_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_33delete_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11638, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11642: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11638, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11643:
+11644: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11644, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11644, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11644, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11645: return super().delete_backup(start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_delete_backup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11645, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11645, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
11646:
+11647: def equal_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_36equal_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_35equal_span[] = "bytesparse.equal_span(self, address: Address) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_36equal_span = {"equal_span", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_36equal_span, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_35equal_span}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_36equal_span(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("equal_span (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_35equal_span(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_35equal_span(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("equal_span", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.bytesparse.equal_span", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__308 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(0, 11647, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__308); __Pyx_GIVEREF(__pyx_tuple__308); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11647, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_36equal_span, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_equal_span, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__309)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11647, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_equal_span, __pyx_t_7) < 0) __PYX_ERR(0, 11647, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__308, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_equal_span, 11647, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(0, 11647, __pyx_L1_error)
11648: self,
+11649: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11649, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 11647, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11650: ) -> Tuple[Optional[Address], Optional[Address], Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_7); __pyx_t_9 = 0; __pyx_t_12 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 11647, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11651:
+11652: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11653: return super().equal_span(address)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_equal_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
11654:
+11655: def extract(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_38extract(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_37extract[] = "bytesparse.extract(self, start: Optional[Address] = None, endex: Optional[Address] = None, pattern: Optional[Union[AnyBytes, Value]] = None, step: Optional[Address] = None, bound: bool = True) -> ImmutableMemory"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_38extract = {"extract", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_38extract, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_37extract}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_38extract(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_v_step = 0; PyObject *__pyx_v_bound = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extract (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,&__pyx_n_s_step,&__pyx_n_s_bound,0}; PyObject* values[5] = {0,0,0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_37extract(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern, PyObject *__pyx_v_step, PyObject *__pyx_v_bound) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("extract", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.extract", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__310 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_step, __pyx_n_s_bound); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__310); __Pyx_GIVEREF(__pyx_tuple__310); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_38extract, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_extract, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__311)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_extract, __pyx_t_1) < 0) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__311 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_extract, 11655, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(0, 11655, __pyx_L1_error)
11656: self,
+11657: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11658: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11659: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Union); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_12); __pyx_t_6 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pattern, __pyx_t_9) < 0) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11660: step: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_step, __pyx_t_1) < 0) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11661: bound: bool = True,
values[4] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_step); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bound); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) __PYX_ERR(0, 11655, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; __pyx_v_step = values[3]; __pyx_v_bound = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("extract", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11655, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.extract", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_37extract(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern, __pyx_v_step, __pyx_v_bound); /* … */ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_bound, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11655, __pyx_L1_error)
+11662: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11663:
+11664: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11664, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11664, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11664, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11665: return super().extract(start=start, endex=endex, pattern=pattern, step=step, bound=bound)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_extract); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11665, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11665, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_pattern, __pyx_v_pattern) < 0) __PYX_ERR(0, 11665, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_step, __pyx_v_step) < 0) __PYX_ERR(0, 11665, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_bound, __pyx_v_bound) < 0) __PYX_ERR(0, 11665, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
11666:
+11667: def fill(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_40fill(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_39fill[] = "bytesparse.fill(self, start: Optional[Address] = None, endex: Optional[Address] = None, pattern: Union[AnyBytes, Value] = 0) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_40fill = {"fill", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_40fill, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_39fill}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_40fill(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_39fill(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.fill", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__312 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern); if (unlikely(!__pyx_tuple__312)) __PYX_ERR(0, 11667, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__312); __Pyx_GIVEREF(__pyx_tuple__312); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_40fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_fill, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__313)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_fill, __pyx_t_9) < 0) __PYX_ERR(0, 11667, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__313 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__312, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_fill, 11667, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__313)) __PYX_ERR(0, 11667, __pyx_L1_error)
11668: self,
+11669: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 11667, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11670: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); values[2] = ((PyObject *)__pyx_int_0); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fill") < 0)) __PYX_ERR(0, 11667, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fill", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11667, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.fill", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_39fill(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 11667, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11671: pattern: Union[AnyBytes, Value] = 0,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Value); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_9); __pyx_t_12 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pattern, __pyx_t_9) < 0) __PYX_ERR(0, 11667, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11672: ) -> None:
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11667, __pyx_L1_error)
11673:
+11674: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11674, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11674, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11674, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11675: super().fill(start=start, endex=endex, pattern=pattern)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_fill); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11675, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11675, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_pattern, __pyx_v_pattern) < 0) __PYX_ERR(0, 11675, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11676:
+11677: def fill_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_42fill_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_41fill_backup[] = "bytesparse.fill_backup(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_42fill_backup = {"fill_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_42fill_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_41fill_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_42fill_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_41fill_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_backup", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.fill_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__314 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__314)) __PYX_ERR(0, 11677, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__314); __Pyx_GIVEREF(__pyx_tuple__314); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_42fill_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_fill_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__315)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_fill_backup, __pyx_t_1) < 0) __PYX_ERR(0, 11677, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__315 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__314, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_fill_backup, 11677, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__315)) __PYX_ERR(0, 11677, __pyx_L1_error)
11678: self,
+11679: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 11677, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11680: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fill_backup") < 0)) __PYX_ERR(0, 11677, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fill_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11677, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.fill_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_41fill_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11677, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11681: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11677, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11682:
+11683: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11683, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11683, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11683, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11684: return super().fill_backup(start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_fill_backup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11684, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11684, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
11685:
+11686: def find(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_44find(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_43find[] = "bytesparse.find(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_44find = {"find", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_44find, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_43find}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_44find(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("find (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_43find(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("find", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.find", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__316 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__316)) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__316); __Pyx_GIVEREF(__pyx_tuple__316); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_44find, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_find, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__317)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_find, __pyx_t_7) < 0) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__316, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_find, 11686, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(0, 11686, __pyx_L1_error)
11687: self,
+11688: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Union); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_7); __pyx_t_11 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11689: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11690: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find") < 0)) __PYX_ERR(0, 11686, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("find", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11686, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.find", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_43find(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11691: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 11686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11692:
+11693: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11693, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11693, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11693, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11694: return super().find(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_find); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11694, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11694, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
11695:
+11696: def flood(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_46flood(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_45flood[] = "bytesparse.flood(self, start: Optional[Address] = None, endex: Optional[Address] = None, pattern: Union[AnyBytes, Value] = 0) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_46flood = {"flood", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_46flood, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_45flood}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_46flood(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_45flood(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.flood", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__318 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern); if (unlikely(!__pyx_tuple__318)) __PYX_ERR(0, 11696, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__318); __Pyx_GIVEREF(__pyx_tuple__318); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_46flood, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_flood, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__319)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_flood, __pyx_t_9) < 0) __PYX_ERR(0, 11696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__319 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__318, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_flood, 11696, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__319)) __PYX_ERR(0, 11696, __pyx_L1_error)
11697: self,
+11698: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 11696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11699: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); values[2] = ((PyObject *)__pyx_int_0); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "flood") < 0)) __PYX_ERR(0, 11696, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("flood", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11696, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.flood", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_45flood(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_1) < 0) __PYX_ERR(0, 11696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11700: pattern: Union[AnyBytes, Value] = 0,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Value); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_9); __pyx_t_12 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pattern, __pyx_t_9) < 0) __PYX_ERR(0, 11696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11701: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11696, __pyx_L1_error)
11702:
+11703: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11703, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11703, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11703, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11704: super().flood(start=start, endex=endex, pattern=pattern)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_flood); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11704, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11704, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_pattern, __pyx_v_pattern) < 0) __PYX_ERR(0, 11704, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11705:
+11706: def flood_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_48flood_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_47flood_backup[] = "bytesparse.flood_backup(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> List[OpenInterval]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_48flood_backup = {"flood_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_48flood_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_47flood_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_48flood_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_47flood_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flood_backup", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.flood_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__320 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__320)) __PYX_ERR(0, 11706, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__320); __Pyx_GIVEREF(__pyx_tuple__320); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_48flood_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_flood_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__321)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_flood_backup, __pyx_t_1) < 0) __PYX_ERR(0, 11706, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__321 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__320, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_flood_backup, 11706, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__321)) __PYX_ERR(0, 11706, __pyx_L1_error)
11707: self,
+11708: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_1) < 0) __PYX_ERR(0, 11706, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11709: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "flood_backup") < 0)) __PYX_ERR(0, 11706, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("flood_backup", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11706, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.flood_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_47flood_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 11706, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11710: ) -> List[OpenInterval]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_List); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_OpenInterval); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11706, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11711:
+11712: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11712, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11712, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11712, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11713: return super().flood_backup(start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_flood_backup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11713, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11713, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
11714:
+11715: @classmethod
__pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_from_blocks, __pyx_t_1) < 0) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse);
+11716: def from_blocks(
/* Python wrapper */ static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pw_11cbytesparse_1c_10bytesparse_50from_blocks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_49from_blocks[] = "bytesparse.from_blocks(type cls, blocks: BlockSequence, offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, copy: bool = True, validate: bool = True) -> bytesparse"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_50from_blocks = {"from_blocks", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_50from_blocks, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_49from_blocks}; static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pw_11cbytesparse_1c_10bytesparse_50from_blocks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_blocks = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_copy = 0; PyObject *__pyx_v_validate = 0; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_blocks (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocks,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_copy_2,&__pyx_n_s_validate,0}; PyObject* values[6] = {0,0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pf_11cbytesparse_1c_10bytesparse_49from_blocks(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_blocks, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_copy, PyObject *__pyx_v_validate) { struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory1 = 0; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_memory2 = 0; Memory_ *__pyx_v_memory1_; Memory_ *__pyx_v_memory2_; PyObject *__pyx_v_block_start = NULL; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_blocks", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.bytesparse.from_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory1); __Pyx_XDECREF((PyObject *)__pyx_v_memory2); __Pyx_XDECREF(__pyx_v_block_start); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__322 = PyTuple_Pack(12, __pyx_n_s_cls, __pyx_n_s_blocks, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_copy_2, __pyx_n_s_validate, __pyx_n_s_memory1, __pyx_n_s_memory2, __pyx_n_s_memory1_2, __pyx_n_s_memory2_2, __pyx_n_s_block_start); if (unlikely(!__pyx_tuple__322)) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__322); __Pyx_GIVEREF(__pyx_tuple__322); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_50from_blocks, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_from_blocks, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_from_blocks, __pyx_t_9) < 0) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); /* … */ __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse, __pyx_n_s_from_blocks); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(7, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__322, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_blocks, 11716, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(0, 11716, __pyx_L1_error)
11717: cls,
+11718: blocks: BlockSequence,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_BlockSequence); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_blocks, __pyx_t_9) < 0) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11719: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11719, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_9) < 0) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11720: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11721: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 11716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11722: copy: bool = True,
values[4] = ((PyObject *)Py_True); /* … */ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy_2, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11716, __pyx_L1_error)
+11723: validate: bool = True,
values[5] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_copy_2); if (value) { values[4] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[5] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_blocks") < 0)) __PYX_ERR(0, 11716, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_blocks = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_copy = values[4]; __pyx_v_validate = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_blocks", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11716, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.from_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_49from_blocks(((PyTypeObject*)__pyx_v_cls), __pyx_v_blocks, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_copy, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11716, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_n_u_bytesparse) < 0) __PYX_ERR(0, 11716, __pyx_L1_error)
11724: ) -> bytesparse:
11725: cdef:
11726: Memory memory1
11727: bytesparse memory2
11728: Memory_* memory1_
11729: Memory_* memory2_
11730:
+11731: if blocks:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_blocks); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 11731, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+11732: block_start = blocks[0][0]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_blocks, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_block_start = __pyx_t_3; __pyx_t_3 = 0;
+11733: if block_start + offset < 0:
__pyx_t_3 = PyNumber_Add(__pyx_v_block_start, __pyx_v_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11733, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 11733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_t_1)) { /* … */ }
+11734: raise ValueError('negative offseted start')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 11734, __pyx_L1_error) /* … */ __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_u_negative_offseted_start); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 11734, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__45); __Pyx_GIVEREF(__pyx_tuple__45);
11735:
+11736: if start is not None and start < 0:
__pyx_t_4 = (__pyx_v_start != Py_None); __pyx_t_5 = (__pyx_t_4 != 0); if (__pyx_t_5) { } else { __pyx_t_1 = __pyx_t_5; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11736, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 11736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_t_5; __pyx_L6_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ }
+11737: raise ValueError('negative start')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 11737, __pyx_L1_error) /* … */ __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_u_negative_start); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 11737, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__46); __Pyx_GIVEREF(__pyx_tuple__46);
+11738: if endex is not None and endex < 0:
__pyx_t_5 = (__pyx_v_endex != Py_None); __pyx_t_4 = (__pyx_t_5 != 0); if (__pyx_t_4) { } else { __pyx_t_1 = __pyx_t_4; goto __pyx_L9_bool_binop_done; } __pyx_t_2 = PyObject_RichCompare(__pyx_v_endex, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11738, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 11738, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_t_4; __pyx_L9_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ }
+11739: raise ValueError('negative endex')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 11739, __pyx_L1_error) /* … */ __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_u_negative_endex); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 11739, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__47); __Pyx_GIVEREF(__pyx_tuple__47);
11740:
+11741: memory1 = super().from_blocks(blocks, offset=offset, start=start, endex=endex, copy=copy, validate=validate)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_cls)); __Pyx_GIVEREF(((PyObject *)__pyx_v_cls)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_cls)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_from_blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_blocks); __Pyx_GIVEREF(__pyx_v_blocks); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_blocks); __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_v_offset) < 0) __PYX_ERR(0, 11741, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11741, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11741, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy_2, __pyx_v_copy) < 0) __PYX_ERR(0, 11741, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_validate, __pyx_v_validate) < 0) __PYX_ERR(0, 11741, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 11741, __pyx_L1_error) __pyx_v_memory1 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_7); __pyx_t_7 = 0;
+11742: memory2 = cls()
__pyx_t_7 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_11cbytesparse_1c_bytesparse))))) __PYX_ERR(0, 11742, __pyx_L1_error) __pyx_v_memory2 = ((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_t_7); __pyx_t_7 = 0;
+11743: memory1_ = memory1._
__pyx_t_8 = __pyx_v_memory1->_; __pyx_v_memory1_ = __pyx_t_8;
+11744: memory2_ = memory2._
__pyx_t_8 = __pyx_v_memory2->__pyx_base._; __pyx_v_memory2_ = __pyx_t_8;
11745:
+11746: memory2_.blocks = Rack_Free(memory2_.blocks)
__pyx_v_memory2_->blocks = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_memory2_->blocks);
+11747: memory2_.blocks = memory1_.blocks
__pyx_t_9 = __pyx_v_memory1_->blocks; __pyx_v_memory2_->blocks = __pyx_t_9;
+11748: memory1_.blocks = NULL
__pyx_v_memory1_->blocks = NULL;
11749:
+11750: memory2_.trim_start = memory1_.trim_start
__pyx_t_10 = __pyx_v_memory1_->trim_start; __pyx_v_memory2_->trim_start = __pyx_t_10;
+11751: memory2_.trim_endex = memory1_.trim_endex
__pyx_t_10 = __pyx_v_memory1_->trim_endex; __pyx_v_memory2_->trim_endex = __pyx_t_10;
+11752: memory2_.trim_start_ = memory1_.trim_start_
__pyx_t_1 = __pyx_v_memory1_->trim_start_; __pyx_v_memory2_->trim_start_ = __pyx_t_1;
+11753: memory2_.trim_endex_ = memory1_.trim_endex_
__pyx_t_1 = __pyx_v_memory1_->trim_endex_; __pyx_v_memory2_->trim_endex_ = __pyx_t_1;
+11754: return memory2
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_memory2)); __pyx_r = __pyx_v_memory2; goto __pyx_L0;
11755:
+11756: @classmethod
__pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_from_bytes, __pyx_t_1) < 0) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse);
+11757: def from_bytes(
/* Python wrapper */ static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pw_11cbytesparse_1c_10bytesparse_52from_bytes(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_51from_bytes[] = "bytesparse.from_bytes(type cls, data: AnyBytes, offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, copy: bool = True, validate: bool = True) -> bytesparse"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_52from_bytes = {"from_bytes", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_52from_bytes, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_51from_bytes}; static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pw_11cbytesparse_1c_10bytesparse_52from_bytes(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_data = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_copy = 0; PyObject *__pyx_v_validate = 0; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_bytes (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_copy_2,&__pyx_n_s_validate,0}; PyObject* values[6] = {0,0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pf_11cbytesparse_1c_10bytesparse_51from_bytes(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_data, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_copy, PyObject *__pyx_v_validate) { struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory1 = 0; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_memory2 = 0; Memory_ *__pyx_v_memory1_; Memory_ *__pyx_v_memory2_; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_bytes", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("cbytesparse.c.bytesparse.from_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory1); __Pyx_XDECREF((PyObject *)__pyx_v_memory2); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__324 = PyTuple_Pack(11, __pyx_n_s_cls, __pyx_n_s_data, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_copy_2, __pyx_n_s_validate, __pyx_n_s_memory1, __pyx_n_s_memory2, __pyx_n_s_memory1_2, __pyx_n_s_memory2_2); if (unlikely(!__pyx_tuple__324)) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__324); __Pyx_GIVEREF(__pyx_tuple__324); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_52from_bytes, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_from_bytes, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_from_bytes, __pyx_t_9) < 0) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); /* … */ __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse, __pyx_n_s_from_bytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(7, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_bytes, 11757, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(0, 11757, __pyx_L1_error)
11758: cls,
+11759: data: AnyBytes,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_data, __pyx_t_9) < 0) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11760: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_9) < 0) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11761: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11762: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 11757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11763: copy: bool = True,
values[4] = ((PyObject *)Py_True); /* … */ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy_2, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11757, __pyx_L1_error)
+11764: validate: bool = True,
values[5] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_copy_2); if (value) { values[4] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[5] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_bytes") < 0)) __PYX_ERR(0, 11757, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_data = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_copy = values[4]; __pyx_v_validate = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_bytes", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11757, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.from_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_51from_bytes(((PyTypeObject*)__pyx_v_cls), __pyx_v_data, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_copy, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11757, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_n_u_bytesparse) < 0) __PYX_ERR(0, 11757, __pyx_L1_error)
11765: ) -> bytesparse:
11766: cdef:
11767: Memory memory1
11768: bytesparse memory2
11769: Memory_* memory1_
11770: Memory_* memory2_
11771:
+11772: if offset < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11772, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 11772, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+11773: raise ValueError('negative offset')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 11773, __pyx_L1_error) /* … */ __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_u_negative_offset); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 11773, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__48); __Pyx_GIVEREF(__pyx_tuple__48);
+11774: if start is not None and start < 0:
__pyx_t_3 = (__pyx_v_start != Py_None); __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L5_bool_binop_done; } __pyx_t_1 = PyObject_RichCompare(__pyx_v_start, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11774, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 11774, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_4; __pyx_L5_bool_binop_done:; if (unlikely(__pyx_t_2)) { /* … */ }
+11775: raise ValueError('negative start')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 11775, __pyx_L1_error)
+11776: if endex is not None and endex < 0:
__pyx_t_4 = (__pyx_v_endex != Py_None); __pyx_t_3 = (__pyx_t_4 != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L8_bool_binop_done; } __pyx_t_1 = PyObject_RichCompare(__pyx_v_endex, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11776, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 11776, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_3; __pyx_L8_bool_binop_done:; if (unlikely(__pyx_t_2)) { /* … */ }
+11777: raise ValueError('negative endex')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 11777, __pyx_L1_error)
11778:
+11779: memory1 = super().from_bytes(data, offset=offset, start=start, endex=endex, copy=copy, validate=validate)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_cls)); __Pyx_GIVEREF(((PyObject *)__pyx_v_cls)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_cls)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_from_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_data); __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_v_offset) < 0) __PYX_ERR(0, 11779, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11779, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11779, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy_2, __pyx_v_copy) < 0) __PYX_ERR(0, 11779, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_validate, __pyx_v_validate) < 0) __PYX_ERR(0, 11779, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 11779, __pyx_L1_error) __pyx_v_memory1 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_7); __pyx_t_7 = 0;
+11780: memory2 = cls()
__pyx_t_7 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_11cbytesparse_1c_bytesparse))))) __PYX_ERR(0, 11780, __pyx_L1_error) __pyx_v_memory2 = ((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_t_7); __pyx_t_7 = 0;
+11781: memory1_ = memory1._
__pyx_t_8 = __pyx_v_memory1->_; __pyx_v_memory1_ = __pyx_t_8;
+11782: memory2_ = memory2._
__pyx_t_8 = __pyx_v_memory2->__pyx_base._; __pyx_v_memory2_ = __pyx_t_8;
11783:
+11784: memory2_.blocks = Rack_Free(memory2_.blocks)
__pyx_v_memory2_->blocks = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_memory2_->blocks);
+11785: memory2_.blocks = memory1_.blocks
__pyx_t_9 = __pyx_v_memory1_->blocks; __pyx_v_memory2_->blocks = __pyx_t_9;
+11786: memory1_.blocks = NULL
__pyx_v_memory1_->blocks = NULL;
11787:
+11788: memory2_.trim_start = memory1_.trim_start
__pyx_t_10 = __pyx_v_memory1_->trim_start; __pyx_v_memory2_->trim_start = __pyx_t_10;
+11789: memory2_.trim_endex = memory1_.trim_endex
__pyx_t_10 = __pyx_v_memory1_->trim_endex; __pyx_v_memory2_->trim_endex = __pyx_t_10;
+11790: memory2_.trim_start_ = memory1_.trim_start_
__pyx_t_2 = __pyx_v_memory1_->trim_start_; __pyx_v_memory2_->trim_start_ = __pyx_t_2;
+11791: memory2_.trim_endex_ = memory1_.trim_endex_
__pyx_t_2 = __pyx_v_memory1_->trim_endex_; __pyx_v_memory2_->trim_endex_ = __pyx_t_2;
+11792: return memory2
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_memory2)); __pyx_r = __pyx_v_memory2; goto __pyx_L0;
11793:
+11794: @classmethod
__pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_from_memory, __pyx_t_1) < 0) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse);
+11795: def from_memory(
/* Python wrapper */ static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pw_11cbytesparse_1c_10bytesparse_54from_memory(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_53from_memory[] = "bytesparse.from_memory(type cls, memory: ImmutableMemory, offset: Address = 0, start: Optional[Address] = None, endex: Optional[Address] = None, copy: bool = True, validate: bool = True) -> bytesparse"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_54from_memory = {"from_memory", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_54from_memory, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_53from_memory}; static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pw_11cbytesparse_1c_10bytesparse_54from_memory(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_memory = 0; PyObject *__pyx_v_offset = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_copy = 0; PyObject *__pyx_v_validate = 0; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_memory (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_memory,&__pyx_n_s_offset,&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_copy_2,&__pyx_n_s_validate,0}; PyObject* values[6] = {0,0,0,0,0,0}; values[1] = ((PyObject *)__pyx_int_0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_pf_11cbytesparse_1c_10bytesparse_53from_memory(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_memory, PyObject *__pyx_v_offset, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_copy, PyObject *__pyx_v_validate) { Memory_ const *__pyx_v_memory_; struct __pyx_obj_11cbytesparse_1c_Memory *__pyx_v_memory1 = 0; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_memory2 = 0; Memory_ *__pyx_v_memory1_; Memory_ *__pyx_v_memory2_; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("from_memory", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("cbytesparse.c.bytesparse.from_memory", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_memory1); __Pyx_XDECREF((PyObject *)__pyx_v_memory2); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_57generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__326 = PyTuple_Pack(13, __pyx_n_s_cls, __pyx_n_s_memory, __pyx_n_s_offset, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_copy_2, __pyx_n_s_validate, __pyx_n_s_memory_2, __pyx_n_s_memory1, __pyx_n_s_memory2, __pyx_n_s_memory1_2, __pyx_n_s_memory2_2, __pyx_n_s_block_start); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__326); __Pyx_GIVEREF(__pyx_tuple__326); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_54from_memory, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_from_memory, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_from_memory, __pyx_t_9) < 0) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); /* … */ __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse, __pyx_n_s_from_memory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_codeobj__327 = (PyObject*)__Pyx_PyCode_New(7, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__326, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_from_memory, 11795, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(0, 11795, __pyx_L1_error)
11796: cls,
+11797: memory: ImmutableMemory,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_memory, __pyx_t_9) < 0) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11798: offset: Address = 0,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_9) < 0) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11799: start: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11800: endex: Optional[Address] = None,
values[3] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 11795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11801: copy: bool = True,
values[4] = ((PyObject *)Py_True); /* … */ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy_2, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11795, __pyx_L1_error)
+11802: validate: bool = True,
values[5] = ((PyObject *)Py_True); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memory)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[2] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[3] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_copy_2); if (value) { values[4] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validate); if (value) { values[5] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_memory") < 0)) __PYX_ERR(0, 11795, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_memory = values[0]; __pyx_v_offset = values[1]; __pyx_v_start = values[2]; __pyx_v_endex = values[3]; __pyx_v_copy = values[4]; __pyx_v_validate = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_memory", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11795, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.from_memory", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_53from_memory(((PyTypeObject*)__pyx_v_cls), __pyx_v_memory, __pyx_v_offset, __pyx_v_start, __pyx_v_endex, __pyx_v_copy, __pyx_v_validate); /* … */ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_validate, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 11795, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_n_u_bytesparse) < 0) __PYX_ERR(0, 11795, __pyx_L1_error)
11803: ) -> bytesparse:
11804: cdef:
11805: const Memory_* memory_
11806: Memory memory1
11807: bytesparse memory2
11808: Memory_* memory1_
11809: Memory_* memory2_
11810: addr_t block_start
11811:
+11812: if isinstance(memory, Memory):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_memory, __pyx_ptype_11cbytesparse_1c_Memory);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+11813: memory_ = (<Memory>memory)._
__pyx_t_3 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_v_memory)->_; __pyx_v_memory_ = __pyx_t_3;
+11814: if Memory_Bool(memory_):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Memory_Bool(__pyx_v_memory_) != 0); if (__pyx_t_2) { /* … */ }
+11815: if Memory_Start(memory_) + offset < 0:
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory_)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11815, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 11815, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+11816: raise ValueError('negative offseted start')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 11816, __pyx_L1_error)
11817: else:
+11818: if memory:
/*else*/ { __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_memory); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 11818, __pyx_L1_error) if (__pyx_t_2) { /* … */ } } __pyx_L3:;
+11819: if memory.start + offset < 0:
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_memory, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11819, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 11819, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+11820: raise ValueError('negative offseted start')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 11820, __pyx_L1_error)
11821:
+11822: if start is not None and start < 0:
__pyx_t_1 = (__pyx_v_start != Py_None); __pyx_t_6 = (__pyx_t_1 != 0); if (__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L9_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_start, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11822, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 11822, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_6; __pyx_L9_bool_binop_done:; if (unlikely(__pyx_t_2)) { /* … */ }
+11823: raise ValueError('negative start')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11823, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 11823, __pyx_L1_error)
+11824: if endex is not None and endex < 0:
__pyx_t_6 = (__pyx_v_endex != Py_None); __pyx_t_1 = (__pyx_t_6 != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L12_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_endex, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11824, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 11824, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L12_bool_binop_done:; if (unlikely(__pyx_t_2)) { /* … */ }
+11825: raise ValueError('negative endex')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 11825, __pyx_L1_error)
11826:
+11827: memory1 = super().from_memory(memory, offset=offset, start=start, endex=endex, copy=copy, validate=validate)
__pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_cls)); __Pyx_GIVEREF(((PyObject *)__pyx_v_cls)); PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_cls)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_from_memory); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_memory); __Pyx_GIVEREF(__pyx_v_memory); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_memory); __pyx_t_7 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_offset, __pyx_v_offset) < 0) __PYX_ERR(0, 11827, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11827, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11827, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_copy_2, __pyx_v_copy) < 0) __PYX_ERR(0, 11827, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_validate, __pyx_v_validate) < 0) __PYX_ERR(0, 11827, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_11cbytesparse_1c_Memory))))) __PYX_ERR(0, 11827, __pyx_L1_error) __pyx_v_memory1 = ((struct __pyx_obj_11cbytesparse_1c_Memory *)__pyx_t_8); __pyx_t_8 = 0;
+11828: memory2 = cls()
__pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 11828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_11cbytesparse_1c_bytesparse))))) __PYX_ERR(0, 11828, __pyx_L1_error) __pyx_v_memory2 = ((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_t_8); __pyx_t_8 = 0;
+11829: memory1_ = memory1._
__pyx_t_3 = __pyx_v_memory1->_; __pyx_v_memory1_ = __pyx_t_3;
+11830: memory2_ = memory2._
__pyx_t_3 = __pyx_v_memory2->__pyx_base._; __pyx_v_memory2_ = __pyx_t_3;
11831:
+11832: memory2_.blocks = Rack_Free(memory2_.blocks)
__pyx_v_memory2_->blocks = __pyx_f_11cbytesparse_1c_Rack_Free(__pyx_v_memory2_->blocks);
+11833: memory2_.blocks = memory1_.blocks
__pyx_t_9 = __pyx_v_memory1_->blocks; __pyx_v_memory2_->blocks = __pyx_t_9;
+11834: memory1_.blocks = NULL
__pyx_v_memory1_->blocks = NULL;
11835:
+11836: memory2_.trim_start = memory1_.trim_start
__pyx_t_10 = __pyx_v_memory1_->trim_start; __pyx_v_memory2_->trim_start = __pyx_t_10;
+11837: memory2_.trim_endex = memory1_.trim_endex
__pyx_t_10 = __pyx_v_memory1_->trim_endex; __pyx_v_memory2_->trim_endex = __pyx_t_10;
+11838: memory2_.trim_start_ = memory1_.trim_start_
__pyx_t_2 = __pyx_v_memory1_->trim_start_; __pyx_v_memory2_->trim_start_ = __pyx_t_2;
+11839: memory2_.trim_endex_ = memory1_.trim_endex_
__pyx_t_2 = __pyx_v_memory1_->trim_endex_; __pyx_v_memory2_->trim_endex_ = __pyx_t_2;
+11840: return memory2
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_memory2)); __pyx_r = __pyx_v_memory2; goto __pyx_L0;
11841:
+11842: def gaps(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_56gaps(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_55gaps[] = "bytesparse.gaps(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[OpenInterval]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_56gaps = {"gaps", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_56gaps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_55gaps}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_56gaps(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gaps (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_55gaps(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_13_gaps *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gaps", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_13_gaps *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_13_gaps(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_13_gaps, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_13_gaps *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 11842, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_10bytesparse_57generator13, __pyx_codeobj__49, (PyObject *) __pyx_cur_scope, __pyx_n_s_gaps, __pyx_n_s_bytesparse_gaps, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.gaps", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_57generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gaps", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11842, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("gaps", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__328 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__328)) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__328); __Pyx_GIVEREF(__pyx_tuple__328); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_56gaps, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_gaps, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_gaps, __pyx_t_7) < 0) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__328, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_gaps, 11842, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 11842, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_13_gaps { PyObject_HEAD PyObject *__pyx_v_endex; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self; PyObject *__pyx_v_start; };
11843: self,
+11844: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11845: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gaps") < 0)) __PYX_ERR(0, 11842, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("gaps", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11842, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.gaps", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_55gaps(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11846: ) -> Iterator[OpenInterval]:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_OpenInterval); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 11842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11847:
+11848: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_start); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11848, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11848, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11848, __pyx_L1_error) __pyx_L5_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0;
+11849: yield from super().gaps(start=start, endex=endex)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_gaps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_cur_scope->__pyx_v_start) < 0) __PYX_ERR(0, 11849, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_cur_scope->__pyx_v_endex) < 0) __PYX_ERR(0, 11849, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L6_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11849, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 11849, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
11850:
+11851: def get(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_59get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_58get[] = "bytesparse.get(self, address: Address, default: Optional[Value] = None) -> Optional[Value]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_59get = {"get", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_59get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_58get}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_59get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_default = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_default,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_58get(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_default) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse.get", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__329 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_default); if (unlikely(!__pyx_tuple__329)) __PYX_ERR(0, 11851, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__329); __Pyx_GIVEREF(__pyx_tuple__329); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_59get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_get, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__330)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_get, __pyx_t_1) < 0) __PYX_ERR(0, 11851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__330 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__329, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_get, 11851, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__330)) __PYX_ERR(0, 11851, __pyx_L1_error)
11852: self,
+11853: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_1) < 0) __PYX_ERR(0, 11851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11854: default: Optional[Value] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 11851, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_default = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11851, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.get", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_58get(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_default); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_default, __pyx_t_9) < 0) __PYX_ERR(0, 11851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11855: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 11851, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11856:
+11857: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11858: return super().get(address, default=default)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_address); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_default, __pyx_v_default) < 0) __PYX_ERR(0, 11858, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
11859:
+11860: def index(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_61index(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_60index[] = "bytesparse.index(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_61index = {"index", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_61index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_60index}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_61index(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("index (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_60index(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("index", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.index", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__331 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__331)) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__331); __Pyx_GIVEREF(__pyx_tuple__331); /* … */ __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_61index, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_index, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__332)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_index, __pyx_t_9) < 0) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__332 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__331, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_index, 11860, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__332)) __PYX_ERR(0, 11860, __pyx_L1_error)
11861: self,
+11862: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Value); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_9); __pyx_t_11 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_item, __pyx_t_9) < 0) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11863: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11864: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "index") < 0)) __PYX_ERR(0, 11860, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("index", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11860, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.index", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_60index(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endex, __pyx_t_9) < 0) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11865: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 11860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11866:
+11867: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11867, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11867, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11867, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11868: return super().index(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11868, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11868, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
11869:
+11870: def insert(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_63insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_62insert[] = "bytesparse.insert(self, address: Address, data: Union[AnyBytes, Value, ImmutableMemory]) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_63insert = {"insert", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_63insert, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_62insert}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_63insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); __PYX_ERR(0, 11870, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert") < 0)) __PYX_ERR(0, 11870, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_data = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11870, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_62insert(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_data); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_62insert(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__333 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data); if (unlikely(!__pyx_tuple__333)) __PYX_ERR(0, 11870, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__333); __Pyx_GIVEREF(__pyx_tuple__333); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_63insert, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_insert, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__334)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_insert, __pyx_t_11) < 0) __PYX_ERR(0, 11870, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_insert, 11870, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(0, 11870, __pyx_L1_error)
11871: self,
+11872: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_address, __pyx_t_1) < 0) __PYX_ERR(0, 11870, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+11873: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_11); __pyx_t_12 = 0; __pyx_t_7 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_data, __pyx_t_11) < 0) __PYX_ERR(0, 11870, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11874: ) -> None:
if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11870, __pyx_L1_error)
11875:
+11876: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11877: super().insert(address, data)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_insert); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_data}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11877, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_data}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11877, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_address); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_data); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11878:
+11879: def insert_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_65insert_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_64insert_backup[] = "bytesparse.insert_backup(self, address: Address, data: Union[AnyBytes, Value, ImmutableMemory]) -> Tuple[Address, ImmutableMemory]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_65insert_backup = {"insert_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_65insert_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_64insert_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_65insert_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("insert_backup", 1, 2, 2, 1); __PYX_ERR(0, 11879, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert_backup") < 0)) __PYX_ERR(0, 11879, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_data = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("insert_backup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11879, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.insert_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_64insert_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_data); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_64insert_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert_backup", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.insert_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_68generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__335 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(0, 11879, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__335); __Pyx_GIVEREF(__pyx_tuple__335); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_65insert_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_insert_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__336)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_insert_backup, __pyx_t_9) < 0) __PYX_ERR(0, 11879, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__336 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_insert_backup, 11879, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__336)) __PYX_ERR(0, 11879, __pyx_L1_error)
11880: self,
+11881: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_address, __pyx_t_9) < 0) __PYX_ERR(0, 11879, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11882: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Union); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_7); __pyx_t_6 = 0; __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_data, __pyx_t_7) < 0) __PYX_ERR(0, 11879, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11883: ) -> Tuple[Address, ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Address); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9); __pyx_t_12 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 11879, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11884:
+11885: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11886: return super().insert_backup(address, data)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_insert_backup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_data}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11886, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_data}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11886, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_address); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_data); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
11887:
+11888: def intervals(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_67intervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_66intervals[] = "bytesparse.intervals(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> Iterator[ClosedInterval]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_67intervals = {"intervals", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_67intervals, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_66intervals}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_67intervals(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("intervals (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_66intervals(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_14_intervals *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("intervals", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_14_intervals *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_14_intervals(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_14_intervals, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_14_intervals *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 11888, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_10bytesparse_68generator14, __pyx_codeobj__50, (PyObject *) __pyx_cur_scope, __pyx_n_s_intervals, __pyx_n_s_bytesparse_intervals, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.intervals", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_68generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("intervals", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11888, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("intervals", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_71generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__337 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__337)) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__337); __Pyx_GIVEREF(__pyx_tuple__337); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_67intervals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_intervals, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_intervals, __pyx_t_7) < 0) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__337, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_intervals, 11888, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 11888, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_14_intervals { PyObject_HEAD PyObject *__pyx_v_endex; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self; PyObject *__pyx_v_start; };
11889: self,
+11890: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11891: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "intervals") < 0)) __PYX_ERR(0, 11888, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("intervals", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11888, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.intervals", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_66intervals(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11892: ) -> Iterator[ClosedInterval]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ClosedInterval); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 11888, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11893:
+11894: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_start); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11894, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11894, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11894, __pyx_L1_error) __pyx_L5_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0;
+11895: yield from super().intervals(start=start, endex=endex)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_intervals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_cur_scope->__pyx_v_start) < 0) __PYX_ERR(0, 11895, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_cur_scope->__pyx_v_endex) < 0) __PYX_ERR(0, 11895, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L6_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11895, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 11895, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
11896:
+11897: def items(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_70items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_69items[] = "bytesparse.items(self, start: Optional[Address] = None, endex: Optional[Union[Address, EllipsisType]] = None, pattern: Optional[Union[AnyBytes, Value]] = None) -> Iterator[Tuple[Address, Optional[Value]]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_70items = {"items", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_70items, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_69items}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_70items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("items (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_69items(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_15_items *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("items", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_15_items *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_15_items(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_15_items, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_15_items *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 11897, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_pattern = __pyx_v_pattern; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pattern); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_10bytesparse_71generator15, __pyx_codeobj__51, (PyObject *) __pyx_cur_scope, __pyx_n_s_items, __pyx_n_s_bytesparse_items, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.items", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_71generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("items", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11897, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("items", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_74generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__338 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__338)) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__338); __Pyx_GIVEREF(__pyx_tuple__338); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_70items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_items, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_items, __pyx_t_11) < 0) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_items, 11897, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 11897, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_15_items { PyObject_HEAD PyObject *__pyx_v_endex; PyObject *__pyx_v_endex_; PyObject *__pyx_v_pattern; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self; PyObject *__pyx_v_start; };
11898: self,
+11899: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11900: endex: Optional[Union[Address, EllipsisType]] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_12); __pyx_t_9 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11901: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "items") < 0)) __PYX_ERR(0, 11897, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("items", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11897, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.items", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_69items(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Union); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1); __pyx_t_11 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pattern, __pyx_t_9) < 0) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11902: ) -> Iterator[Tuple[Address, Optional[Value]]]:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Optional); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_13); __pyx_t_6 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_11) < 0) __PYX_ERR(0, 11897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
11903:
+11904: endex_ = endex # backup
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_endex_ = __pyx_cur_scope->__pyx_v_endex;
+11905: if endex is Ellipsis:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+11906: endex = None
__Pyx_INCREF(Py_None); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, Py_None); __Pyx_GIVEREF(Py_None);
+11907: start, endex = self._rectify_span(start, endex)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_start); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_endex); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11907, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_5), 2) < 0) __PYX_ERR(0, 11907, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11907, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0;
+11908: if endex_ is Ellipsis:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex_ == __pyx_builtin_Ellipsis); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+11909: endex = endex_ # restore
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex_); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_cur_scope->__pyx_v_endex_); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex_);
+11910: yield from super().items(start=start, endex=endex, pattern=pattern)
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_cur_scope->__pyx_v_start) < 0) __PYX_ERR(0, 11910, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_cur_scope->__pyx_v_endex) < 0) __PYX_ERR(0, 11910, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pattern, __pyx_cur_scope->__pyx_v_pattern) < 0) __PYX_ERR(0, 11910, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L8_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11910, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 11910, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
11911:
+11912: def keys(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_73keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_72keys[] = "bytesparse.keys(self, start: Optional[Address] = None, endex: Optional[Union[Address, EllipsisType]] = None) -> Iterator[Address]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_73keys = {"keys", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_73keys, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_72keys}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_73keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keys (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_72keys(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_16_keys *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keys", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_16_keys *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_16_keys(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_16_keys, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_16_keys *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 11912, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_10bytesparse_74generator16, __pyx_codeobj__52, (PyObject *) __pyx_cur_scope, __pyx_n_s_keys, __pyx_n_s_bytesparse_keys, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_74generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keys", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11912, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__339 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__339)) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__339); __Pyx_GIVEREF(__pyx_tuple__339); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_73keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_keys, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_keys, __pyx_t_9) < 0) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__339, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_keys, 11912, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 11912, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_16_keys { PyObject_HEAD PyObject *__pyx_v_endex; PyObject *__pyx_v_endex_; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self; PyObject *__pyx_v_start; };
11913: self,
+11914: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11915: endex: Optional[Union[Address, EllipsisType]] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "keys") < 0)) __PYX_ERR(0, 11912, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("keys", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11912, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.keys", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_72keys(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Union); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11916: ) -> Iterator[Address]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 11912, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11917:
+11918: endex_ = endex # backup
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_endex_ = __pyx_cur_scope->__pyx_v_endex;
+11919: if endex is Ellipsis:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+11920: endex = None
__Pyx_INCREF(Py_None); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, Py_None); __Pyx_GIVEREF(Py_None);
+11921: start, endex = self._rectify_span(start, endex)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_start); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_endex); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11921, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_5), 2) < 0) __PYX_ERR(0, 11921, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11921, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0;
+11922: if endex_ is Ellipsis:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex_ == __pyx_builtin_Ellipsis); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+11923: endex = endex_ # restore
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex_); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_cur_scope->__pyx_v_endex_); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex_);
+11924: yield from super().keys(start=start, endex=endex)
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_cur_scope->__pyx_v_start) < 0) __PYX_ERR(0, 11924, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_cur_scope->__pyx_v_endex) < 0) __PYX_ERR(0, 11924, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L8_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 11924, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 11924, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
11925:
+11926: def ofind(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_76ofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_75ofind[] = "bytesparse.ofind(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Optional[Address]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_76ofind = {"ofind", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_76ofind, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_75ofind}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_76ofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ofind (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_75ofind(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ofind", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.ofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__340 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__340)) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__340); __Pyx_GIVEREF(__pyx_tuple__340); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_76ofind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_ofind, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__341)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_ofind, __pyx_t_11) < 0) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__341 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__340, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_ofind, 11926, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__341)) __PYX_ERR(0, 11926, __pyx_L1_error)
11927: self,
+11928: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Union); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11929: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11930: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ofind") < 0)) __PYX_ERR(0, 11926, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("ofind", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11926, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.ofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_75ofind(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11931: ) -> Optional[Address]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_11) < 0) __PYX_ERR(0, 11926, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
11932:
+11933: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11933, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11933, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11933, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11934: return super().ofind(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ofind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11934, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11934, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
11935:
+11936: def peek(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_78peek(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_77peek[] = "bytesparse.peek(self, address: Address) -> Optional[Value]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_78peek = {"peek", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_78peek, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_77peek}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_78peek(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("peek (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_77peek(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_77peek(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("peek", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.bytesparse.peek", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__342 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__342)) __PYX_ERR(0, 11936, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__342); __Pyx_GIVEREF(__pyx_tuple__342); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_78peek, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_peek, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_peek, __pyx_t_6) < 0) __PYX_ERR(0, 11936, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_peek, 11936, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(0, 11936, __pyx_L1_error)
11937: self,
+11938: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_address, __pyx_t_9) < 0) __PYX_ERR(0, 11936, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+11939: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 11936, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11940:
+11941: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11942: return super().peek(address)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_peek); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
11943:
+11944: def poke(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_80poke(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_79poke[] = "bytesparse.poke(self, address: Address, item: Optional[Union[AnyBytes, Value]]) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_80poke = {"poke", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_80poke, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_79poke}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_80poke(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_item = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_item,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("poke", 1, 2, 2, 1); __PYX_ERR(0, 11944, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poke") < 0)) __PYX_ERR(0, 11944, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_item = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("poke", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11944, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.poke", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_79poke(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_item); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_79poke(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.poke", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__344 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_item); if (unlikely(!__pyx_tuple__344)) __PYX_ERR(0, 11944, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__344); __Pyx_GIVEREF(__pyx_tuple__344); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_80poke, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_poke, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_poke, __pyx_t_7) < 0) __PYX_ERR(0, 11944, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__344, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_poke, 11944, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(0, 11944, __pyx_L1_error)
11945: self,
+11946: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_11) < 0) __PYX_ERR(0, 11944, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11947: item: Optional[Union[AnyBytes, Value]],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Union); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1); __pyx_t_9 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 11944, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11948: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11944, __pyx_L1_error)
11949:
+11950: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11951: super().poke(address, item)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_poke); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_item}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11951, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_item}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11951, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_address); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_item); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11952:
+11953: def poke_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_82poke_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_81poke_backup[] = "bytesparse.poke_backup(self, address: Address) -> Tuple[Address, Optional[Value]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_82poke_backup = {"poke_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_82poke_backup, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_81poke_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_82poke_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_81poke_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_81poke_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poke_backup", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.bytesparse.poke_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__346 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__346)) __PYX_ERR(0, 11953, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__346); __Pyx_GIVEREF(__pyx_tuple__346); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11953, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_82poke_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_poke_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__347)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11953, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_poke_backup, __pyx_t_9) < 0) __PYX_ERR(0, 11953, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__347 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__346, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_poke_backup, 11953, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__347)) __PYX_ERR(0, 11953, __pyx_L1_error)
11954: self,
+11955: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 11953, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11956: ) -> Tuple[Address, Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 11953, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11957:
+11958: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+11959: return super().poke_backup(address)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_poke_backup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
11960:
+11961: def pop(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_84pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_83pop[] = "bytesparse.pop(self, address: Optional[Address] = None, default: Optional[Value] = None) -> Optional[Value]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_84pop = {"pop", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_84pop, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_83pop}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_84pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_default = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_default,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_83pop(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_default) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__348 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_default); if (unlikely(!__pyx_tuple__348)) __PYX_ERR(0, 11961, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__348); __Pyx_GIVEREF(__pyx_tuple__348); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_84pop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_pop, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__349)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_pop, __pyx_t_6) < 0) __PYX_ERR(0, 11961, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__349 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__348, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pop, 11961, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__349)) __PYX_ERR(0, 11961, __pyx_L1_error)
11962: self,
+11963: address: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 11961, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11964: default: Optional[Value] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pop") < 0)) __PYX_ERR(0, 11961, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_default = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("pop", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11961, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_83pop(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_default); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_default, __pyx_t_7) < 0) __PYX_ERR(0, 11961, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11965: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 11961, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11966:
+11967: if address is not None:
__pyx_t_1 = (__pyx_v_address != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+11968: address = self._rectify_address(address)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_address); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_3); __pyx_t_3 = 0;
+11969: return super().pop(address=address, default=default)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self)); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_address, __pyx_v_address) < 0) __PYX_ERR(0, 11969, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_default, __pyx_v_default) < 0) __PYX_ERR(0, 11969, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
11970:
+11971: def pop_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_86pop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_85pop_backup[] = "bytesparse.pop_backup(self, address: Optional[Address] = None) -> Tuple[Address, Optional[Value]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_86pop_backup = {"pop_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_86pop_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_85pop_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_86pop_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,0}; PyObject* values[1] = {0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_85pop_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop_backup", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.pop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__350 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__350)) __PYX_ERR(0, 11971, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__350); __Pyx_GIVEREF(__pyx_tuple__350); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_86pop_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_pop_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__351)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_pop_backup, __pyx_t_11) < 0) __PYX_ERR(0, 11971, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__351 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__350, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_pop_backup, 11971, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__351)) __PYX_ERR(0, 11971, __pyx_L1_error)
11972: self,
+11973: address: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address); if (value) { values[0] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pop_backup") < 0)) __PYX_ERR(0, 11971, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("pop_backup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11971, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.pop_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_85pop_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11973, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11973, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11973, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 11971, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11974: ) -> Tuple[Address, Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 11974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_11); __pyx_t_13 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_11) < 0) __PYX_ERR(0, 11971, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
11975:
+11976: if address is not None:
__pyx_t_1 = (__pyx_v_address != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+11977: address = self._rectify_address(address)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_address); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_3); __pyx_t_3 = 0;
+11978: return super().pop_backup(address=address)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self)); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_pop_backup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_address, __pyx_v_address) < 0) __PYX_ERR(0, 11978, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
11979:
+11980: def remove(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_88remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_87remove[] = "bytesparse.remove(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_88remove = {"remove", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_88remove, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_87remove}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_88remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_87remove(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__352 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__352)) __PYX_ERR(0, 11980, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__352); __Pyx_GIVEREF(__pyx_tuple__352); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_88remove, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_remove, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__353)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_remove, __pyx_t_7) < 0) __PYX_ERR(0, 11980, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__353 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__352, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_remove, 11980, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__353)) __PYX_ERR(0, 11980, __pyx_L1_error)
11981: self,
+11982: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 11980, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11983: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 11980, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11984: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "remove") < 0)) __PYX_ERR(0, 11980, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("remove", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11980, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_87remove(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 11980, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+11985: ) -> None:
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 11980, __pyx_L1_error)
11986:
+11987: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11987, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11987, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11987, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11988: super().remove(item, start=start, endex=endex)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11988, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11988, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11989:
+11990: def remove_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_90remove_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_89remove_backup[] = "bytesparse.remove_backup(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> ImmutableMemory"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_90remove_backup = {"remove_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_90remove_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_89remove_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_90remove_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_89remove_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("remove_backup", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.remove_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__354 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__354)) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__354); __Pyx_GIVEREF(__pyx_tuple__354); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_90remove_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_remove_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__355)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_remove_backup, __pyx_t_6) < 0) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__355 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__354, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_remove_backup, 11990, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__355)) __PYX_ERR(0, 11990, __pyx_L1_error)
11991: self,
+11992: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Union); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 11992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6); __pyx_t_13 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11993: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+11994: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "remove_backup") < 0)) __PYX_ERR(0, 11990, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("remove_backup", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 11990, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.remove_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_89remove_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 11994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+11995: ) -> ImmutableMemory:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 11995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 11990, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11996:
+11997: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 11997, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 11997, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 11997, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+11998: return super().remove_backup(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_remove_backup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 11998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 11998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 11998, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
11999:
+12000: def reserve(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_92reserve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_91reserve[] = "bytesparse.reserve(self, address: Address, size: Address) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_92reserve = {"reserve", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_92reserve, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_91reserve}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_92reserve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("reserve", 1, 2, 2, 1); __PYX_ERR(0, 12000, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reserve") < 0)) __PYX_ERR(0, 12000, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("reserve", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12000, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_91reserve(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_91reserve(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_size) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__356 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_size); if (unlikely(!__pyx_tuple__356)) __PYX_ERR(0, 12000, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__356); __Pyx_GIVEREF(__pyx_tuple__356); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_92reserve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_reserve, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__357)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_reserve, __pyx_t_7) < 0) __PYX_ERR(0, 12000, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__357 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__356, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_reserve, 12000, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__357)) __PYX_ERR(0, 12000, __pyx_L1_error)
12001: self,
+12002: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 12000, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12003: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_size, __pyx_t_7) < 0) __PYX_ERR(0, 12000, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12004: ) -> None:
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 12000, __pyx_L1_error)
12005:
+12006: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+12007: super().reserve(address, size)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reserve); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_size}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12007, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_size}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12007, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_address); __Pyx_INCREF(__pyx_v_size); __Pyx_GIVEREF(__pyx_v_size); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_size); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12008:
+12009: def reserve_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_94reserve_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_93reserve_backup[] = "bytesparse.reserve_backup(self, address: Address, size: Address) -> Tuple[Address, ImmutableMemory]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_94reserve_backup = {"reserve_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_94reserve_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_93reserve_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_94reserve_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("reserve_backup", 1, 2, 2, 1); __PYX_ERR(0, 12009, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reserve_backup") < 0)) __PYX_ERR(0, 12009, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_address = values[0]; __pyx_v_size = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("reserve_backup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12009, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.reserve_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_93reserve_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_93reserve_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_size) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve_backup", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.reserve_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__358 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_size); if (unlikely(!__pyx_tuple__358)) __PYX_ERR(0, 12009, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__358); __Pyx_GIVEREF(__pyx_tuple__358); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_94reserve_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_reserve_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_reserve_backup, __pyx_t_11) < 0) __PYX_ERR(0, 12009, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__359 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__358, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_reserve_backup, 12009, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(0, 12009, __pyx_L1_error)
12010: self,
+12011: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 12009, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12012: size: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_size, __pyx_t_6) < 0) __PYX_ERR(0, 12009, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12013: ) -> Tuple[Address, ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_11); __pyx_t_1 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_11) < 0) __PYX_ERR(0, 12009, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12014:
+12015: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12015, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12015, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+12016: return super().reserve_backup(address, size)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reserve_backup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_size}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12016, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_address, __pyx_v_size}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12016, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_address); __Pyx_INCREF(__pyx_v_size); __Pyx_GIVEREF(__pyx_v_size); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_size); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
12017:
+12018: def rfind(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_96rfind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_95rfind[] = "bytesparse.rfind(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_96rfind = {"rfind", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_96rfind, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_95rfind}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_96rfind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rfind (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_95rfind(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rfind", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.rfind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__360 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__360)) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__360); __Pyx_GIVEREF(__pyx_tuple__360); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_96rfind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_rfind, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_rfind, __pyx_t_6) < 0) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__360, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rfind, 12018, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(0, 12018, __pyx_L1_error)
12019: self,
+12020: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6); __pyx_t_13 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_item, __pyx_t_6) < 0) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12021: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_start, __pyx_t_7) < 0) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12022: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rfind") < 0)) __PYX_ERR(0, 12018, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rfind", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12018, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.rfind", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_95rfind(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_endex, __pyx_t_6) < 0) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12023: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 12018, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12024:
+12025: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 12025, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 12025, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 12025, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+12026: return super().rfind(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rfind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 12026, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 12026, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
12027:
+12028: def rindex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_98rindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_97rindex[] = "bytesparse.rindex(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Address"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_98rindex = {"rindex", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_98rindex, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_97rindex}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_98rindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rindex (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_97rindex(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rindex", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.rindex", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__362 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__362); __Pyx_GIVEREF(__pyx_tuple__362); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_98rindex, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_rindex, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__363)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_rindex, __pyx_t_7) < 0) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__363 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__362, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rindex, 12028, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__363)) __PYX_ERR(0, 12028, __pyx_L1_error)
12029: self,
+12030: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Union); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_item, __pyx_t_7) < 0) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12031: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_11) < 0) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+12032: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rindex") < 0)) __PYX_ERR(0, 12028, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rindex", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12028, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.rindex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_97rindex(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12033: ) -> Address:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12033, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 12028, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12034:
+12035: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 12035, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 12035, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 12035, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+12036: return super().rindex(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rindex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 12036, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 12036, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
12037:
+12038: def rofind(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_100rofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_99rofind[] = "bytesparse.rofind(self, item: Union[AnyBytes, Value], start: Optional[Address] = None, endex: Optional[Address] = None) -> Optional[Address]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_100rofind = {"rofind", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_100rofind, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_99rofind}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_100rofind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_item = 0; PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rofind (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_99rofind(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rofind", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.rofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_103generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_tuple__364 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__364)) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__364); __Pyx_GIVEREF(__pyx_tuple__364); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_100rofind, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_rofind, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__365)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_rofind, __pyx_t_6) < 0) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__365 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rofind, 12038, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__365)) __PYX_ERR(0, 12038, __pyx_L1_error)
12039: self,
+12040: item: Union[AnyBytes, Value],
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_11); __pyx_t_13 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_item, __pyx_t_11) < 0) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+12041: start: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12042: endex: Optional[Address] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rofind") < 0)) __PYX_ERR(0, 12038, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_item = values[0]; __pyx_v_start = values[1]; __pyx_v_endex = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rofind", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12038, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.rofind", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_99rofind(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_item, __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+12043: ) -> Optional[Address]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 12038, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12044:
+12045: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 12045, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 12045, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 12045, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+12046: return super().rofind(item, start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_rofind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_item); __Pyx_GIVEREF(__pyx_v_item); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item); __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 12046, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 12046, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
12047:
+12048: def rvalues(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_102rvalues(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_101rvalues[] = "bytesparse.rvalues(self, start: Optional[Union[Address, EllipsisType]] = None, endex: Optional[Address] = None, pattern: Optional[Union[AnyBytes, Value]] = None) -> Iterator[Optional[Value]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_102rvalues = {"rvalues", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_102rvalues, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_101rvalues}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_102rvalues(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rvalues (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_101rvalues(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_17_rvalues *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rvalues", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_17_rvalues *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_17_rvalues(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_17_rvalues, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_17_rvalues *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 12048, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_pattern = __pyx_v_pattern; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pattern); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_10bytesparse_103generator17, __pyx_codeobj__53, (PyObject *) __pyx_cur_scope, __pyx_n_s_rvalues, __pyx_n_s_bytesparse_rvalues, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.rvalues", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_103generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("rvalues", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 12048, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("rvalues", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__366 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_start_2); if (unlikely(!__pyx_tuple__366)) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__366); __Pyx_GIVEREF(__pyx_tuple__366); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_102rvalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_rvalues, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_rvalues, __pyx_t_7) < 0) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__366, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_rvalues, 12048, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 12048, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_17_rvalues { PyObject_HEAD PyObject *__pyx_v_endex; PyObject *__pyx_v_pattern; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self; PyObject *__pyx_v_start; PyObject *__pyx_v_start_; };
12049: self,
+12050: start: Optional[Union[Address, EllipsisType]] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_13); __pyx_t_11 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+12051: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12052: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rvalues") < 0)) __PYX_ERR(0, 12048, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("rvalues", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12048, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.rvalues", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_101rvalues(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Union); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1); __pyx_t_9 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_pattern, __pyx_t_11) < 0) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+12053: ) -> Iterator[Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 12048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12054:
+12055: start_ = start # backup
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_start_ = __pyx_cur_scope->__pyx_v_start;
+12056: if start is Ellipsis:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_start == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+12057: start = None
__Pyx_INCREF(Py_None); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, Py_None); __Pyx_GIVEREF(Py_None);
+12058: start, endex = self._rectify_span(start, endex)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_start); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_endex); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 12058, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_5), 2) < 0) __PYX_ERR(0, 12058, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 12058, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0;
+12059: if start_ is Ellipsis:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_start_ == __pyx_builtin_Ellipsis); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+12060: start = start_ # restore
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_start_); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_start_); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start_);
+12061: yield from super().rvalues(start=start, endex=endex, pattern=pattern)
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_rvalues); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_cur_scope->__pyx_v_start) < 0) __PYX_ERR(0, 12061, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_cur_scope->__pyx_v_endex) < 0) __PYX_ERR(0, 12061, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pattern, __pyx_cur_scope->__pyx_v_pattern) < 0) __PYX_ERR(0, 12061, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L8_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 12061, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 12061, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
12062:
+12063: def setdefault(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_105setdefault(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_104setdefault[] = "bytesparse.setdefault(self, address: Address, default: Optional[Value] = None) -> Optional[Value]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_105setdefault = {"setdefault", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_105setdefault, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_104setdefault}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_105setdefault(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_default = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_default,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_104setdefault(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_default) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse.setdefault", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__367 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_default); if (unlikely(!__pyx_tuple__367)) __PYX_ERR(0, 12063, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__367); __Pyx_GIVEREF(__pyx_tuple__367); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12063, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_105setdefault, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_setdefault, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__368)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12063, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_setdefault, __pyx_t_6) < 0) __PYX_ERR(0, 12063, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__368 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__367, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_setdefault, 12063, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__368)) __PYX_ERR(0, 12063, __pyx_L1_error)
12064: self,
+12065: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12065, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_6) < 0) __PYX_ERR(0, 12063, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12066: default: Optional[Value] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setdefault") < 0)) __PYX_ERR(0, 12063, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_default = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("setdefault", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12063, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.setdefault", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_104setdefault(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_default); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_default, __pyx_t_11) < 0) __PYX_ERR(0, 12063, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+12067: ) -> Optional[Value]:
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12067, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12067, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12067, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 12063, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12068:
+12069: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+12070: return super().setdefault(address, default=default)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_setdefault); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_address); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_default, __pyx_v_default) < 0) __PYX_ERR(0, 12070, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
12071:
+12072: def setdefault_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_107setdefault_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_106setdefault_backup[] = "bytesparse.setdefault_backup(self, address: Address) -> Tuple[Address, Optional[Value]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_107setdefault_backup = {"setdefault_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_107setdefault_backup, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_106setdefault_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_107setdefault_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_106setdefault_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_address)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_106setdefault_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setdefault_backup", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.bytesparse.setdefault_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__369 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__369)) __PYX_ERR(0, 12072, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__369); __Pyx_GIVEREF(__pyx_tuple__369); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_107setdefault_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_setdefault_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__370)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_setdefault_backup, __pyx_t_9) < 0) __PYX_ERR(0, 12072, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__370 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_setdefault_backup, 12072, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__370)) __PYX_ERR(0, 12072, __pyx_L1_error)
12073: self,
+12074: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 12072, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12075: ) -> Tuple[Address, Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9); __pyx_t_13 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_9) < 0) __PYX_ERR(0, 12072, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12076:
+12077: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+12078: return super().setdefault_backup(address)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_setdefault_backup); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
12079:
+12080: def shift(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_109shift(PyObject *__pyx_v_self, PyObject *__pyx_v_offset); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_108shift[] = "bytesparse.shift(self, offset: Address) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_109shift = {"shift", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_109shift, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_108shift}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_109shift(PyObject *__pyx_v_self, PyObject *__pyx_v_offset) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_108shift(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_offset)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_108shift(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_offset) { Memory_ const *__pyx_v_memory; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift", 0); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.bytesparse.shift", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__371 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_memory); if (unlikely(!__pyx_tuple__371)) __PYX_ERR(0, 12080, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__371); __Pyx_GIVEREF(__pyx_tuple__371); /* … */ __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_109shift, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_shift, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__372)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_shift, __pyx_t_6) < 0) __PYX_ERR(0, 12080, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__372 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__371, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_shift, 12080, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__372)) __PYX_ERR(0, 12080, __pyx_L1_error)
12081: self,
+12082: offset: Address,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_offset, __pyx_t_6) < 0) __PYX_ERR(0, 12080, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12083: ) -> None:
if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 12080, __pyx_L1_error)
12084: cdef:
+12085: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->__pyx_base._; __pyx_v_memory = __pyx_t_1;
12086:
+12087: if not memory.trim_start_ and offset < 0:
__pyx_t_3 = ((!(__pyx_v_memory->trim_start_ != 0)) != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12087, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 12087, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+12088: if Memory_Bool(memory):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Memory_Bool(__pyx_v_memory) != 0); if (__pyx_t_2) { /* … */ }
+12089: if Memory_Start(memory) + offset < 0:
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12089, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 12089, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+12090: raise ValueError('negative offseted start')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 12090, __pyx_L1_error)
12091:
+12092: super().shift(offset)
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_self)); __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shift); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_offset) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_offset); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12093:
+12094: def shift_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_111shift_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_offset); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_110shift_backup[] = "bytesparse.shift_backup(self, offset: Address) -> Tuple[Address, ImmutableMemory]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_111shift_backup = {"shift_backup", (PyCFunction)__pyx_pw_11cbytesparse_1c_10bytesparse_111shift_backup, METH_O, __pyx_doc_11cbytesparse_1c_10bytesparse_110shift_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_111shift_backup(PyObject *__pyx_v_self, PyObject *__pyx_v_offset) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift_backup (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_110shift_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_offset)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_110shift_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_offset) { Memory_ const *__pyx_v_memory; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shift_backup", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("cbytesparse.c.bytesparse.shift_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__373 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_memory); if (unlikely(!__pyx_tuple__373)) __PYX_ERR(0, 12094, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__373); __Pyx_GIVEREF(__pyx_tuple__373); /* … */ __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_111shift_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_shift_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__374)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_shift_backup, __pyx_t_7) < 0) __PYX_ERR(0, 12094, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__374 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__373, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_shift_backup, 12094, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__374)) __PYX_ERR(0, 12094, __pyx_L1_error)
12095: self,
+12096: offset: Address,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Address); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12096, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_offset, __pyx_t_9) < 0) __PYX_ERR(0, 12094, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+12097: ) -> Tuple[Address, ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 12094, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12098: cdef:
+12099: const Memory_* memory = self._
__pyx_t_1 = __pyx_v_self->__pyx_base._; __pyx_v_memory = __pyx_t_1;
12100:
+12101: if not memory.trim_start_ and offset < 0:
__pyx_t_3 = ((!(__pyx_v_memory->trim_start_ != 0)) != 0); if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_offset, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12101, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 12101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+12102: if Memory_Bool(memory):
__pyx_t_2 = (__pyx_f_11cbytesparse_1c_Memory_Bool(__pyx_v_memory) != 0); if (__pyx_t_2) { /* … */ }
+12103: if Memory_Start(memory) + offset < 0:
__pyx_t_4 = __Pyx_PyInt_From_uint_fast64_t(__pyx_f_11cbytesparse_1c_Memory_Start(__pyx_v_memory)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_offset); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 12103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+12104: raise ValueError('negative offseted start')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 12104, __pyx_L1_error)
12105:
+12106: return super().shift_backup(offset)
__Pyx_XDECREF(__pyx_r); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_self)); __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shift_backup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_offset) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_offset); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
12107:
12108: @property
+12109: def trim_endex(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_10trim_endex_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_10trim_endex_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_10trim_endex___get__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_10trim_endex___get__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.bytesparse.trim_endex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
12110: self,
12111: ) -> Optional[Address]:
12112:
12113: # Copy-pasted from Memory, because I cannot figure out how to override properties
+12114: return Memory_GetTrimEndex(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_GetTrimEndex(__pyx_v_self->__pyx_base._); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
12115:
12116: @trim_endex.setter
+12117: def trim_endex(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_10bytesparse_10trim_endex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_endex); /*proto*/ static int __pyx_pw_11cbytesparse_1c_10bytesparse_10trim_endex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_endex) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_10trim_endex_2__set__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_trim_endex)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_10bytesparse_10trim_endex_2__set__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_trim_endex) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse.trim_endex.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
12118: self,
12119: trim_endex: Optional[Address],
12120: ) -> None:
12121:
+12122: if trim_endex is not None and trim_endex < 0:
__pyx_t_2 = (__pyx_v_trim_endex != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_trim_endex, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12122, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 12122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ }
+12123: raise ValueError('negative endex')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 12123, __pyx_L1_error)
12124:
12125: # Copy-pasted from Memory, because I cannot figure out how to override properties
+12126: Memory_SetTrimEndex(self._, trim_endex)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_SetTrimEndex(__pyx_v_self->__pyx_base._, __pyx_v_trim_endex); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 12126, __pyx_L1_error)
12127:
12128: @property
+12129: def trim_span(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_9trim_span_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_9trim_span_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_9trim_span___get__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_9trim_span___get__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.bytesparse.trim_span.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
12130: self,
12131: ) -> OpenInterval:
12132:
12133: # Copy-pasted from Memory, because I cannot figure out how to override properties
+12134: return Memory_GetTrimSpan(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_GetTrimSpan(__pyx_v_self->__pyx_base._); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
12135:
12136: @trim_span.setter
+12137: def trim_span(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_10bytesparse_9trim_span_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_span); /*proto*/ static int __pyx_pw_11cbytesparse_1c_10bytesparse_9trim_span_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_span) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_9trim_span_2__set__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_trim_span)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_10bytesparse_9trim_span_2__set__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_trim_span) { PyObject *__pyx_v_trim_start = NULL; PyObject *__pyx_v_trim_endex = NULL; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("cbytesparse.c.bytesparse.trim_span.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_trim_start); __Pyx_XDECREF(__pyx_v_trim_endex); __Pyx_RefNannyFinishContext(); return __pyx_r; }
12138: self,
12139: trim_span: OpenInterval,
12140: ) -> None:
12141:
+12142: trim_start, trim_endex = trim_span
if ((likely(PyTuple_CheckExact(__pyx_v_trim_span))) || (PyList_CheckExact(__pyx_v_trim_span))) { PyObject* sequence = __pyx_v_trim_span; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 12142, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_trim_span); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 12142, __pyx_L1_error) __pyx_t_4 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 12142, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_trim_start = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_trim_endex = __pyx_t_2; __pyx_t_2 = 0;
+12143: if trim_start is not None and trim_start < 0:
__pyx_t_6 = (__pyx_v_trim_start != Py_None); __pyx_t_7 = (__pyx_t_6 != 0); if (__pyx_t_7) { } else { __pyx_t_5 = __pyx_t_7; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = PyObject_RichCompare(__pyx_v_trim_start, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12143, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 12143, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = __pyx_t_7; __pyx_L6_bool_binop_done:; if (unlikely(__pyx_t_5)) { /* … */ }
+12144: raise ValueError('negative start')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 12144, __pyx_L1_error)
+12145: if trim_endex is not None and trim_endex < 0:
__pyx_t_7 = (__pyx_v_trim_endex != Py_None); __pyx_t_6 = (__pyx_t_7 != 0); if (__pyx_t_6) { } else { __pyx_t_5 = __pyx_t_6; goto __pyx_L9_bool_binop_done; } __pyx_t_2 = PyObject_RichCompare(__pyx_v_trim_endex, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12145, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 12145, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = __pyx_t_6; __pyx_L9_bool_binop_done:; if (unlikely(__pyx_t_5)) { /* … */ }
+12146: raise ValueError('negative endex')
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 12146, __pyx_L1_error)
12147:
12148: # Copy-pasted from Memory, because I cannot figure out how to override properties
+12149: Memory_SetTrimSpan(self._, trim_span)
__pyx_t_8 = __pyx_f_11cbytesparse_1c_Memory_SetTrimSpan(__pyx_v_self->__pyx_base._, __pyx_v_trim_span); if (unlikely(__pyx_t_8 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 12149, __pyx_L1_error)
12150:
12151: @property
+12152: def trim_start(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_10trim_start_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_10trim_start_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_10trim_start___get__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_10trim_start___get__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("cbytesparse.c.bytesparse.trim_start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
12153: self,
12154: ) -> Optional[Address]:
12155:
12156: # Copy-pasted from Memory, because I cannot figure out how to override properties
+12157: return Memory_GetTrimStart(self._)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11cbytesparse_1c_Memory_GetTrimStart(__pyx_v_self->__pyx_base._); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
12158:
12159: @trim_start.setter
+12160: def trim_start(
/* Python wrapper */ static int __pyx_pw_11cbytesparse_1c_10bytesparse_10trim_start_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_start); /*proto*/ static int __pyx_pw_11cbytesparse_1c_10bytesparse_10trim_start_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_trim_start) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_10trim_start_2__set__(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), ((PyObject *)__pyx_v_trim_start)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_11cbytesparse_1c_10bytesparse_10trim_start_2__set__(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_trim_start) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse.trim_start.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_114generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
12161: self,
12162: trim_start: Optional[Address],
12163: ) -> None:
12164:
+12165: if trim_start is not None and trim_start < 0:
__pyx_t_2 = (__pyx_v_trim_start != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(__pyx_v_trim_start, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12165, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 12165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ }
+12166: raise ValueError('negative start')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 12166, __pyx_L1_error)
12167:
12168: # Copy-pasted from Memory, because I cannot figure out how to override properties
+12169: Memory_SetTrimStart(self._, trim_start)
__pyx_t_5 = __pyx_f_11cbytesparse_1c_Memory_SetTrimStart(__pyx_v_self->__pyx_base._, __pyx_v_trim_start); if (unlikely(__pyx_t_5 == ((__pyx_t_11cbytesparse_1c_vint)-1))) __PYX_ERR(0, 12169, __pyx_L1_error)
12170:
+12171: def values(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_113values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_112values[] = "bytesparse.values(self, start: Optional[Address] = None, endex: Optional[Union[Address, EllipsisType]] = None, pattern: Optional[Union[AnyBytes, Value]] = None) -> Iterator[Optional[Value]]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_113values = {"values", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_113values, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_112values}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_113values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_v_pattern = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("values (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,&__pyx_n_s_pattern,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_112values(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex, PyObject *__pyx_v_pattern) { struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_18_values *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("values", 0); __pyx_cur_scope = (struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_18_values *)__pyx_tp_new_11cbytesparse_1c___pyx_scope_struct_18_values(__pyx_ptype_11cbytesparse_1c___pyx_scope_struct_18_values, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_18_values *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 12171, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); __pyx_cur_scope->__pyx_v_start = __pyx_v_start; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); __pyx_cur_scope->__pyx_v_endex = __pyx_v_endex; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_pattern = __pyx_v_pattern; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pattern); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pattern); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_11cbytesparse_1c_10bytesparse_114generator18, __pyx_codeobj__54, (PyObject *) __pyx_cur_scope, __pyx_n_s_values, __pyx_n_s_bytesparse_values, __pyx_n_s_cbytesparse_c); if (unlikely(!gen)) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_11cbytesparse_1c_10bytesparse_114generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("values", 0); __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 12171, __pyx_L1_error) /* … */ /* function exit code */ PyErr_SetNone(PyExc_StopIteration); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__375 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex, __pyx_n_s_pattern, __pyx_n_s_endex_2); if (unlikely(!__pyx_tuple__375)) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__375); __Pyx_GIVEREF(__pyx_tuple__375); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_113values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_values, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_values, __pyx_t_11) < 0) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__375, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_values, 12171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 12171, __pyx_L1_error) /* … */ struct __pyx_obj_11cbytesparse_1c___pyx_scope_struct_18_values { PyObject_HEAD PyObject *__pyx_v_endex; PyObject *__pyx_v_endex_; PyObject *__pyx_v_pattern; struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self; PyObject *__pyx_v_start; };
12172: self,
+12173: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Address); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+12174: endex: Optional[Union[Address, EllipsisType]] = None,
values[1] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Optional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Union); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Address); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EllipsisType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1); __pyx_t_6 = 0; __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_t_11) < 0) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+12175: pattern: Optional[Union[AnyBytes, Value]] = None,
values[2] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pattern); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "values") < 0)) __PYX_ERR(0, 12171, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; __pyx_v_pattern = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("values", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12171, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.values", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_112values(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex, __pyx_v_pattern); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Optional); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_13); __pyx_t_9 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pattern, __pyx_t_6) < 0) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12176: ) -> Iterator[Optional[Value]]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Iterator); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_Optional); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_13, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_t_11) < 0) __PYX_ERR(0, 12171, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12177:
+12178: endex_ = endex # backup
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); __pyx_cur_scope->__pyx_v_endex_ = __pyx_cur_scope->__pyx_v_endex;
+12179: if endex is Ellipsis:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_endex == __pyx_builtin_Ellipsis); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ }
+12180: endex = None
__Pyx_INCREF(Py_None); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, Py_None); __Pyx_GIVEREF(Py_None);
+12181: start, endex = self._rectify_span(start, endex)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_start, __pyx_cur_scope->__pyx_v_endex}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_start); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_start); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_endex); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 12181, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_5), 2) < 0) __PYX_ERR(0, 12181, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 12181, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_start); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_start, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0;
+12182: if endex_ is Ellipsis:
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_endex_ == __pyx_builtin_Ellipsis); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ }
+12183: endex = endex_ # restore
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_endex_); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_endex); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_endex, __pyx_cur_scope->__pyx_v_endex_); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_endex_);
+12184: yield from super().values(start=start, endex=endex, pattern=pattern)
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_self)); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_values); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_cur_scope->__pyx_v_start) < 0) __PYX_ERR(0, 12184, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_endex, __pyx_cur_scope->__pyx_v_endex) < 0) __PYX_ERR(0, 12184, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_pattern, __pyx_cur_scope->__pyx_v_pattern) < 0) __PYX_ERR(0, 12184, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __Pyx_Generator_Yield_From(__pyx_generator, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XGOTREF(__pyx_r); if (likely(__pyx_r)) { __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L8_resume_from_yield_from:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 12184, __pyx_L1_error) } else { PyObject* exc_type = __Pyx_PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear(); else __PYX_ERR(0, 12184, __pyx_L1_error) } } CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
12185:
+12186: def view(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_116view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_115view[] = "bytesparse.view(self, start: Optional[Address] = None, endex: Optional[Address] = None) -> memoryview"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_116view = {"view", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_116view, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_115view}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_116view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_start = 0; PyObject *__pyx_v_endex = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("view (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_endex,0}; PyObject* values[2] = {0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_115view(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_endex) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("view", 0); __Pyx_INCREF(__pyx_v_start); __Pyx_INCREF(__pyx_v_endex); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("cbytesparse.c.bytesparse.view", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_endex); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__376 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_start, __pyx_n_s_endex); if (unlikely(!__pyx_tuple__376)) __PYX_ERR(0, 12186, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__376); __Pyx_GIVEREF(__pyx_tuple__376); /* … */ __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_116view, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_view, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__377)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_view, __pyx_t_7) < 0) __PYX_ERR(0, 12186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__377 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__376, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_view, 12186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(0, 12186, __pyx_L1_error)
12187: self,
+12188: start: Optional[Address] = None,
values[0] = ((PyObject *)Py_None); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(0, 12186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12189: endex: Optional[Address] = None,
values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start); if (value) { values[0] = value; kw_args--; } } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_endex); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "view") < 0)) __PYX_ERR(0, 12186, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_start = values[0]; __pyx_v_endex = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("view", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12186, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.view", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_115view(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_start, __pyx_v_endex); /* … */ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Optional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_endex, __pyx_t_7) < 0) __PYX_ERR(0, 12186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12190: ) -> memoryview:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_memoryview); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 12186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12191:
+12192: start, endex = self._rectify_span(start, endex)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_span); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_start, __pyx_v_endex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_start); __Pyx_GIVEREF(__pyx_v_start); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_start); __Pyx_INCREF(__pyx_v_endex); __Pyx_GIVEREF(__pyx_v_endex); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_endex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 12192, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 12192, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 12192, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_endex, __pyx_t_5); __pyx_t_5 = 0;
+12193: return super().view(start=start, endex=endex)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_v_start) < 0) __PYX_ERR(0, 12193, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_endex, __pyx_v_endex) < 0) __PYX_ERR(0, 12193, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
12194:
+12195: def write(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_118write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_117write[] = "bytesparse.write(self, address: Address, data: Union[AnyBytes, Value, ImmutableMemory], clear: bool = False) -> None"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_118write = {"write", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_118write, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_117write}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_118write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_v_clear = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,&__pyx_n_s_clear,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_117write(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data, PyObject *__pyx_v_clear) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse.write", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__378 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data, __pyx_n_s_clear); if (unlikely(!__pyx_tuple__378)) __PYX_ERR(0, 12195, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__378); __Pyx_GIVEREF(__pyx_tuple__378); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_118write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_write, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__379)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_write, __pyx_t_13) < 0) __PYX_ERR(0, 12195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__379 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__378, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_write, 12195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__379)) __PYX_ERR(0, 12195, __pyx_L1_error)
12196: self,
+12197: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Address); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_address, __pyx_t_11) < 0) __PYX_ERR(0, 12195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+12198: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Union); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_13); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_data, __pyx_t_13) < 0) __PYX_ERR(0, 12195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+12199: clear: bool = False,
values[2] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, 1); __PYX_ERR(0, 12195, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_clear); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 12195, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_data = values[1]; __pyx_v_clear = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12195, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.write", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_117write(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_data, __pyx_v_clear); /* … */ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_clear, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 12195, __pyx_L1_error)
+12200: ) -> None:
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, Py_None) < 0) __PYX_ERR(0, 12195, __pyx_L1_error)
12201:
+12202: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+12203: super().write(address, data, clear=clear)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_address); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_data); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_clear, __pyx_v_clear) < 0) __PYX_ERR(0, 12203, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12204:
+12205: def write_backup(
/* Python wrapper */ static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_120write_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_11cbytesparse_1c_10bytesparse_119write_backup[] = "bytesparse.write_backup(self, address: Address, data: Union[AnyBytes, Value, ImmutableMemory], clear: bool = False) -> List[ImmutableMemory]"; static PyMethodDef __pyx_mdef_11cbytesparse_1c_10bytesparse_120write_backup = {"write_backup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_11cbytesparse_1c_10bytesparse_120write_backup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cbytesparse_1c_10bytesparse_119write_backup}; static PyObject *__pyx_pw_11cbytesparse_1c_10bytesparse_120write_backup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_address = 0; PyObject *__pyx_v_data = 0; PyObject *__pyx_v_clear = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write_backup (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_data,&__pyx_n_s_clear,0}; PyObject* values[3] = {0,0,0}; /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11cbytesparse_1c_10bytesparse_119write_backup(struct __pyx_obj_11cbytesparse_1c_bytesparse *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_data, PyObject *__pyx_v_clear) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write_backup", 0); __Pyx_INCREF(__pyx_v_address); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("cbytesparse.c.bytesparse.write_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_address); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__380 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_data, __pyx_n_s_clear); if (unlikely(!__pyx_tuple__380)) __PYX_ERR(0, 12205, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__380); __Pyx_GIVEREF(__pyx_tuple__380); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 12205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_11cbytesparse_1c_10bytesparse_120write_backup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_bytesparse_write_backup, NULL, __pyx_n_s_cbytesparse_c, __pyx_d, ((PyObject *)__pyx_codeobj__381)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse->tp_dict, __pyx_n_s_write_backup, __pyx_t_7) < 0) __PYX_ERR(0, 12205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_11cbytesparse_1c_bytesparse); __pyx_codeobj__381 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__380, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_cbytesparse_c_pyx, __pyx_n_s_write_backup, 12205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__381)) __PYX_ERR(0, 12205, __pyx_L1_error)
12206: self,
+12207: address: Address,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Address); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_address, __pyx_t_7) < 0) __PYX_ERR(0, 12205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+12208: data: Union[AnyBytes, Value, ImmutableMemory],
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Union); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_AnyBytes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 12208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_6); __pyx_t_9 = 0; __pyx_t_11 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_data, __pyx_t_6) < 0) __PYX_ERR(0, 12205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+12209: clear: bool = False,
values[2] = ((PyObject *)Py_False); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("write_backup", 0, 2, 3, 1); __PYX_ERR(0, 12205, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_clear); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_backup") < 0)) __PYX_ERR(0, 12205, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_address = values[0]; __pyx_v_data = values[1]; __pyx_v_clear = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("write_backup", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 12205, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("cbytesparse.c.bytesparse.write_backup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11cbytesparse_1c_10bytesparse_119write_backup(((struct __pyx_obj_11cbytesparse_1c_bytesparse *)__pyx_v_self), __pyx_v_address, __pyx_v_data, __pyx_v_clear); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_clear, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 12205, __pyx_L1_error)
+12210: ) -> List[ImmutableMemory]:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_List); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 12210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ImmutableMemory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_t_7) < 0) __PYX_ERR(0, 12205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12211:
+12212: address = self._rectify_address(address)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rectify_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_address, __pyx_t_1); __pyx_t_1 = 0;
+12213: return super().write_backup(address, data, clear=clear)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_11cbytesparse_1c_bytesparse)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_write_backup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_address); __Pyx_GIVEREF(__pyx_v_address); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_address); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_data); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_clear, __pyx_v_clear) < 0) __PYX_ERR(0, 12213, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;