Skip to content

Commit bf7eb6a

Browse files
committed
#ICE-207
Changes to engine source code after initial refactor of the Array type.
1 parent eb0c662 commit bf7eb6a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+178
-181
lines changed

source/code/core/tasks/private/task_scoped_container.cxx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,16 @@ namespace ice
2626
ice::ShardID shardid
2727
) noexcept -> ice::Span<ice::Task<>>
2828
{
29-
ice::u32 const new_count = ice::array::count(_tasks) + count;
30-
31-
if (new_count > ice::array::capacity(_tasks))
29+
ice::ncount const new_count = _tasks.size() + count;
30+
if (new_count > _tasks.capacity())
3231
{
3332
// Updates the capacity of the array to fit the new tasks
34-
ice::array::grow(_tasks, new_count);
33+
_tasks.grow(new_count);
3534
}
3635

3736
// Creates the tasks and returns a slice to them
38-
ice::array::resize(_tasks, new_count);
39-
return ice::array::slice(_tasks, ice::array::count(_tasks) - count, count);
37+
_tasks.resize(new_count);
38+
return _tasks.tailspan(_tasks.size() - count);
4039
}
4140

4241
auto ScopedTaskContainer::await_tasks_scheduled_on(ice::TaskScheduler& scheduler, ice::TaskScheduler& resumer) noexcept -> ice::Task<>
@@ -46,14 +45,14 @@ namespace ice
4645

4746
auto ScopedTaskContainer::execute_tasks() noexcept -> ice::u32
4847
{
49-
ice::u32 const result = ice::array::count(_tasks);
48+
ice::ncount const result = _tasks.size();
5049
if (result > 0)
5150
{
52-
_barrier.reset(static_cast<ice::u8>(result));
51+
_barrier.reset(result.u8());
5352
ice::manual_wait_for(_barrier, _tasks);
54-
ice::array::clear(_tasks);
53+
_tasks.clear();
5554
}
56-
return result;
55+
return result.u32();
5756
}
5857

5958
auto ScopedTaskContainer::running_tasks() const noexcept -> ice::u32

source/code/core/tasks/private/task_thread_pool_impl.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,12 @@ namespace ice
107107

108108
auto TaskThreadPoolImplementation::thread_count() const noexcept -> ice::u32
109109
{
110-
return ice::array::count(_thread_pool);
110+
return _thread_pool.size().u32();
111111
}
112112

113113
auto TaskThreadPoolImplementation::managed_thread_count() const noexcept -> ice::u32
114114
{
115-
return ice::array::count(_managed_threads) + ice::hashmap::count(_created_threads);
115+
return _managed_threads.size().u32() + ice::hashmap::count(_created_threads);
116116
}
117117

118118
auto TaskThreadPoolImplementation::estimated_task_count() const noexcept -> ice::u32

source/code/core/utils/private/config/config_builder.cxx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,11 +196,11 @@ namespace ice
196196

197197
// Then add all children key-values
198198
ice::u32 out_keyidx = 0;
199-
it_entry = ice::array::begin(config._entries);
199+
it_entry = config._entries.begin();
200200

