remove evolved.multi_assign/insert, evolved.batch_multi_assing/insert

This commit is contained in:
BlackMATov
2025-03-20 04:21:46 +07:00
parent de07afb382
commit 04dcedc618
2 changed files with 0 additions and 820 deletions

View File

@@ -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

View File

@@ -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<evolved.fragment, boolean>
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<evolved.fragment, boolean>
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