From 27eed30b13827daeb3d9ef006f08ea349262b7c1 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sat, 18 Jan 2025 03:09:01 +0700 Subject: [PATCH] batch-multi-api declarations (not impl) --- README.md | 5 +++ evolved.lua | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 118 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3317dca..473c0ec 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,11 @@ batch_remove :: query, fragment... -> integer, boolean batch_clear :: query -> integer, boolean batch_destroy :: query -> integer, boolean +batch_multi_set :: query, fragment[], component[]? -> integer, boolean +batch_multi_assign :: query, fragment[], component[]? -> integer, boolean +batch_multi_insert :: query, fragment[], component[]? -> integer, boolean +batch_multi_remove :: query, fragment[] -> integer, boolean + chunk :: fragment... -> chunk?, entity[]? select :: chunk, fragment... -> component[]... diff --git a/evolved.lua b/evolved.lua index 5d8f840..836a4eb 100644 --- a/evolved.lua +++ b/evolved.lua @@ -1573,8 +1573,13 @@ local __defer_op = { batch_clear = 15, batch_destroy = 16, - spawn_entity_at = 17, - spawn_entity_with = 18, + batch_multi_set = 17, + batch_multi_assign = 18, + batch_multi_insert = 19, + batch_multi_remove = 20, + + spawn_entity_at = 21, + spawn_entity_with = 22, } ---@type table @@ -1687,6 +1692,18 @@ local __defer_ops = { evolved.batch_destroy(query) return 1 end, + [__defer_op.batch_multi_set] = function(bytes, index) + error('not implemented yet', 2) + end, + [__defer_op.batch_multi_assign] = function(bytes, index) + error('not implemented yet', 2) + end, + [__defer_op.batch_multi_insert] = function(bytes, index) + error('not implemented yet', 2) + end, + [__defer_op.batch_multi_remove] = function(bytes, index) + error('not implemented yet', 2) + end, [__defer_op.spawn_entity_at] = function(bytes, index) local entity = bytes[index + 0] local chunk = bytes[index + 1] @@ -2043,6 +2060,33 @@ local function __defer_batch_destroy(query) __defer_length = length + 2 end +---@param query evolved.query +---@param fragments evolved.fragment[] +---@param components evolved.component[] +local function __defer_batch_multi_set(query, fragments, components) + error('not implemented yet', 2) +end + +---@param query evolved.query +---@param fragments evolved.fragment[] +---@param components evolved.component[] +local function __defer_batch_multi_assign(query, fragments, components) + error('not implemented yet', 2) +end + +---@param query evolved.query +---@param fragments evolved.fragment[] +---@param components evolved.component[] +local function __defer_batch_multi_insert(query, fragments, components) + error('not implemented yet', 2) +end + +---@param query evolved.query +---@param fragments evolved.fragment[] +local function __defer_batch_multi_remove(query, fragments) + error('not implemented yet', 2) +end + ---@param entity evolved.entity ---@param chunk evolved.chunk ---@param fragments evolved.fragment[] @@ -3480,6 +3524,73 @@ function evolved.batch_destroy(query) return destroyed_count, false end +---@param query evolved.query +---@param fragments evolved.fragment[] +---@param components? evolved.component[] +---@return integer set_count +---@return boolean is_deferred +function evolved.batch_multi_set(query, fragments, components) + if not components then + components = __EMPTY_COMPONENT_LIST + end + + if __defer_depth > 0 then + __defer_batch_multi_set(query, fragments, components) + return 0, true + end + + error('not implemented yet', 2) +end + +---@param query evolved.query +---@param fragments evolved.fragment[] +---@param components? evolved.component[] +---@return integer assigned_count +---@return boolean is_deferred +function evolved.batch_multi_assign(query, fragments, components) + if not components then + components = __EMPTY_COMPONENT_LIST + end + + if __defer_depth > 0 then + __defer_batch_multi_assign(query, fragments, components) + return 0, true + end + + error('not implemented yet', 2) +end + +---@param query evolved.query +---@param fragments evolved.fragment[] +---@param components? evolved.component[] +---@return integer inserted_count +---@return boolean is_deferred +function evolved.batch_multi_insert(query, fragments, components) + if not components then + components = __EMPTY_COMPONENT_LIST + end + + if __defer_depth > 0 then + __defer_batch_multi_insert(query, fragments, components) + return 0, true + end + + error('not implemented yet', 2) +end + +---@param query evolved.query +---@param fragments evolved.fragment[] +---@return integer removed_count +---@return boolean is_deferred +function evolved.batch_multi_remove(query, fragments) + if __defer_depth > 0 then + __defer_batch_multi_remove(query, fragments) + return 0, true + end + + error('not implemented yet', 2) +end + --- --- ---