Skip to content

Commit 3769f62

Browse files
committed
ArrayBase
1 parent b5e4b80 commit 3769f62

File tree

4 files changed

+77
-95
lines changed

4 files changed

+77
-95
lines changed

include/momo/Array.h

+9-26
Original file line numberDiff line numberDiff line change
@@ -498,14 +498,14 @@ class Array
498498
: mData(count, std::move(memManager))
499499
{
500500
for (size_t i = 0; i < count; ++i)
501-
AddBackNogrowVar();
501+
this->AddBackNogrowVar();
502502
}
503503

504504
explicit Array(size_t count, const Item& item, MemManager memManager = MemManager())
505505
: mData(count, std::move(memManager))
506506
{
507507
for (size_t i = 0; i < count; ++i)
508-
AddBackNogrow(item);
508+
this->AddBackNogrow(item);
509509
}
510510

511511
template<std::input_iterator ArgIterator, internal::conceptSentinel<ArgIterator> ArgSentinel>
@@ -538,7 +538,7 @@ class Array
538538
: mData(shrink ? array.GetCount() : array.GetCapacity(), MemManager(array.GetMemManager()))
539539
{
540540
for (const Item& item : array)
541-
AddBackNogrow(item);
541+
this->AddBackNogrow(item);
542542
}
543543

544544
explicit Array(const Array& array, MemManager memManager)
@@ -730,37 +730,20 @@ class Array
730730
pvAddBackNogrow(FastMovableFunctor<ItemCreator>(std::forward<ItemCreator>(itemCreator)));
731731
}
732732

733-
template<typename... ItemArgs>
734-
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
735-
void AddBackNogrowVar(ItemArgs&&... itemArgs)
736-
{
737-
AddBackNogrowCrt(typename ItemTraits::template Creator<ItemArgs...>(GetMemManager(),
738-
std::forward<ItemArgs>(itemArgs)...));
739-
}
733+
//template<typename... ItemArgs>
734+
//void AddBackNogrowVar(ItemArgs&&... itemArgs)
740735

741-
void AddBackNogrow(Item&& item)
742-
{
743-
AddBackNogrowVar(std::move(item));
744-
}
745-
746-
void AddBackNogrow(const Item& item)
747-
{
748-
AddBackNogrowVar(item);
749-
}
736+
//void AddBackNogrow(Item&& item)
737+
//void AddBackNogrow(const Item& item)
750738

751739
template<internal::conceptObjectCreator<Item> ItemCreator>
752740
void AddBackCrt(ItemCreator itemCreator)
753741
{
754742
pvAddBack(FastMovableFunctor<ItemCreator>(std::forward<ItemCreator>(itemCreator)));
755743
}
756744

757-
template<typename... ItemArgs>
758-
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
759-
void AddBackVar(ItemArgs&&... itemArgs)
760-
{
761-
AddBackCrt(typename ItemTraits::template Creator<ItemArgs...>(GetMemManager(),
762-
std::forward<ItemArgs>(itemArgs)...));
763-
}
745+
//template<typename... ItemArgs>
746+
//void AddBackVar(ItemArgs&&... itemArgs)
764747

765748
void AddBack(Item&& item)
766749
{

include/momo/ArrayUtility.h

+48-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ namespace internal
233233
}
234234
};
235235

