diff --git a/README.md b/README.md index 4e9d2f3..03e188e 100644 --- a/README.md +++ b/README.md @@ -83,8 +83,6 @@ clear :: entity... -> boolean, boolean destroy :: entity... -> boolean, boolean multi_set :: entity, fragment[], component[]? -> boolean, boolean -multi_assign :: entity, fragment[], component[]? -> boolean, boolean -multi_insert :: entity, fragment[], component[]? -> boolean, boolean multi_remove :: entity, fragment[] -> boolean, boolean batch_set :: chunk | query, fragment, any... -> integer, boolean @@ -95,8 +93,6 @@ batch_clear :: chunk | query... -> integer, boolean batch_destroy :: chunk | query... -> integer, boolean batch_multi_set :: chunk | query, fragment[], component[]? -> integer, boolean -batch_multi_assign :: chunk | query, fragment[], component[]? -> integer, boolean -batch_multi_insert :: chunk | query, fragment[], component[]? -> integer, boolean batch_multi_remove :: chunk | query, fragment[] -> integer, boolean chunk :: fragment, fragment... -> chunk, entity[], integer diff --git a/evolved.lua b/evolved.lua index 10eaed0..4b31559 100644 --- a/evolved.lua +++ b/evolved.lua @@ -661,8 +661,6 @@ local __evolved_clear local __evolved_destroy local __evolved_multi_set -local __evolved_multi_assign -local __evolved_multi_insert local __evolved_multi_remove local __evolved_batch_set @@ -673,8 +671,6 @@ local __evolved_batch_clear local __evolved_batch_destroy local __evolved_batch_multi_set -local __evolved_batch_multi_assign -local __evolved_batch_multi_insert local __evolved_batch_multi_remove local __evolved_chunk @@ -1511,8 +1507,6 @@ local __defer_clear local __defer_destroy local __defer_multi_set -local __defer_multi_assign -local __defer_multi_insert local __defer_multi_remove local __defer_batch_set @@ -1523,8 +1517,6 @@ local __defer_batch_clear local __defer_batch_destroy local __defer_batch_multi_set -local __defer_batch_multi_assign -local __defer_batch_multi_insert local __defer_batch_multi_remove local __defer_spawn_entity_at @@ -1848,8 +1840,6 @@ local __chunk_clear local __chunk_destroy local __chunk_multi_set -local __chunk_multi_assign -local __chunk_multi_insert local __chunk_multi_remove --- @@ -2903,291 +2893,6 @@ __chunk_multi_set = function(old_chunk, fragments, fragment_count, components) return old_entity_count end ----@param chunk evolved.chunk ----@param fragments evolved.fragment[] ----@param fragment_count integer ----@param components evolved.component[] ----@return integer assigned_count -__chunk_multi_assign = function(chunk, fragments, fragment_count, components) - if __defer_depth <= 0 then - __error_fmt('batched chunk operations should be deferred') - end - - if fragment_count == 0 then - return 0 - end - - if not __chunk_has_any_fragment_list(chunk, fragments, fragment_count) then - return 0 - end - - local chunk_entity_list = chunk.__entity_list - local chunk_entity_count = chunk.__entity_count - - if chunk_entity_count == 0 then - return 0 - end - - local chunk_fragment_set = chunk.__fragment_set - local chunk_component_indices = chunk.__component_indices - local chunk_component_storages = chunk.__component_storages - - local chunk_has_defaults_or_constructs = chunk.__has_defaults_or_constructs - local chunk_has_set_or_assign_hooks = chunk.__has_set_or_assign_hooks - - for i = 1, fragment_count do - local fragment = fragments[i] - - if chunk_fragment_set[fragment] then - ---@type evolved.default? - local fragment_default - - ---@type evolved.set_hook?, evolved.assign_hook? - local fragment_on_set, fragment_on_assign - - do - if chunk_has_defaults_or_constructs then - fragment_default = __evolved_get(fragment, __DEFAULT) - end - - if chunk_has_set_or_assign_hooks then - fragment_on_set, fragment_on_assign = __evolved_get(fragment, __ON_SET, __ON_ASSIGN) - end - end - - if fragment_on_set or fragment_on_assign then - local component_index = chunk_component_indices[fragment] - - if component_index then - local component_storage = chunk_component_storages[component_index] - - local new_component = components[i] - if new_component == nil then new_component = fragment_default end - if new_component == nil then new_component = true end - - for place = 1, chunk_entity_count do - local entity = chunk_entity_list[place] - local old_component = component_storage[place] - - component_storage[place] = new_component - - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment, new_component, old_component) - end - - if fragment_on_assign then - __defer_call_hook(fragment_on_assign, entity, fragment, new_component, old_component) - end - end - else - for place = 1, chunk_entity_count do - local entity = chunk_entity_list[place] - - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment) - end - - if fragment_on_assign then - __defer_call_hook(fragment_on_assign, entity, fragment) - end - end - end - else - local component_index = chunk_component_indices[fragment] - - if component_index then - local component_storage = chunk_component_storages[component_index] - - local new_component = components[i] - if new_component == nil then new_component = fragment_default end - if new_component == nil then new_component = true end - - for place = 1, chunk_entity_count do - component_storage[place] = new_component - end - else - -- nothing - end - end - end - end - - return chunk_entity_count -end - ----@param old_chunk evolved.chunk ----@param fragments evolved.fragment[] ----@param fragment_count integer ----@param components evolved.component[] ----@return integer inserted_count -__chunk_multi_insert = function(old_chunk, fragments, fragment_count, components) - if __defer_depth <= 0 then - __error_fmt('batched chunk operations should be deferred') - end - - if fragment_count == 0 then - return 0 - end - - local new_chunk = __chunk_with_fragment_list(old_chunk, fragments, fragment_count) - - if not new_chunk or old_chunk == new_chunk then - return 0 - end - - local old_entity_list = old_chunk.__entity_list - local old_entity_count = old_chunk.__entity_count - - if old_entity_count == 0 then - return 0 - end - - local old_fragment_set = old_chunk.__fragment_set - local old_component_count = old_chunk.__component_count - local old_component_storages = old_chunk.__component_storages - local old_component_fragments = old_chunk.__component_fragments - - local new_entity_list = new_chunk.__entity_list - local new_entity_count = new_chunk.__entity_count - - local new_component_indices = new_chunk.__component_indices - local new_component_storages = new_chunk.__component_storages - - local new_chunk_has_defaults_or_constructs = new_chunk.__has_defaults_or_constructs - local new_chunk_has_set_or_insert_hooks = new_chunk.__has_set_or_insert_hooks - - if new_entity_count == 0 then - old_chunk.__entity_list, new_chunk.__entity_list = - new_entity_list, old_entity_list - - old_entity_list, new_entity_list = - new_entity_list, old_entity_list - - for old_ci = 1, old_component_count do - local old_f = old_component_fragments[old_ci] - local new_ci = new_component_indices[old_f] - old_component_storages[old_ci], new_component_storages[new_ci] = - new_component_storages[new_ci], old_component_storages[old_ci] - end - - new_chunk.__entity_count = old_entity_count - else - __lua_table_move( - old_entity_list, 1, old_entity_count, - new_entity_count + 1, new_entity_list) - - for old_ci = 1, old_component_count do - local old_f = old_component_fragments[old_ci] - local old_cs = old_component_storages[old_ci] - local new_ci = new_component_indices[old_f] - local new_cs = new_component_storages[new_ci] - __lua_table_move(old_cs, 1, old_entity_count, new_entity_count + 1, new_cs) - end - - new_chunk.__entity_count = new_entity_count + old_entity_count - end - - do - local entity_chunks = __entity_chunks - local entity_places = __entity_places - - for new_place = new_entity_count + 1, new_entity_count + old_entity_count do - local entity = new_entity_list[new_place] - local entity_index = entity % 0x100000 - entity_chunks[entity_index] = new_chunk - entity_places[entity_index] = new_place - end - - __detach_all_entities(old_chunk) - end - - ---@type table - local inserted_set = __acquire_table(__table_pool_tag.fragment_set) - - for i = 1, fragment_count do - local fragment = fragments[i] - - if not inserted_set[fragment] and not old_fragment_set[fragment] then - inserted_set[fragment] = true - - ---@type evolved.default? - local fragment_default - - ---@type evolved.set_hook?, evolved.insert_hook? - local fragment_on_set, fragment_on_insert - - do - if new_chunk_has_defaults_or_constructs then - fragment_default = __evolved_get(fragment, __DEFAULT) - end - - if new_chunk_has_set_or_insert_hooks then - fragment_on_set, fragment_on_insert = __evolved_get(fragment, __ON_SET, __ON_INSERT) - end - end - - if fragment_on_set or fragment_on_insert then - local new_component_index = new_component_indices[fragment] - - if new_component_index then - local new_component_storage = new_component_storages[new_component_index] - - local new_component = components[i] - if new_component == nil then new_component = fragment_default end - if new_component == nil then new_component = true end - - for new_place = new_entity_count + 1, new_entity_count + old_entity_count do - local entity = new_entity_list[new_place] - - new_component_storage[new_place] = new_component - - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment, new_component) - end - - if fragment_on_insert then - __defer_call_hook(fragment_on_insert, entity, fragment, new_component) - end - end - else - for new_place = new_entity_count + 1, new_entity_count + old_entity_count do - local entity = new_entity_list[new_place] - - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment) - end - - if fragment_on_insert then - __defer_call_hook(fragment_on_insert, entity, fragment) - end - end - end - else - local new_component_index = new_component_indices[fragment] - - if new_component_index then - local new_component_storage = new_component_storages[new_component_index] - - local new_component = components[i] - if new_component == nil then new_component = fragment_default end - if new_component == nil then new_component = true end - - for new_place = new_entity_count + 1, new_entity_count + old_entity_count do - new_component_storage[new_place] = new_component - end - else - -- nothing - end - end - end - end - - __release_table(__table_pool_tag.fragment_set, inserted_set) - - __structural_changes = __structural_changes + 1 - return old_entity_count -end - ---@param old_chunk evolved.chunk ---@param fragments evolved.fragment[] ---@param fragment_count integer @@ -3497,8 +3202,6 @@ local __defer_op = { destroy = 6, multi_set = 7, - multi_assign = 8, - multi_insert = 9, multi_remove = 10, batch_set = 11, @@ -3509,8 +3212,6 @@ local __defer_op = { batch_destroy = 16, batch_multi_set = 17, - batch_multi_assign = 18, - batch_multi_insert = 19, batch_multi_remove = 20, spawn_entity_at = 21, @@ -3851,76 +3552,6 @@ __defer_ops[__defer_op.multi_set] = function(bytes, index) return 3 end ----@param entity evolved.entity ----@param fragments evolved.fragment[] ----@param fragment_count integer ----@param components evolved.component[] ----@param component_count integer -__defer_multi_assign = function(entity, fragments, fragment_count, components, component_count) - ---@type evolved.fragment[] - local fragment_list = __acquire_table(__table_pool_tag.fragment_list) - __lua_table_move(fragments, 1, fragment_count, 1, fragment_list) - - ---@type evolved.component[] - local component_list = __acquire_table(__table_pool_tag.component_list) - __lua_table_move(components, 1, component_count, 1, component_list) - - local length = __defer_length - local bytecode = __defer_bytecode - - bytecode[length + 1] = __defer_op.multi_assign - bytecode[length + 2] = entity - bytecode[length + 3] = fragment_list - bytecode[length + 4] = component_list - - __defer_length = length + 4 -end - -__defer_ops[__defer_op.multi_assign] = function(bytes, index) - local entity = bytes[index + 0] - local fragments = bytes[index + 1] - local components = bytes[index + 2] - __evolved_multi_assign(entity, fragments, components) - __release_table(__table_pool_tag.fragment_list, fragments) - __release_table(__table_pool_tag.component_list, components) - return 3 -end - ----@param entity evolved.entity ----@param fragments evolved.fragment[] ----@param fragment_count integer ----@param components evolved.component[] ----@param component_count integer -__defer_multi_insert = function(entity, fragments, fragment_count, components, component_count) - ---@type evolved.fragment[] - local fragment_list = __acquire_table(__table_pool_tag.fragment_list) - __lua_table_move(fragments, 1, fragment_count, 1, fragment_list) - - ---@type evolved.component[] - local component_list = __acquire_table(__table_pool_tag.component_list) - __lua_table_move(components, 1, component_count, 1, component_list) - - local length = __defer_length - local bytecode = __defer_bytecode - - bytecode[length + 1] = __defer_op.multi_insert - bytecode[length + 2] = entity - bytecode[length + 3] = fragment_list - bytecode[length + 4] = component_list - - __defer_length = length + 4 -end - -__defer_ops[__defer_op.multi_insert] = function(bytes, index) - local entity = bytes[index + 0] - local fragments = bytes[index + 1] - local components = bytes[index + 2] - __evolved_multi_insert(entity, fragments, components) - __release_table(__table_pool_tag.fragment_list, fragments) - __release_table(__table_pool_tag.component_list, components) - return 3 -end - ---@param entity evolved.entity ---@param fragments evolved.fragment[] ---@param fragment_count integer @@ -4425,76 +4056,6 @@ __defer_ops[__defer_op.batch_multi_set] = function(bytes, index) return 3 end ----@param chunk_or_query evolved.chunk | evolved.query ----@param fragments evolved.fragment[] ----@param fragment_count integer ----@param components evolved.component[] ----@param component_count integer -__defer_batch_multi_assign = function(chunk_or_query, fragments, fragment_count, components, component_count) - ---@type evolved.fragment[] - local fragment_list = __acquire_table(__table_pool_tag.fragment_list) - __lua_table_move(fragments, 1, fragment_count, 1, fragment_list) - - ---@type evolved.component[] - local component_list = __acquire_table(__table_pool_tag.component_list) - __lua_table_move(components, 1, component_count, 1, component_list) - - local length = __defer_length - local bytecode = __defer_bytecode - - bytecode[length + 1] = __defer_op.batch_multi_assign - bytecode[length + 2] = chunk_or_query - bytecode[length + 3] = fragment_list - bytecode[length + 4] = component_list - - __defer_length = length + 4 -end - -__defer_ops[__defer_op.batch_multi_assign] = function(bytes, index) - local chunk_or_query = bytes[index + 0] - local fragments = bytes[index + 1] - local components = bytes[index + 2] - __evolved_batch_multi_assign(chunk_or_query, fragments, components) - __release_table(__table_pool_tag.fragment_list, fragments) - __release_table(__table_pool_tag.component_list, components) - return 3 -end - ----@param chunk_or_query evolved.chunk | evolved.query ----@param fragments evolved.fragment[] ----@param fragment_count integer ----@param components evolved.component[] ----@param component_count integer -__defer_batch_multi_insert = function(chunk_or_query, fragments, fragment_count, components, component_count) - ---@type evolved.fragment[] - local fragment_list = __acquire_table(__table_pool_tag.fragment_list) - __lua_table_move(fragments, 1, fragment_count, 1, fragment_list) - - ---@type evolved.component[] - local component_list = __acquire_table(__table_pool_tag.component_list) - __lua_table_move(components, 1, component_count, 1, component_list) - - local length = __defer_length - local bytecode = __defer_bytecode - - bytecode[length + 1] = __defer_op.batch_multi_insert - bytecode[length + 2] = chunk_or_query - bytecode[length + 3] = fragment_list - bytecode[length + 4] = component_list - - __defer_length = length + 4 -end - -__defer_ops[__defer_op.batch_multi_insert] = function(bytes, index) - local chunk_or_query = bytes[index + 0] - local fragments = bytes[index + 1] - local components = bytes[index + 2] - __evolved_batch_multi_insert(chunk_or_query, fragments, components) - __release_table(__table_pool_tag.fragment_list, fragments) - __release_table(__table_pool_tag.component_list, components) - return 3 -end - ---@param chunk_or_query evolved.chunk | evolved.query ---@param fragments evolved.fragment[] ---@param fragment_count integer @@ -5798,259 +5359,6 @@ __evolved_multi_set = function(entity, fragments, components) return true, false end ----@param entity evolved.entity ----@param fragments evolved.fragment[] ----@param components? evolved.component[] ----@return boolean is_any_assigned ----@return boolean is_deferred -__evolved_multi_assign = function(entity, fragments, components) - local fragment_count = #fragments - - if fragment_count == 0 then - return false, false - end - - if not components then - components = __safe_tbls.__EMPTY_COMPONENT_LIST - end - - if __defer_depth > 0 then - __defer_multi_assign(entity, fragments, fragment_count, components, #components) - return false, true - end - - if __debug_mode then - __debug_fns.validate_fragment_list(fragments, fragment_count) - end - - local entity_index = entity % 0x100000 - - if __freelist_ids[entity_index] ~= entity then - return false, false - end - - local entity_chunks = __entity_chunks - local entity_places = __entity_places - - local chunk = entity_chunks[entity_index] - local place = entity_places[entity_index] - - if not chunk or not __chunk_has_any_fragment_list(chunk, fragments, fragment_count) then - return false, false - end - - __evolved_defer() - - do - local chunk_fragment_set = chunk.__fragment_set - local chunk_component_indices = chunk.__component_indices - local chunk_component_storages = chunk.__component_storages - - local chunk_has_defaults_or_constructs = chunk.__has_defaults_or_constructs - local chunk_has_set_or_assign_hooks = chunk.__has_set_or_assign_hooks - - for i = 1, fragment_count do - local fragment = fragments[i] - - if chunk_fragment_set[fragment] then - ---@type evolved.set_hook?, evolved.assign_hook? - local fragment_on_set, fragment_on_assign - - if chunk_has_set_or_assign_hooks then - fragment_on_set, fragment_on_assign = __evolved_get(fragment, __ON_SET, __ON_ASSIGN) - end - - local component_index = chunk_component_indices[fragment] - - if component_index then - local component_storage = chunk_component_storages[component_index] - - local new_component = components[i] - - if chunk_has_defaults_or_constructs and new_component == nil then - new_component = __evolved_get(fragment, __DEFAULT) - end - - if new_component == nil then - new_component = true - end - - if fragment_on_set or fragment_on_assign then - local old_component = component_storage[place] - - component_storage[place] = new_component - - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment, new_component, old_component) - end - - if fragment_on_assign then - __defer_call_hook(fragment_on_assign, entity, fragment, new_component, old_component) - end - else - component_storage[place] = new_component - end - else - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment) - end - - if fragment_on_assign then - __defer_call_hook(fragment_on_assign, entity, fragment) - end - end - end - end - end - - __evolved_commit() - return true, false -end - ----@param entity evolved.entity ----@param fragments evolved.fragment[] ----@param components? evolved.component[] ----@return boolean is_any_inserted ----@return boolean is_deferred -__evolved_multi_insert = function(entity, fragments, components) - local fragment_count = #fragments - - if fragment_count == 0 then - return false, false - end - - if not components then - components = __safe_tbls.__EMPTY_COMPONENT_LIST - end - - if __defer_depth > 0 then - __defer_multi_insert(entity, fragments, fragment_count, components, #components) - return false, true - end - - if __debug_mode then - __debug_fns.validate_fragment_list(fragments, fragment_count) - end - - local entity_index = entity % 0x100000 - - if __freelist_ids[entity_index] ~= entity then - return false, false - end - - local entity_chunks = __entity_chunks - local entity_places = __entity_places - - local old_chunk = entity_chunks[entity_index] - local old_place = entity_places[entity_index] - - local new_chunk = __chunk_with_fragment_list(old_chunk, fragments, fragment_count) - - if not new_chunk or old_chunk == new_chunk then - return false, false - end - - __evolved_defer() - - do - local new_entity_list = new_chunk.__entity_list - local new_entity_count = new_chunk.__entity_count - - local new_component_indices = new_chunk.__component_indices - local new_component_storages = new_chunk.__component_storages - - local new_chunk_has_defaults_or_constructs = new_chunk.__has_defaults_or_constructs - local new_chunk_has_set_or_insert_hooks = new_chunk.__has_set_or_insert_hooks - - local old_fragment_set = old_chunk and old_chunk.__fragment_set or __safe_tbls.__EMPTY_FRAGMENT_SET - - local new_place = new_entity_count + 1 - new_chunk.__entity_count = new_place - - new_entity_list[new_place] = entity - - if old_chunk then - local old_component_count = old_chunk.__component_count - local old_component_storages = old_chunk.__component_storages - local old_component_fragments = old_chunk.__component_fragments - - for old_ci = 1, old_component_count do - local old_f = old_component_fragments[old_ci] - local old_cs = old_component_storages[old_ci] - local new_ci = new_component_indices[old_f] - local new_cs = new_component_storages[new_ci] - new_cs[new_place] = old_cs[old_place] - end - - __detach_entity(old_chunk, old_place) - end - - do - entity_chunks[entity_index] = new_chunk - entity_places[entity_index] = new_place - - __structural_changes = __structural_changes + 1 - end - - ---@type table - local inserted_set = __acquire_table(__table_pool_tag.fragment_set) - - for i = 1, fragment_count do - local fragment = fragments[i] - - if not inserted_set[fragment] and not old_fragment_set[fragment] then - inserted_set[fragment] = true - - ---@type evolved.set_hook?, evolved.insert_hook? - local fragment_on_set, fragment_on_insert - - if new_chunk_has_set_or_insert_hooks then - fragment_on_set, fragment_on_insert = __evolved_get(fragment, __ON_SET, __ON_INSERT) - end - - local new_component_index = new_component_indices[fragment] - - if new_component_index then - local new_component_storage = new_component_storages[new_component_index] - - local new_component = components[i] - - if new_chunk_has_defaults_or_constructs and new_component == nil then - new_component = __evolved_get(fragment, __DEFAULT) - end - - if new_component == nil then - new_component = true - end - - new_component_storage[new_place] = new_component - - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment, new_component) - end - - if fragment_on_insert then - __defer_call_hook(fragment_on_insert, entity, fragment, new_component) - end - else - if fragment_on_set then - __defer_call_hook(fragment_on_set, entity, fragment) - end - - if fragment_on_insert then - __defer_call_hook(fragment_on_insert, entity, fragment) - end - end - end - end - - __release_table(__table_pool_tag.fragment_set, inserted_set) - end - - __evolved_commit() - return true, false -end - ---@param entity evolved.entity ---@param fragments evolved.fragment[] ---@return boolean is_all_removed @@ -6539,126 +5847,6 @@ __evolved_batch_multi_set = function(chunk_or_query, fragments, components) return set_count, false end ----@param chunk_or_query evolved.chunk | evolved.query ----@param fragments evolved.fragment[] ----@param components? evolved.component[] ----@return integer assigned_count ----@return boolean is_deferred -__evolved_batch_multi_assign = function(chunk_or_query, fragments, components) - local fragment_count = #fragments - - if fragment_count == 0 then - return 0, false - end - - if not components then - components = __safe_tbls.__EMPTY_COMPONENT_LIST - end - - if __defer_depth > 0 then - __defer_batch_multi_assign(chunk_or_query, fragments, fragment_count, components, #components) - return 0, true - end - - if __debug_mode then - __debug_fns.validate_fragment_list(fragments, fragment_count) - end - - local assigned_count = 0 - - __evolved_defer() - do - if __lua_type(chunk_or_query) ~= 'number' then - ---@cast chunk_or_query -evolved.query - local chunk = chunk_or_query --[[@as evolved.chunk]] - - assigned_count = assigned_count + __chunk_multi_assign(chunk, fragments, fragment_count, components) - else - ---@cast chunk_or_query -evolved.chunk - local query = chunk_or_query --[[@as evolved.query]] - - ---@type evolved.chunk[] - local chunk_list = __acquire_table(__table_pool_tag.chunk_stack) - local chunk_count = 0 - - for chunk in __evolved_execute(query) do - chunk_count = chunk_count + 1 - chunk_list[chunk_count] = chunk - end - - for chunk_index = 1, chunk_count do - local chunk = chunk_list[chunk_index] - assigned_count = assigned_count + __chunk_multi_assign(chunk, fragments, fragment_count, components) - end - - __release_table(__table_pool_tag.chunk_stack, chunk_list) - end - end - __evolved_commit() - - return assigned_count, false -end - ----@param chunk_or_query evolved.chunk | evolved.query ----@param fragments evolved.fragment[] ----@param components? evolved.component[] ----@return integer inserted_count ----@return boolean is_deferred -__evolved_batch_multi_insert = function(chunk_or_query, fragments, components) - local fragment_count = #fragments - - if fragment_count == 0 then - return 0, false - end - - if not components then - components = __safe_tbls.__EMPTY_COMPONENT_LIST - end - - if __defer_depth > 0 then - __defer_batch_multi_insert(chunk_or_query, fragments, fragment_count, components, #components) - return 0, true - end - - if __debug_mode then - __debug_fns.validate_fragment_list(fragments, fragment_count) - end - - local inserted_count = 0 - - __evolved_defer() - do - if __lua_type(chunk_or_query) ~= 'number' then - ---@cast chunk_or_query -evolved.query - local chunk = chunk_or_query --[[@as evolved.chunk]] - - inserted_count = inserted_count + __chunk_multi_insert(chunk, fragments, fragment_count, components) - else - ---@cast chunk_or_query -evolved.chunk - local query = chunk_or_query --[[@as evolved.query]] - - ---@type evolved.chunk[] - local chunk_list = __acquire_table(__table_pool_tag.chunk_stack) - local chunk_count = 0 - - for chunk in __evolved_execute(query) do - chunk_count = chunk_count + 1 - chunk_list[chunk_count] = chunk - end - - for chunk_index = 1, chunk_count do - local chunk = chunk_list[chunk_index] - inserted_count = inserted_count + __chunk_multi_insert(chunk, fragments, fragment_count, components) - end - - __release_table(__table_pool_tag.chunk_stack, chunk_list) - end - end - __evolved_commit() - - return inserted_count, false -end - ---@param chunk_or_query evolved.chunk | evolved.query ---@param fragments evolved.fragment[] ---@return integer removed_count @@ -8336,8 +7524,6 @@ evolved.clear = __evolved_clear evolved.destroy = __evolved_destroy evolved.multi_set = __evolved_multi_set -evolved.multi_assign = __evolved_multi_assign -evolved.multi_insert = __evolved_multi_insert evolved.multi_remove = __evolved_multi_remove evolved.batch_set = __evolved_batch_set @@ -8348,8 +7534,6 @@ evolved.batch_clear = __evolved_batch_clear evolved.batch_destroy = __evolved_batch_destroy evolved.batch_multi_set = __evolved_batch_multi_set -evolved.batch_multi_assign = __evolved_batch_multi_assign -evolved.batch_multi_insert = __evolved_batch_multi_insert evolved.batch_multi_remove = __evolved_batch_multi_remove evolved.chunk = __evolved_chunk