hide builder mts to internal __builder table

This commit is contained in:
BlackMATov
2025-03-19 16:23:11 +07:00
parent 0465a60473
commit decf733b46

View File

@@ -130,6 +130,7 @@ local __query_sorted_excludes = {} ---@type table<evolved.query, evolved.assoc_l
local __lua_next = next local __lua_next = next
local __lua_pcall = pcall local __lua_pcall = pcall
local __lua_select = select local __lua_select = select
local __lua_setmetatable = setmetatable
local __lua_table_sort = table.sort local __lua_table_sort = table.sort
local __lua_table_unpack = table.unpack or unpack local __lua_table_unpack = table.unpack or unpack
local __lua_type = type local __lua_type = type
@@ -604,22 +605,22 @@ local __DESTROY_POLICY_REMOVE_FRAGMENT = __acquire_id()
local __safe_tbls = { local __safe_tbls = {
---@type table<evolved.fragment, integer> ---@type table<evolved.fragment, integer>
__EMPTY_FRAGMENT_SET = setmetatable({}, { __EMPTY_FRAGMENT_SET = __lua_setmetatable({}, {
__newindex = function() __error_fmt('attempt to modify empty fragment set') end __newindex = function() __error_fmt('attempt to modify empty fragment set') end
}), }),
---@type evolved.fragment[] ---@type evolved.fragment[]
__EMPTY_FRAGMENT_LIST = setmetatable({}, { __EMPTY_FRAGMENT_LIST = __lua_setmetatable({}, {
__newindex = function() __error_fmt('attempt to modify empty fragment list') end __newindex = function() __error_fmt('attempt to modify empty fragment list') end
}), }),
---@type evolved.component[] ---@type evolved.component[]
__EMPTY_COMPONENT_LIST = setmetatable({}, { __EMPTY_COMPONENT_LIST = __lua_setmetatable({}, {
__newindex = function() __error_fmt('attempt to modify empty component list') end __newindex = function() __error_fmt('attempt to modify empty component list') end
}), }),
---@type evolved.component[] ---@type evolved.component[]
__EMPTY_COMPONENT_STORAGE = setmetatable({}, { __EMPTY_COMPONENT_STORAGE = __lua_setmetatable({}, {
__newindex = function() __error_fmt('attempt to modify empty component storage') end __newindex = function() __error_fmt('attempt to modify empty component storage') end
}), }),
} }
@@ -817,16 +818,37 @@ end
--- ---
--- ---
local __debug_fns = { local __debug_fns = {}
chunk_mt = {}, ---@type metatable
chunk_fragment_set_mt = {}, ---@type metatable ---@type metatable
chunk_fragment_list_mt = {}, ---@type metatable __debug_fns.chunk_mt = {}
__debug_fns.chunk_mt.__index = __debug_fns.chunk_mt
chunk_component_indices_mt = {}, ---@type metatable ---@type metatable
chunk_component_storages_mt = {}, ---@type metatable __debug_fns.chunk_fragment_set_mt = {}
chunk_component_fragments_mt = {}, ---@type metatable __debug_fns.chunk_fragment_set_mt.__index = __debug_fns.chunk_fragment_set_mt
}
---@type metatable
__debug_fns.chunk_fragment_list_mt = {}
__debug_fns.chunk_fragment_list_mt.__index = __debug_fns.chunk_fragment_list_mt
---@type metatable
__debug_fns.chunk_component_indices_mt = {}
__debug_fns.chunk_component_indices_mt.__index = __debug_fns.chunk_component_indices_mt
---@type metatable
__debug_fns.chunk_component_storages_mt = {}
__debug_fns.chunk_component_storages_mt.__index = __debug_fns.chunk_component_storages_mt
---@type metatable
__debug_fns.chunk_component_fragments_mt = {}
__debug_fns.chunk_component_fragments_mt.__index = __debug_fns.chunk_component_fragments_mt
---
---
---
---
---
---@param self evolved.chunk ---@param self evolved.chunk
function __debug_fns.chunk_mt.__tostring(self) function __debug_fns.chunk_mt.__tostring(self)
@@ -899,6 +921,12 @@ function __debug_fns.chunk_component_fragments_mt.__tostring(self)
return string.format('[%s]', table.concat(items, ', ')) return string.format('[%s]', table.concat(items, ', '))
end end
---
---
---
---
---
---@param chunk evolved.chunk ---@param chunk evolved.chunk
function __debug_fns.validate_chunk(chunk) function __debug_fns.validate_chunk(chunk)
if chunk.__unreachable_or_collected then if chunk.__unreachable_or_collected then
@@ -971,10 +999,10 @@ end
---@nodiscard ---@nodiscard
local function __new_chunk(chunk_parent, chunk_fragment) local function __new_chunk(chunk_parent, chunk_fragment)
---@type table<evolved.fragment, integer> ---@type table<evolved.fragment, integer>
local chunk_fragment_set = setmetatable({}, __debug_fns.chunk_fragment_set_mt) local chunk_fragment_set = __lua_setmetatable({}, __debug_fns.chunk_fragment_set_mt)
---@type evolved.fragment[] ---@type evolved.fragment[]
local chunk_fragment_list = setmetatable({}, __debug_fns.chunk_fragment_list_mt) local chunk_fragment_list = __lua_setmetatable({}, __debug_fns.chunk_fragment_list_mt)
---@type integer ---@type integer
local chunk_fragment_count = 0 local chunk_fragment_count = 0
@@ -983,13 +1011,13 @@ local function __new_chunk(chunk_parent, chunk_fragment)
local chunk_component_count = 0 local chunk_component_count = 0
---@type table<evolved.fragment, integer> ---@type table<evolved.fragment, integer>
local chunk_component_indices = setmetatable({}, __debug_fns.chunk_component_indices_mt) local chunk_component_indices = __lua_setmetatable({}, __debug_fns.chunk_component_indices_mt)
---@type evolved.storage[] ---@type evolved.storage[]
local chunk_component_storages = setmetatable({}, __debug_fns.chunk_component_storages_mt) local chunk_component_storages = __lua_setmetatable({}, __debug_fns.chunk_component_storages_mt)
---@type evolved.fragment[] ---@type evolved.fragment[]
local chunk_component_fragments = setmetatable({}, __debug_fns.chunk_component_fragments_mt) local chunk_component_fragments = __lua_setmetatable({}, __debug_fns.chunk_component_fragments_mt)
local has_defaults_or_constructs = (chunk_parent and chunk_parent.__has_defaults_or_constructs) local has_defaults_or_constructs = (chunk_parent and chunk_parent.__has_defaults_or_constructs)
or __evolved_has_any(chunk_fragment, __DEFAULT, __CONSTRUCT) or __evolved_has_any(chunk_fragment, __DEFAULT, __CONSTRUCT)
@@ -1004,7 +1032,7 @@ local function __new_chunk(chunk_parent, chunk_fragment)
or __evolved_has(chunk_fragment, __ON_REMOVE) or __evolved_has(chunk_fragment, __ON_REMOVE)
---@type evolved.chunk ---@type evolved.chunk
local chunk = setmetatable({ local chunk = __lua_setmetatable({
__parent = nil, __parent = nil,
__child_set = {}, __child_set = {},
__child_list = {}, __child_list = {},
@@ -7468,15 +7496,43 @@ end
--- ---
--- ---
local __builder_fns = {}
---@class evolved.entity_builder : evolved.__entity_builder
__builder_fns.entity_builder = {}
__builder_fns.entity_builder.__index = __builder_fns.entity_builder
---@class evolved.fragment_builder : evolved.__fragment_builder
__builder_fns.fragment_builder = {}
__builder_fns.fragment_builder.__index = __builder_fns.fragment_builder
---@class evolved.query_builder : evolved.__query_builder
__builder_fns.query_builder = {}
__builder_fns.query_builder.__index = __builder_fns.query_builder
---@class evolved.group_builder : evolved.__group_builder
__builder_fns.group_builder = {}
__builder_fns.group_builder.__index = __builder_fns.group_builder
---@class evolved.phase_builder : evolved.__phase_builder
__builder_fns.phase_builder = {}
__builder_fns.phase_builder.__index = __builder_fns.phase_builder
---@class evolved.system_builder : evolved.__system_builder
__builder_fns.system_builder = {}
__builder_fns.system_builder.__index = __builder_fns.system_builder
---
---
---
---
---
---@class (exact) evolved.__entity_builder ---@class (exact) evolved.__entity_builder
---@field package __fragment_list? evolved.fragment[] ---@field package __fragment_list? evolved.fragment[]
---@field package __component_list? evolved.component[] ---@field package __component_list? evolved.component[]
---@field package __component_count integer ---@field package __component_count integer
---@class evolved.entity_builder : evolved.__entity_builder
local evolved_entity_builder = {}
evolved_entity_builder.__index = evolved_entity_builder
---@return evolved.entity_builder builder ---@return evolved.entity_builder builder
---@nodiscard ---@nodiscard
__evolved_entity = function() __evolved_entity = function()
@@ -7487,13 +7543,13 @@ __evolved_entity = function()
__component_count = 0, __component_count = 0,
} }
---@cast builder evolved.entity_builder ---@cast builder evolved.entity_builder
return setmetatable(builder, evolved_entity_builder) return __lua_setmetatable(builder, __builder_fns.entity_builder)
end end
---@param fragment evolved.fragment ---@param fragment evolved.fragment
---@param ... any component arguments ---@param ... any component arguments
---@return evolved.entity_builder builder ---@return evolved.entity_builder builder
function evolved_entity_builder:set(fragment, ...) function __builder_fns.entity_builder:set(fragment, ...)
local component = __component_construct(fragment, ...) local component = __component_construct(fragment, ...)
local fragment_list = self.__fragment_list local fragment_list = self.__fragment_list
@@ -7518,7 +7574,7 @@ end
---@return evolved.entity entity ---@return evolved.entity entity
---@return boolean is_deferred ---@return boolean is_deferred
function evolved_entity_builder:build() function __builder_fns.entity_builder:build()
local fragment_list = self.__fragment_list local fragment_list = self.__fragment_list
local component_list = self.__component_list local component_list = self.__component_list
local component_count = self.__component_count local component_count = self.__component_count
@@ -7557,10 +7613,6 @@ end
---@field package __on_remove? evolved.remove_hook ---@field package __on_remove? evolved.remove_hook
---@field package __destroy_policy? evolved.id ---@field package __destroy_policy? evolved.id
---@class evolved.fragment_builder : evolved.__fragment_builder
local evolved_fragment_builder = {}
evolved_fragment_builder.__index = evolved_fragment_builder
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
---@nodiscard ---@nodiscard
__evolved_fragment = function() __evolved_fragment = function()
@@ -7578,81 +7630,81 @@ __evolved_fragment = function()
__destroy_policy = nil, __destroy_policy = nil,
} }
---@cast builder evolved.fragment_builder ---@cast builder evolved.fragment_builder
return setmetatable(builder, evolved_fragment_builder) return __lua_setmetatable(builder, __builder_fns.fragment_builder)
end end
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:tag() function __builder_fns.fragment_builder:tag()
self.__tag = true self.__tag = true
return self return self
end end
---@param name string ---@param name string
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:name(name) function __builder_fns.fragment_builder:name(name)
self.__name = name self.__name = name
return self return self
end end
---@param single evolved.component ---@param single evolved.component
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:single(single) function __builder_fns.fragment_builder:single(single)
self.__single = single self.__single = single
return self return self
end end
---@param default evolved.component ---@param default evolved.component
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:default(default) function __builder_fns.fragment_builder:default(default)
self.__default = default self.__default = default
return self return self
end end
---@param construct fun(...): evolved.component ---@param construct fun(...): evolved.component
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:construct(construct) function __builder_fns.fragment_builder:construct(construct)
self.__construct = construct self.__construct = construct
return self return self
end end
---@param on_set evolved.set_hook ---@param on_set evolved.set_hook
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:on_set(on_set) function __builder_fns.fragment_builder:on_set(on_set)
self.__on_set = on_set self.__on_set = on_set
return self return self
end end
---@param on_assign evolved.assign_hook ---@param on_assign evolved.assign_hook
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:on_assign(on_assign) function __builder_fns.fragment_builder:on_assign(on_assign)
self.__on_assign = on_assign self.__on_assign = on_assign
return self return self
end end
---@param on_insert evolved.insert_hook ---@param on_insert evolved.insert_hook
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:on_insert(on_insert) function __builder_fns.fragment_builder:on_insert(on_insert)
self.__on_insert = on_insert self.__on_insert = on_insert
return self return self
end end
---@param on_remove evolved.remove_hook ---@param on_remove evolved.remove_hook
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:on_remove(on_remove) function __builder_fns.fragment_builder:on_remove(on_remove)
self.__on_remove = on_remove self.__on_remove = on_remove
return self return self
end end
---@param destroy_policy evolved.id ---@param destroy_policy evolved.id
---@return evolved.fragment_builder builder ---@return evolved.fragment_builder builder
function evolved_fragment_builder:destroy_policy(destroy_policy) function __builder_fns.fragment_builder:destroy_policy(destroy_policy)
self.__destroy_policy = destroy_policy self.__destroy_policy = destroy_policy
return self return self
end end
---@return evolved.fragment fragment ---@return evolved.fragment fragment
---@return boolean is_deferred ---@return boolean is_deferred
function evolved_fragment_builder:build() function __builder_fns.fragment_builder:build()
local tag = self.__tag local tag = self.__tag
local name = self.__name local name = self.__name
local single = self.__single local single = self.__single
@@ -7763,10 +7815,6 @@ end
---@field package __include_list? evolved.fragment[] ---@field package __include_list? evolved.fragment[]
---@field package __exclude_list? evolved.fragment[] ---@field package __exclude_list? evolved.fragment[]
---@class evolved.query_builder : evolved.__query_builder
local evolved_query_builder = {}
evolved_query_builder.__index = evolved_query_builder
---@return evolved.query_builder builder ---@return evolved.query_builder builder
---@nodiscard ---@nodiscard
__evolved_query = function() __evolved_query = function()
@@ -7778,26 +7826,26 @@ __evolved_query = function()
__exclude_list = nil, __exclude_list = nil,
} }
---@cast builder evolved.query_builder ---@cast builder evolved.query_builder
return setmetatable(builder, evolved_query_builder) return __lua_setmetatable(builder, __builder_fns.query_builder)
end end
---@param name string ---@param name string
---@return evolved.query_builder builder ---@return evolved.query_builder builder
function evolved_query_builder:name(name) function __builder_fns.query_builder:name(name)
self.__name = name self.__name = name
return self return self
end end
---@param single evolved.component ---@param single evolved.component
---@return evolved.query_builder builder ---@return evolved.query_builder builder
function evolved_query_builder:single(single) function __builder_fns.query_builder:single(single)
self.__single = single self.__single = single
return self return self
end end
---@param ... evolved.fragment fragments ---@param ... evolved.fragment fragments
---@return evolved.query_builder builder ---@return evolved.query_builder builder
function evolved_query_builder:include(...) function __builder_fns.query_builder:include(...)
local fragment_count = __lua_select('#', ...) local fragment_count = __lua_select('#', ...)
if fragment_count == 0 then if fragment_count == 0 then
@@ -7824,7 +7872,7 @@ end
---@param ... evolved.fragment fragments ---@param ... evolved.fragment fragments
---@return evolved.query_builder builder ---@return evolved.query_builder builder
function evolved_query_builder:exclude(...) function __builder_fns.query_builder:exclude(...)
local fragment_count = __lua_select('#', ...) local fragment_count = __lua_select('#', ...)
if fragment_count == 0 then if fragment_count == 0 then
@@ -7851,7 +7899,7 @@ end
---@return evolved.query query ---@return evolved.query query
---@return boolean is_deferred ---@return boolean is_deferred
function evolved_query_builder:build() function __builder_fns.query_builder:build()
local name = self.__name local name = self.__name
local single = self.__single local single = self.__single
local include_list = self.__include_list local include_list = self.__include_list
@@ -7912,10 +7960,6 @@ end
---@field package __after? evolved.group[] ---@field package __after? evolved.group[]
---@field package __single? evolved.component ---@field package __single? evolved.component
---@class evolved.group_builder : evolved.__group_builder
local evolved_group_builder = {}
evolved_group_builder.__index = evolved_group_builder
---@return evolved.group_builder builder ---@return evolved.group_builder builder
---@nodiscard ---@nodiscard
__evolved_group = function() __evolved_group = function()
@@ -7927,33 +7971,33 @@ __evolved_group = function()
__after = nil, __after = nil,
} }
---@cast builder evolved.group_builder ---@cast builder evolved.group_builder
return setmetatable(builder, evolved_group_builder) return __lua_setmetatable(builder, __builder_fns.group_builder)
end end
---@param name string ---@param name string
---@return evolved.group_builder builder ---@return evolved.group_builder builder
function evolved_group_builder:name(name) function __builder_fns.group_builder:name(name)
self.__name = name self.__name = name
return self return self
end end
---@param single evolved.component ---@param single evolved.component
---@return evolved.group_builder builder ---@return evolved.group_builder builder
function evolved_group_builder:single(single) function __builder_fns.group_builder:single(single)
self.__single = single self.__single = single
return self return self
end end
---@param phase evolved.phase ---@param phase evolved.phase
---@return evolved.group_builder builder ---@return evolved.group_builder builder
function evolved_group_builder:phase(phase) function __builder_fns.group_builder:phase(phase)
self.__phase = phase self.__phase = phase
return self return self
end end
---@param ... evolved.group groups ---@param ... evolved.group groups
---@return evolved.group_builder builder ---@return evolved.group_builder builder
function evolved_group_builder:after(...) function __builder_fns.group_builder:after(...)
local group_count = __lua_select('#', ...) local group_count = __lua_select('#', ...)
if group_count == 0 then if group_count == 0 then
@@ -7979,7 +8023,7 @@ end
---@return evolved.group group ---@return evolved.group group
---@return boolean is_deferred ---@return boolean is_deferred
function evolved_group_builder:build() function __builder_fns.group_builder:build()
local name = self.__name local name = self.__name
local single = self.__single local single = self.__single
local phase = self.__phase local phase = self.__phase
@@ -8038,10 +8082,6 @@ end
---@field package __name? string ---@field package __name? string
---@field package __single? evolved.component ---@field package __single? evolved.component
---@class evolved.phase_builder : evolved.__phase_builder
local evolved_phase_builder = {}
evolved_phase_builder.__index = evolved_phase_builder
---@return evolved.phase_builder builder ---@return evolved.phase_builder builder
---@nodiscard ---@nodiscard
__evolved_phase = function() __evolved_phase = function()
@@ -8051,26 +8091,26 @@ __evolved_phase = function()
__single = nil, __single = nil,
} }
---@cast builder evolved.phase_builder ---@cast builder evolved.phase_builder
return setmetatable(builder, evolved_phase_builder) return __lua_setmetatable(builder, __builder_fns.phase_builder)
end end
---@param name string ---@param name string
---@return evolved.phase_builder builder ---@return evolved.phase_builder builder
function evolved_phase_builder:name(name) function __builder_fns.phase_builder:name(name)
self.__name = name self.__name = name
return self return self
end end
---@param single evolved.component ---@param single evolved.component
---@return evolved.phase_builder builder ---@return evolved.phase_builder builder
function evolved_phase_builder:single(single) function __builder_fns.phase_builder:single(single)
self.__single = single self.__single = single
return self return self
end end
---@return evolved.phase phase ---@return evolved.phase phase
---@return boolean is_deferred ---@return boolean is_deferred
function evolved_phase_builder:build() function __builder_fns.phase_builder:build()
local name = self.__name local name = self.__name
local single = self.__single local single = self.__single
@@ -8118,10 +8158,6 @@ end
---@field package __prologue? evolved.prologue ---@field package __prologue? evolved.prologue
---@field package __epilogue? evolved.epilogue ---@field package __epilogue? evolved.epilogue
---@class evolved.system_builder : evolved.__system_builder
local evolved_system_builder = {}
evolved_system_builder.__index = evolved_system_builder
---@return evolved.system_builder builder ---@return evolved.system_builder builder
---@nodiscard ---@nodiscard
__evolved_system = function() __evolved_system = function()
@@ -8136,61 +8172,61 @@ __evolved_system = function()
__epilogue = nil, __epilogue = nil,
} }
---@cast builder evolved.system_builder ---@cast builder evolved.system_builder
return setmetatable(builder, evolved_system_builder) return __lua_setmetatable(builder, __builder_fns.system_builder)
end end
---@param name string ---@param name string
---@return evolved.system_builder builder ---@return evolved.system_builder builder
function evolved_system_builder:name(name) function __builder_fns.system_builder:name(name)
self.__name = name self.__name = name
return self return self
end end
---@param single evolved.component ---@param single evolved.component
---@return evolved.system_builder builder ---@return evolved.system_builder builder
function evolved_system_builder:single(single) function __builder_fns.system_builder:single(single)
self.__single = single self.__single = single
return self return self
end end
---@param group evolved.group ---@param group evolved.group
---@return evolved.system_builder builder ---@return evolved.system_builder builder
function evolved_system_builder:group(group) function __builder_fns.system_builder:group(group)
self.__group = group self.__group = group
return self return self
end end
---@param query evolved.query ---@param query evolved.query
---@return evolved.system_builder builder ---@return evolved.system_builder builder
function evolved_system_builder:query(query) function __builder_fns.system_builder:query(query)
self.__query = query self.__query = query
return self return self
end end
---@param execute evolved.execute ---@param execute evolved.execute
---@return evolved.system_builder builder ---@return evolved.system_builder builder
function evolved_system_builder:execute(execute) function __builder_fns.system_builder:execute(execute)
self.__execute = execute self.__execute = execute
return self return self
end end
---@param prologue evolved.prologue ---@param prologue evolved.prologue
---@return evolved.system_builder builder ---@return evolved.system_builder builder
function evolved_system_builder:prologue(prologue) function __builder_fns.system_builder:prologue(prologue)
self.__prologue = prologue self.__prologue = prologue
return self return self
end end
---@param epilogue evolved.epilogue ---@param epilogue evolved.epilogue
---@return evolved.system_builder builder ---@return evolved.system_builder builder
function evolved_system_builder:epilogue(epilogue) function __builder_fns.system_builder:epilogue(epilogue)
self.__epilogue = epilogue self.__epilogue = epilogue
return self return self
end end
---@return evolved.system system ---@return evolved.system system
---@return boolean is_deferred ---@return boolean is_deferred
function evolved_system_builder:build() function __builder_fns.system_builder:build()
local name = self.__name local name = self.__name
local single = self.__single local single = self.__single
local group = self.__group local group = self.__group