236-
template<typename TItem, typename TMemManager, typename TItemTraits, typename TSettings>
236+
template<conceptObject TItem, conceptMemManager TMemManager,
237+
typename TItemTraits, typename TSettings>
237238
class ArrayBase
238239
{
239240
public:
@@ -249,6 +250,52 @@ namespace internal
249250
using ArrayInserter = internal::ArrayInserter<std::decay_t<RArray>>;
250251

251252
public:
253+
//template<conceptMutableThis RArray, conceptObjectCreator<Item> ItemCreator>
254+
//void AddBackNogrowCrt(this RArray&& array, ItemCreator itemCreator)
255+
256+
template<conceptMutableThis RArray, typename... ItemArgs>
257+
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
258+
void AddBackNogrowVar(this RArray&& array, ItemArgs&&... itemArgs)
259+
{
260+
array.AddBackNogrowCrt(typename ItemTraits::template Creator<ItemArgs...>(
261+
array.GetMemManager(), std::forward<ItemArgs>(itemArgs)...));
262+
}
263+
264+
template<conceptMutableThis RArray>
265+
void AddBackNogrow(this RArray&& array, Item&& item)
266+
{
267+
array.AddBackNogrowVar(std::move(item));
268+
}
269+
270+
template<conceptMutableThis RArray>
271+
void AddBackNogrow(this RArray&& array, const Item& item)
272+
{
273+
array.AddBackNogrowVar(item);
274+
}
275+
276+
//template<conceptMutableThis RArray, conceptObjectCreator<Item> ItemCreator>
277+
//void AddBackCrt(this RArray&& array, ItemCreator itemCreator)
278+
279+
template<conceptMutableThis RArray, typename... ItemArgs>
280+
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
281+
void AddBackVar(this RArray&& array, ItemArgs&&... itemArgs)
282+
{
283+
array.AddBackCrt(typename ItemTraits::template Creator<ItemArgs...>(
284+
array.GetMemManager(), std::forward<ItemArgs>(itemArgs)...));
285+
}
286+
287+
template<conceptMutableThis RArray>
288+
void AddBack(this RArray&& array, Item&& item)
289+
{
290+
array.AddBackVar(std::move(item));
291+
}
292+
293+
template<conceptMutableThis RArray>
294+
void AddBack(this RArray&& array, const Item& item)
295+
{
296+
array.AddBackVar(item);
297+
}
298+
252299
template<conceptMutableThis RArray, conceptObjectCreator<Item> ItemCreator>
253300
void InsertCrt(this RArray&& array, size_t index, ItemCreator itemCreator)
254301
{

include/momo/MergeArray.h

+11-35
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ class MergeArray
147147
try
148148
{
149149
for (size_t i = 0; i < count; ++i)
150-
AddBackNogrowVar();
150+
this->AddBackNogrowVar();
151151
}
152152
catch (...)
153153
{
@@ -163,7 +163,7 @@ class MergeArray
163163
try
164164
{
165165
for (size_t i = 0; i < count; ++i)
166-
AddBackNogrow(item);
166+
this->AddBackNogrow(item);
167167
}
168168
catch (...)
169169
{
@@ -226,7 +226,7 @@ class MergeArray
226226
try
227227
{
228228
for (const Item& item : array)
229-
AddBackNogrow(item);
229+
this->AddBackNogrow(item);
230230
}
231231
catch (...)
232232
{
@@ -469,47 +469,23 @@ class MergeArray
469469
pvAddBackNogrow(FastMovableFunctor<ItemCreator>(std::forward<ItemCreator>(itemCreator)));
470470
}
471471

472-
template<typename... ItemArgs>
473-
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
474-
void AddBackNogrowVar(ItemArgs&&... itemArgs)
475-
{
476-
AddBackNogrowCrt(typename ItemTraits::template Creator<ItemArgs...>(GetMemManager(),
477-
std::forward<ItemArgs>(itemArgs)...));
478-
}
479-
480-
void AddBackNogrow(Item&& item)
481-
{
482-
AddBackNogrowVar(std::move(item));
483-
}
472+
//template<typename... ItemArgs>
473+
//void AddBackNogrowVar(ItemArgs&&... itemArgs)
484474

485-
void AddBackNogrow(const Item& item)
486-
{
487-
AddBackNogrowVar(item);
488-
}
475+
//void AddBackNogrow(Item&& item)
476+
//void AddBackNogrow(const Item& item)
489477

490478
template<internal::conceptObjectCreator<Item> ItemCreator>
491479
void AddBackCrt(ItemCreator itemCreator)
492480
{
493481
pvAddBack(FastMovableFunctor<ItemCreator>(std::forward<ItemCreator>(itemCreator)));
494482
}
495483

496-
template<typename... ItemArgs>
497-
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
498-
void AddBackVar(ItemArgs&&... itemArgs)
499-
{
500-
AddBackCrt(typename ItemTraits::template Creator<ItemArgs...>(GetMemManager(),
501-
std::forward<ItemArgs>(itemArgs)...));
502-
}
503-
504-
void AddBack(Item&& item)
505-
{
506-
AddBackVar(std::move(item));
507-
}
484+
//template<typename... ItemArgs>
485+
//void AddBackVar(ItemArgs&&... itemArgs)
508486

509-
void AddBack(const Item& item)
510-
{
511-
AddBackVar(item);
512-
}
487+
//void AddBack(Item&& item)
488+
//void AddBack(const Item& item)
513489

514490
//template<internal::conceptObjectCreator<Item> ItemCreator>
515491
//void InsertCrt(size_t index, ItemCreator itemCreator)

include/momo/SegmentedArray.h

+9-33
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ class SegmentedArray
261261
try
262262
{
263263
for (const Item& item : array)
264-
AddBackNogrow(item);
264+
this->AddBackNogrow(item);
265265
}
266266
catch (...)
267267
{
@@ -454,47 +454,23 @@ class SegmentedArray
454454
pvAddBackNogrow(FastMovableFunctor<ItemCreator>(std::forward<ItemCreator>(itemCreator)));
455455
}
456456

457-
template<typename... ItemArgs>
458-
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
459-
void AddBackNogrowVar(ItemArgs&&... itemArgs)
460-
{
461-
AddBackNogrowCrt(typename ItemTraits::template Creator<ItemArgs...>(GetMemManager(),
462-
std::forward<ItemArgs>(itemArgs)...));
463-
}
464-
465-
void AddBackNogrow(Item&& item)
466-
{
467-
AddBackNogrowVar(std::move(item));
468-
}
457+
//template<typename... ItemArgs>
458+
//void AddBackNogrowVar(ItemArgs&&... itemArgs)
469459

470-
void AddBackNogrow(const Item& item)
471-
{
472-
AddBackNogrowVar(item);
473-
}
460+
//void AddBackNogrow(Item&& item)
461+
//void AddBackNogrow(const Item& item)
474462

475463
template<internal::conceptObjectCreator<Item> ItemCreator>
476464
void AddBackCrt(ItemCreator itemCreator)
477465
{
478466
pvAddBack(FastMovableFunctor<ItemCreator>(std::forward<ItemCreator>(itemCreator)));
479467
}
480468

481-
template<typename... ItemArgs>
482-
//requires requires { typename ItemTraits::template Creator<ItemArgs...>; }
483-
void AddBackVar(ItemArgs&&... itemArgs)
484-
{
485-
AddBackCrt(typename ItemTraits::template Creator<ItemArgs...>(GetMemManager(),
486-
std::forward<ItemArgs>(itemArgs)...));
487-
}
488-
489-
void AddBack(Item&& item)
490-
{
491-
AddBackVar(std::move(item));
492-
}
469+
//template<typename... ItemArgs>
470+
//void AddBackVar(ItemArgs&&... itemArgs)
493471

494-
void AddBack(const Item& item)
495-
{
496-
AddBackVar(item);
497-
}
472+
//void AddBack(Item&& item)
473+
//void AddBack(const Item& item)
498474

499475
//template<internal::conceptObjectCreator<Item> ItemCreator>
500476
//void InsertCrt(size_t index, ItemCreator itemCreator)

0 commit comments

Comments
 (0)