201201
if (config.vtype == CONFIG_VALTYPE_TABLE)
202202
{
203-
ice::u32 const table_size = ice::count(config._entries);
203+
ice::u32 const table_size = config._entries.size().u32();
204204

205205
// Save table size in first key
206206
out_keylist[0].offset = table_size >> 8;
@@ -249,7 +249,7 @@ namespace ice
249249
ConfigBuilderContainer& sub = *config._entries[out_keyidx].data.val_container;
250250

251251
// Set the value to the current 'keyoffset' value. This serves as the relative offset starting from the passed key.
252-
out_vallist[out_keyidx].internal = ice::array::empty(sub._entries) ? ice::u32_max : keyoffset - out_keyidx;
252+
out_vallist[out_keyidx].internal = sub._entries.is_empty() ? ice::u32_max : keyoffset - out_keyidx;
253253

254254
if (out_vallist[out_keyidx].internal != ice::u32_max)
255255
{
@@ -371,7 +371,7 @@ namespace ice
371371
using ice::config::detail::ConfigValue;
372372

373373
ice::config::detail::ConfigBuilderContainer& container = *_internal->data.val_container;
374-
if (ice::array::empty(container._entries))
374+
if (container._entries.is_empty())
375375
{
376376
return {};
377377
}

source/code/core/utils/private/config/config_builder_utils.cxx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ namespace ice::config::detail
6464
ice::config::detail::ConfigBuilderContainer& container = *entry.data.val_container;
6565

6666
ice::u32 idx = 0;
67-
for (;idx < ice::count(container._entries); ++idx)
67+
for (;idx < container._entries.size(); ++idx)
6868
{
6969
ice::String const entry_key = detail::cb_getkey(container._keystrings, container._entries[idx]);
7070
if (key == entry_key)
@@ -74,17 +74,17 @@ namespace ice::config::detail
7474
}
7575

7676
ice::config::detail::ConfigBuilderEntry* result;
77-
if (idx < ice::count(container._entries))
77+
if (idx < container._entries.size())
7878
{
79-
result = ice::array::begin(container._entries) + idx;
79+
result = container._entries.begin() + idx;
8080
if (clean)
8181
{
8282
cb_clear_value_type(alloc, result);
8383
}
8484
}
8585
else
8686
{
87-
idx = ice::count(container._entries);
87+
idx = container._entries.size().u32();
8888
ice::ncount const offset = container._keystrings.size();
8989
container._keystrings.push_back(key);
9090

@@ -109,7 +109,7 @@ namespace ice::config::detail
109109
ice::config::detail::ConfigBuilderContainer& container = *entry.data.val_container;
110110

111111
ice::config::detail::ConfigBuilderEntry* result;
112-
if (idx < ice::count(container._entries))
112+
if (idx < container._entries.size())
113113
{
114114
result = ice::array::begin(container._entries) + idx;
115115
if (clean)
@@ -121,10 +121,10 @@ namespace ice::config::detail
121121
{
122122
if (idx == ice::u32_max)
123123
{
124-
idx = ice::count(container._entries);
124+
idx = container._entries.size().u32();
125125
}
126126

127-
while(ice::count(container._entries) <= idx)
127+
while(container._entries.size() <= idx)
128128
{
129129
ice::array::push_back(container._entries, ConfigKey{ 0, CONFIG_KEYTYPE_NONE, CONFIG_VALTYPE_NONE, 0, 0 });
130130
}

source/code/core/utils/private/log_internal.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace ice::detail
3232

3333
auto LogState::register_sink(ice::LogSinkFn fn_sink, void* userdata) noexcept -> ice::LogSinkID
3434
{
35-
ice::u32 const sinkidx = ice::count(_sinks);
35+
ice::u32 const sinkidx = _sinks.size().u32();
3636
// Pottentially an error when sinks are added and remove all the time!
3737
// NOTE: Once added sinks should only be reset when a module was reloaded!
3838
ICE_ASSERT_CORE(sinkidx < 50);
@@ -43,7 +43,7 @@ namespace ice::detail
4343
void LogState::unregister_sink(ice::LogSinkID sinkid) noexcept
4444
{
4545
ice::u32 const sinkidx = static_cast<ice::u32>(sinkid);
46-
if (ice::count(_sinks) > sinkidx)
46+
if (_sinks.size() > sinkidx)
4747
{
4848
// Just clear the values
4949
_sinks[sinkidx] = Sink{ nullptr, nullptr };

source/code/core/utils/private/params.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ namespace ice
392392
while (it != end && valid)
393393
{
394394
std::string_view const result{ *it };
395-
if (ice::count(ice_results) == result_count || result.empty())
395+
if (ice_results.size() == result_count || result.empty())
396396
{
397397
valid &= ice_callback(ice_userdata, ice_results);
398398
ice::array::clear(ice_results);

source/code/iceshard/engine/private/ecs/ecs_archetype_index.cxx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ namespace ice::ecs
167167

168168
auto ArchetypeIndex::registered_archetype_count() const noexcept -> ice::u32
169169
{
170-
return ice::array::count(_archetype_data);
170+
return _archetype_data.size().u32();
171171
}
172172

173173
auto ArchetypeIndex::register_archetype(
@@ -296,7 +296,7 @@ namespace ice::ecs
296296
}
297297
}
298298

299-
ice::u32 const archetype_index = ice::array::count(_archetype_data);
299+
ice::u32 const archetype_index = _archetype_data.size().u32();
300300
data_header->archetype_info.archetype_instance = ice::ecs::detail::ArchetypeInstance{ archetype_index };
301301

302302
ice::array::push_back(_archetype_data, data_header);
@@ -315,7 +315,7 @@ namespace ice::ecs
315315
ice::String name
316316
) const noexcept -> ice::ecs::Archetype
317317
{
318-
ice::u32 const instance_count = ice::array::count(_archetype_data);
318+
ice::u32 const instance_count = _archetype_data.size().u32();
319319
ice::u32 const instance_idx = ice::hashmap::get(_archetype_names_index, ice::hash(name), ice::u32_max);
320320
if (instance_idx >= instance_count)
321321
{
@@ -393,7 +393,7 @@ namespace ice::ecs
393393
"Archetype instance fetch called with different input and output array sizes."
394394
);
395395

396-
ice::u32 const instance_count = ice::array::count(_archetype_data);
396+
ice::u32 const instance_count = _archetype_data.size().u32();
397397

398398
ice::u32 archetype_idx = 0;
399399
for (Archetype archetype : archetypes)
@@ -421,7 +421,7 @@ namespace ice::ecs
421421
"Archetype instance fetch called with different input and output array sizes."
422422
);
423423

424-
ice::u32 const instance_count = ice::array::count(_archetype_data);
424+
ice::u32 const instance_count = _archetype_data.size().u32();
425425

426426
ice::u32 archetype_idx = 0;
427427
for (ice::ecs::detail::ArchetypeInstance archetype_instance : archetype_instances)
@@ -443,7 +443,7 @@ namespace ice::ecs
443443
ice::ecs::detail::ArchetypeInstanceInfo const*& out_instance_info
444444
) const noexcept
445445
{
446-
ice::u32 const instance_count = ice::array::count(_archetype_data);
446+
ice::u32 const instance_count = _archetype_data.size().u32();
447447
ice::u32 const instance_idx = index;
448448

449449
if (instance_idx < instance_count)
@@ -464,7 +464,7 @@ namespace ice::ecs
464464
ice::ecs::detail::DataBlockPool*& out_block_pool
465465
) const noexcept
466466
{
467-
ice::u32 const instance_count = ice::array::count(_archetype_data);
467+
ice::u32 const instance_count = _archetype_data.size().u32();
468468
ice::u32 const instance_idx = ice::hashmap::get(_archetype_index, ice::hash(archetype), ice::u32_max);
469469

470470
if (instance_idx < instance_count)
@@ -486,7 +486,7 @@ namespace ice::ecs
486486
ice::ecs::detail::DataBlockPool*& out_block_pool
487487
) const noexcept
488488
{
489-
ice::u32 const instance_count = ice::array::count(_archetype_data);
489+
ice::u32 const instance_count = _archetype_data.size().u32();
490490
ice::u32 const instance_idx = static_cast<ice::u32>(archetype_instance);
491491

492492
if (instance_idx < instance_count)

source/code/iceshard/engine/private/ecs/ecs_entity_index.cxx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,20 @@ namespace ice::ecs
5656

5757
auto EntityIndex::count() const noexcept -> ice::u32
5858
{
59-
return ice::array::count(_generation) - ice::queue::count(_free_indices);
59+
return _generation.size().u32() - ice::queue::count(_free_indices);
6060
}
6161

6262
bool EntityIndex::is_alive(ice::ecs::Entity entity) const noexcept
6363
{
6464
using ice::ecs::EntityInfo;
6565

6666
EntityInfo const info = ice::ecs::entity_info(entity);
67-
return ice::count(_generation) > info.index && _generation[info.index] == info.generation;
67+
return _generation.size() > info.index && _generation[info.index] == info.generation;
6868
}
6969

7070
auto EntityIndex::create() noexcept -> ice::ecs::Entity
7171
{
72-
ice::u32 index = 0;
72+
ice::nindex index = 0;
7373

7474
if (ice::queue::count(_free_indices) >= ice::ecs::Constant_MinimumFreeIndicesBeforeReuse)
7575
{
@@ -78,11 +78,11 @@ namespace ice::ecs
7878
}
7979
else
8080
{
81-
index = ice::array::count(_generation);
81+
index = _generation.size();
8282
ice::array::push_back(_generation, ice::u8{ 0 });
8383
}
8484

85-
return ice::ecs::detail::make_entity(index, _generation[index]);
85+
return ice::ecs::detail::make_entity(index.u32(), _generation[index]);
8686
}
8787

8888
bool EntityIndex::create_many(ice::Span<ice::ecs::Entity> out_entities) noexcept
@@ -109,7 +109,7 @@ namespace ice::ecs
109109
total_indices_taken += indices_taken;
110110
}
111111

112-
ice::u32 gen_index = ice::array::count(_generation);
112+
ice::u32 gen_index = _generation.size().u32();
113113
ice::u32 const missing_entities = out_entities.size().u32() - total_indices_taken;
114114
ice::u32 const final_index = gen_index + missing_entities;
115115

@@ -120,7 +120,7 @@ namespace ice::ecs
120120
"Moved past the maximum allowed number of entities!"
121121
);
122122

123-
ice::array::resize(_generation, final_index);
123+
_generation.resize(final_index);
124124
}
125125

126126
while (gen_index < final_index)

source/code/iceshard/engine/private/ecs/ecs_entity_storage.cxx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ namespace ice::ecs
621621
using ice::ecs::detail::DataBlock;
622622
using ice::ecs::detail::ArchetypeInstance;
623623

624-
ice::u32 const existing_count = ice::count(_head_blocks);
624+
ice::u32 const existing_count = _head_blocks.size().u32();
625625
ice::u32 const archetype_count = _archetype_index.registered_archetype_count();
626626
if (existing_count >= archetype_count)
627627
{
@@ -711,9 +711,9 @@ namespace ice::ecs
711711
// [Done] Set Component: {EntityHandle[*], None} // remove
712712

713713
// Ensure we have enough data slots
714-
if (ice::array::count(_data_slots) < _entity_index.count())
714+
if (_data_slots.size() < _entity_index.count())
715715
{
716-
ice::array::resize(_data_slots, _entity_index.count());
716+
_data_slots.resize(_entity_index.count());
717717
}
718718

719719
// Ensure all queries are finished
@@ -1156,21 +1156,21 @@ namespace ice::ecs
11561156
ice::array::reserve(archetypes, (u32) ice::mem_max_capacity<ice::ecs::Archetype>(archetypes_alloc.Constant_InternalCapacity));
11571157
_archetype_index.find_archetypes(archetypes, query_info, query_tags);
11581158

1159-
ice::u32 const prev_archetype_count = ice::count(out_instance_infos);
1160-
ice::u32 const new_archetype_count = ice::count(archetypes);
1161-
ice::array::resize(out_instance_infos, prev_archetype_count + new_archetype_count);
1162-
ice::array::reserve(out_data_blocks, prev_archetype_count + new_archetype_count);
1159+
ice::ncount const prev_archetype_count = out_instance_infos.size();
1160+
ice::ncount const new_archetype_count = archetypes.size();
1161+
out_instance_infos.resize(prev_archetype_count + new_archetype_count);
1162+
out_data_blocks.reserve(prev_archetype_count + new_archetype_count);
11631163

1164-
_archetype_index.fetch_archetype_instance_infos(archetypes, ice::array::slice(out_instance_infos, prev_archetype_count));
1164+
_archetype_index.fetch_archetype_instance_infos(archetypes, out_instance_infos.tailspan(prev_archetype_count));
11651165

1166-
for (ice::ecs::detail::ArchetypeInstanceInfo const* instance : ice::array::slice(out_instance_infos, prev_archetype_count))
1166+
for (ice::ecs::detail::ArchetypeInstanceInfo const* instance : out_instance_infos.tailspan(prev_archetype_count))
11671167
{
11681168
ice::u32 const instance_idx = static_cast<ice::u32>(instance->archetype_instance);
11691169
ice::array::push_back(out_data_blocks, _data_blocks[instance_idx]);
11701170
}
11711171

11721172
// Find or create work trackers for queried components
1173-
ice::u32 idx = prev_archetype_count;
1173+
ice::nindex idx = prev_archetype_count;
11741174
for (ice::ecs::detail::QueryTypeInfo const& type_info : query_info)
11751175
{
11761176
ice::ecs::QueryAccessTracker* tracker = ice::hashmap::get(_access_trackers, ice::hash(type_info.identifier), nullptr);

source/code/iceshard/engine/private/engine_state_tracker_default.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ namespace ice
4949
ice::multi_hashmap::insert(
5050
_current_state_index,
5151
ice::hash(params.initial.graph.value),
52-
ice::count(_current_state)
52+
_current_state.size().u32()
5353
);
5454
ice::array::push_back(_current_state, initial_state);
5555
}
@@ -71,7 +71,7 @@ namespace ice
7171
ice::multi_hashmap::insert(
7272
_current_state_index,
7373
ice::hash(params.initial.graph.value),
74-
ice::count(_current_state)
74+
_current_state.size().u32()
7575
);
7676
ice::array::push_back(_current_state, initial_state);
7777
}
@@ -115,7 +115,7 @@ namespace ice
115115
ice::multi_hashmap::insert(
116116
_current_state_index,
117117
ice::hash(engine_state.graph.value),
118-
ice::count(_current_state)
118+
_current_state.size().u32()
119119
);
120120
ice::array::push_back(_current_state, engine_state);
121121
}

0 commit comments

Comments
 (0)