Library: lib::Several complete and tested (see #473)
As a replacement for the `RefArray` a new generic container has been implemented and tested, in interplay with `AllocationCluster` * the front-end container `lib::Several<I>` exposes only a reference to the ''interface type'' `I`, while hiding any storage details * data can only be populated through the `lib::SeveralBuilder` * a lot of flexibility is allowed for the actual element data types * element storage is maintained in a storage extent, managed through a custom allocator (defaulting to `std::allocator` ⟹ heap storage)
This commit is contained in:
parent
cf6abf6a3b
commit
f632701f48
5 changed files with 247 additions and 184 deletions
|
|
@ -366,7 +366,7 @@ namespace lib {
|
|||
{
|
||||
if (not bucket) return false;
|
||||
size_t currSize = bucket->getAllocSize();
|
||||
size_t delta = request - bucket->buffSiz;
|
||||
long delta = long(request) - long(bucket->buffSiz);
|
||||
return this->mother_->canAdjust (bucket,currSize, currSize+delta);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,24 +49,24 @@
|
|||
** data storage, especially when the payload data type has alignment requirements
|
||||
** beyond `alignof(void*)`, which is typically used by the standard heap allocator;
|
||||
** additional headroom is added proactively in this case, to be able to shift the
|
||||
** storage buffer ahead to the next alignment boundrary.
|
||||
** storage buffer ahead to the next alignment boundary.
|
||||
**
|
||||
** # Handling of data elements
|
||||
**
|
||||
** The ability to emplace a mixture of data types into the storage exposed through
|
||||
** the lib::Several front-end creates some complexities related to element handling.
|
||||
** The implementation relies on a rules and criteria based approach to decide on
|
||||
** The implementation uses generic rules and criteria based approach to decide on
|
||||
** a case by case base if some given data content is still acceptable. This allows
|
||||
** for rather tricky low-level usages, but has the downside to detect errors only
|
||||
** at runtime — which in this case is ameliorated by the limitation that elements
|
||||
** must be provided completely up-front, through the SeveralBuilder.
|
||||
** - in order to handle any data element, we must be able to invoke its destructor
|
||||
** - an arbitrary mixture of types can thus only be accepted if either we can
|
||||
** - an arbitrary mixture of types can thus only be accepted if we can either
|
||||
** rely on a common virtual base class destructor, or if all data elements
|
||||
** are trivially destructible; these properties can be detected at compile
|
||||
** time with the help of the C++ `<type_traits>` library
|
||||
** - this container can accommodate _non-copyable_ data types, under the proviso
|
||||
** that the complete storage required is pre-allocated (using `reserve()` from
|
||||
** that the all the necessary storage is pre-allocated (using `reserve()` from
|
||||
** the builder API)
|
||||
** - otherwise, data can be filled in dynamically, expanding the storage as needed,
|
||||
** given that all existing elements can be safely re-located by move or copy
|
||||
|
|
@ -92,9 +92,8 @@
|
|||
** relevant when the _interface type_ has only lower alignment requirement,
|
||||
** but an individual element is added with higher alignment requirements.
|
||||
** In this case, while the spread is increased, still the placement of
|
||||
** the interface-type is used as anchor, possibly leading to misalignment.
|
||||
** the element-type \a E is used as anchor, possibly leading to misalignment.
|
||||
** @see several-builder-test.cpp
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
|
|
@ -166,6 +165,7 @@ namespace lib {
|
|||
return req;
|
||||
}
|
||||
|
||||
/** determine size of a reserve buffer to place with proper alignment */
|
||||
size_t inline constexpr
|
||||
alignRes (size_t alignment)
|
||||
{
|
||||
|
|
@ -173,6 +173,13 @@ namespace lib {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generic factory to manage objects within an ArrayBucket<I> storage,
|
||||
* delegating to a custom allocator \a ALO for memory handling.
|
||||
* - #create a storage block for a number of objects
|
||||
* - #createAt construct a single payload object at index position
|
||||
* - #destroy a storage block with proper clean-up (invoke dtors)
|
||||
*/
|
||||
template<class I, template<typename> class ALO>
|
||||
class ElementFactory
|
||||
: protected ALO<std::byte>
|
||||
|
|
@ -220,7 +227,7 @@ namespace lib {
|
|||
|
||||
using BucketAlloT = typename AlloT::template rebind_traits<Bucket>;
|
||||
auto bucketAllo = adaptAllocator<Bucket>();
|
||||
// Step-2 : construct the Bucket metadata | ▽ ArrayBucket ctor arg ▽
|
||||
// Step-2 : construct the Bucket metadata | ▽ ArrayBucket ctor arg ▽
|
||||
try { BucketAlloT::construct (bucketAllo, bucket, storageBytes, offset, spread); }
|
||||
catch(...)
|
||||
{
|
||||
|
|
@ -274,6 +281,12 @@ namespace lib {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* Policy Mix-In used to adapt to the ElementFactory and Allocator.
|
||||
* @tparam I Interface type (also used in the lib::Several<I> front-end
|
||||
* @tparam E a common _element type_ to use by default
|
||||
* @tparam ALO custom allocator template
|
||||
*/
|
||||
template<class I, class E, template<typename> class ALO>
|
||||
struct AllocationPolicy
|
||||
: ElementFactory<I, ALO>
|
||||
|
|
@ -286,6 +299,7 @@ namespace lib {
|
|||
/** by default assume that memory is practically unlimited... */
|
||||
size_t static constexpr ALLOC_LIMIT = size_t(-1) / sizeof(E);
|
||||
|
||||
/// Extension point: able to adjust dynamically to the requested size?
|
||||
bool canExpand(Bucket*, size_t){ return false; }
|
||||
|
||||
Bucket*
|
||||
|
|
@ -335,15 +349,35 @@ namespace lib {
|
|||
}
|
||||
};
|
||||
|
||||
/** Default configuration to use heap memory for lib::Several */
|
||||
template<class I, class E>
|
||||
using HeapOwn = AllocationPolicy<I, E, std::allocator>;
|
||||
|
||||
}//(End)implementation details
|
||||
|
||||
|
||||
/**
|
||||
* Wrap a vector holding objects of a subtype and
|
||||
* provide array-like access using the interface type.
|
||||
|
||||
|
||||
|
||||
/*************************************************//**
|
||||
* Builder to create and populate a lib::Several<I>.
|
||||
* Content elements can be of the _interface type_ \a I,
|
||||
* or the _default element type_ \a E. When possible, even
|
||||
* elements of an ad-hoc given, unrelated type can be used.
|
||||
* The expected standard usage is to place elements of a
|
||||
* subclass of \a I — but in fact the only limitation is that
|
||||
* later, when using the created lib::Several, all content
|
||||
* will be accessed through a (forced) cast to type \a I.
|
||||
* Data (and metadata) will be placed into an _extent,_ which
|
||||
* lives at a different location, as managed by an Allocator
|
||||
* (With default configuration, data is heap allocated).
|
||||
* The expansion behaviour is similar to std::vector, meaning
|
||||
* that the buffer grows with exponential stepping. However,
|
||||
* other than std::vector, even non-copyable objects can be
|
||||
* handled, using #reserve to prepare a suitable allocation.
|
||||
* @warning due to the flexibility and possible low-level usage
|
||||
* patterns, consistency checks may throw at runtime,
|
||||
* when attempting to add an unsuitable element.
|
||||
*/
|
||||
template<class I ///< Interface or base type visible on resulting Several<I>
|
||||
,class E =I ///< a subclass element element type (relevant when not trivially movable and destructible)
|
||||
|
|
@ -370,6 +404,7 @@ namespace lib {
|
|||
{ }
|
||||
|
||||
|
||||
|
||||
/* ===== Builder API ===== */
|
||||
|
||||
/** cross-builder to use a custom allocator for the lib::Several container */
|
||||
|
|
@ -392,6 +427,18 @@ namespace lib {
|
|||
return move(*this);
|
||||
}
|
||||
|
||||
/** discard excess reserve capacity.
|
||||
* @warning typically this requires re-allocation and copy
|
||||
*/
|
||||
SeveralBuilder&&
|
||||
shrinkFit()
|
||||
{
|
||||
if (not Coll::empty()
|
||||
or size() < capacity())
|
||||
fitStorage();
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
/** append copies of one or several arbitrary elements */
|
||||
template<typename VAL, typename...VALS>
|
||||
SeveralBuilder&&
|
||||
|
|
@ -444,7 +491,7 @@ namespace lib {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
/***********************************************************//**
|
||||
* Terminal Builder: complete and lock the collection contents.
|
||||
* @note the SeveralBuilder is sliced away, effectively
|
||||
* returning only the pointer to the ArrayBucket.
|
||||
|
|
@ -461,7 +508,7 @@ namespace lib {
|
|||
size_t capReserve() const { return capacity() - size(); }
|
||||
|
||||
|
||||
private:
|
||||
private: /* ========= Implementation of element placement ================ */
|
||||
template<class IT>
|
||||
void
|
||||
emplaceCopy (IT& dataSrc)
|
||||
|
|
@ -475,7 +522,7 @@ namespace lib {
|
|||
emplaceNewElm (ARGS&& ...args)
|
||||
{
|
||||
static_assert (is_object_v<TY> and not (is_const_v<TY> or is_volatile_v<TY>));
|
||||
|
||||
|
||||
probeMoveCapability<TY>(); // mark when target type is not (trivially) movable
|
||||
ensureElementCapacity<TY>(); // sufficient or able to adapt spread
|
||||
ensureStorageCapacity<TY>(); // sufficient or able to grow buffer
|
||||
|
|
@ -520,7 +567,7 @@ namespace lib {
|
|||
{
|
||||
if (not (Coll::empty()
|
||||
or Coll::hasReserve (requiredSiz, newElms)
|
||||
or POL::canExpand (Coll::data_, requiredSiz*newElms)
|
||||
or POL::canExpand (Coll::data_, requiredSiz*(Coll::size() + newElms))
|
||||
or canDynGrow()))
|
||||
throw err::Invalid{_Fmt{"Several-container is unable to accommodate further element of type %s; "
|
||||
"storage reserve (%d bytes ≙ %d elms) exhausted and unable to move "
|
||||
|
|
@ -565,9 +612,9 @@ namespace lib {
|
|||
void
|
||||
fitStorage()
|
||||
{
|
||||
if (not Coll::data)
|
||||
return;
|
||||
if (not canDynGrow())
|
||||
REQUIRE (not Coll::empty());
|
||||
if (not (POL::canExpand (Coll::data_, Coll::size())
|
||||
or canDynGrow()))
|
||||
throw err::Invalid{"Unable to shrink storage for Several-collection, "
|
||||
"since at least one element can not be moved."};
|
||||
Coll::data_ = POL::realloc (Coll::data_, Coll::size(), Coll::spread());
|
||||
|
|
@ -751,6 +798,8 @@ namespace lib {
|
|||
* `ALO<std::byte>` to create and destroy the memory buffer for content data
|
||||
* @param args optional dependency wiring arguments, to be passed to the allocator
|
||||
* @return a new empty SeveralBuilder, configured to use the custom allocator.
|
||||
* @see lib::AllocationCluster (which provides a custom adaptation)
|
||||
* @see SeveralBuilder_test::check_CustomAllocator()
|
||||
*/
|
||||
template<class I, class E, class POL>
|
||||
template<template<typename> class ALO, typename...ARGS>
|
||||
|
|
|
|||
|
|
@ -52,8 +52,6 @@
|
|||
** The container is single-ownership (move-asignable); some additional metadata
|
||||
** and the data storage reside within an `ArrayBucket<I>`, managed by the allocator.
|
||||
** In its simplest form, this storage is heap allocated and automatically deleted.
|
||||
**
|
||||
** @warning WIP-WIP in rework 6/2025
|
||||
** @see several-builder.hpp
|
||||
*/
|
||||
|
||||
|
|
@ -256,8 +254,6 @@ namespace lib {
|
|||
return data_
|
||||
and data_->buffSiz >= size()*spread() + extraSize;
|
||||
}
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@
|
|||
#include "lib/test/tracking-allocator.hpp"
|
||||
#include "lib/test/test-coll.hpp"
|
||||
#include "lib/test/test-helper.hpp"
|
||||
#include "lib/test/diagnostic-output.hpp"////////////////TODO
|
||||
#include "lib/allocation-cluster.hpp"
|
||||
#include "lib/iter-explorer.hpp"
|
||||
#include "lib/format-util.hpp"
|
||||
|
|
@ -39,11 +38,9 @@
|
|||
|
||||
#include "lib/several-builder.hpp"
|
||||
|
||||
#include <vector>
|
||||
#include <array>
|
||||
|
||||
using ::test::Test;
|
||||
using std::vector;
|
||||
using std::array;
|
||||
using std::rand;
|
||||
|
||||
|
|
@ -58,7 +55,7 @@ using util::join;
|
|||
namespace lib {
|
||||
namespace test{
|
||||
|
||||
namespace { // diagnostic test types
|
||||
namespace { // invocation tracking diagnostic subclass...
|
||||
|
||||
/**
|
||||
* Instance tracking sub-dummy
|
||||
|
|
@ -85,7 +82,7 @@ namespace test{
|
|||
{
|
||||
setVal (getVal() - explore(ext_).resultSum());
|
||||
}
|
||||
|
||||
|
||||
long
|
||||
calc (int ii) override
|
||||
{
|
||||
|
|
@ -163,7 +160,6 @@ namespace test{
|
|||
|
||||
|
||||
/** @test demonstrate basic behaviour
|
||||
* @todo WIP 6/24 ✔ define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
simpleUsage()
|
||||
|
|
@ -184,12 +180,11 @@ namespace test{
|
|||
* *unchecked wild cast* will happen on access; while certainly dangerous,
|
||||
* this behaviour allows for special low-level data layout tricks.
|
||||
* - the results from an iterator can be used to populate by copy
|
||||
* @todo WIP 6/24 ✔ define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
check_Builder()
|
||||
{
|
||||
// prepare to verify proper invocation of all constructors / destructors
|
||||
// prepare to verify proper invocation of all constructors / destructors
|
||||
Dummy::checksum() = 0;
|
||||
|
||||
{ // Scenario-1 : Baseclass and arbitrary subclass elements
|
||||
|
|
@ -274,7 +269,6 @@ namespace test{
|
|||
* grow dynamically.
|
||||
* - all these failure conditions are handled properly, including exceptions emanating
|
||||
* from element constructors; the container remains sane and no memory is leaked.
|
||||
* @todo WIP 6/24 ✔ define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
check_ErrorHandling()
|
||||
|
|
@ -472,6 +466,7 @@ namespace test{
|
|||
}
|
||||
|
||||
|
||||
|
||||
/** @test verify correct placement of instances within storage
|
||||
* - use a low-level pointer calculation for this test to
|
||||
* draw conclusions regarding the spacing of objects accepted
|
||||
|
|
@ -482,7 +477,6 @@ namespace test{
|
|||
* move-assign the lib::Several container instance; this
|
||||
* demonstrates that the latter is just a access front-end,
|
||||
* while the data elements reside in a fixed storage buffer
|
||||
* @todo WIP 6/24 ✔ define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
check_ElementStorage()
|
||||
|
|
@ -553,15 +547,15 @@ namespace test{
|
|||
|
||||
|
||||
|
||||
/** @test TODO demonstrate integration with a custom allocator
|
||||
/** @test demonstrate integration with a custom allocator
|
||||
* - use the TrackingAllocator to verify balanced handling
|
||||
* of the underlying raw memory allocations
|
||||
* - use an AllocationCluster instance to manage the storage
|
||||
* @todo WIP 6/24 🔁 define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
check_CustomAllocator()
|
||||
{
|
||||
// Setup-1: use the TrackingAllocator
|
||||
CHECK (0 == Dummy::checksum());
|
||||
CHECK (0 == TrackingAllocator::checksum());
|
||||
|
||||
|
|
@ -607,72 +601,75 @@ namespace test{
|
|||
CHECK (0 == TrackingAllocator::use_count());
|
||||
CHECK (0 == TrackingAllocator::checksum());
|
||||
|
||||
AllocationCluster clu;
|
||||
{
|
||||
auto builder = makeSeveral<Dummy>()
|
||||
.withAllocator(clu)
|
||||
.reserve(4) // use a limited pre-reservation
|
||||
.fillElm(4); // fill all the allocated space with 4 new elements
|
||||
|
||||
size_t buffSiz = sizeof(Dummy) * builder.capacity();
|
||||
size_t headerSiz = sizeof(ArrayBucket<Dummy>);
|
||||
expectedAlloc = headerSiz + buffSiz;
|
||||
SHOW_EXPR(expectedAlloc)
|
||||
SHOW_EXPR(builder.size())
|
||||
CHECK (4 == builder.size());
|
||||
SHOW_EXPR(builder.capacity())
|
||||
CHECK (4 == builder.capacity());
|
||||
SHOW_EXPR(clu.numExtents())
|
||||
CHECK (1 == clu.numExtents()); // AllocationCluster has only opened one extent thus far
|
||||
SHOW_EXPR(clu.numBytes())
|
||||
CHECK (expectedAlloc == clu.numBytes()); // and the allocated space matches the demand precisely
|
||||
|
||||
|
||||
{// Setup-2: use an AllocationCLuster instance
|
||||
AllocationCluster clu;
|
||||
size_t allotted = clu.numBytes();
|
||||
CHECK (allotted == 0);
|
||||
{
|
||||
auto builder = makeSeveral<Dummy>()
|
||||
.withAllocator(clu)
|
||||
.reserve(4) // use a limited pre-reservation
|
||||
.fillElm(4); // fill all the allocated space with 4 new elements
|
||||
|
||||
size_t buffSiz = sizeof(Dummy) * builder.capacity();
|
||||
size_t headerSiz = sizeof(ArrayBucket<Dummy>);
|
||||
expectedAlloc = headerSiz + buffSiz;
|
||||
CHECK (4 == builder.size());
|
||||
CHECK (4 == builder.capacity());
|
||||
CHECK (1 == clu.numExtents()); // AllocationCluster has only opened one extent thus far
|
||||
CHECK (expectedAlloc == clu.numBytes()); // and the allocated space matches the demand precisely
|
||||
|
||||
builder.append (Dummy{23}); // now request to add just one further element
|
||||
SHOW_EXPR(builder.capacity())
|
||||
CHECK (8 == builder.capacity()); // ...which causes the builder to double up the reserve capacity
|
||||
builder.append (Dummy{23}); // now request to add just one further element
|
||||
CHECK (8 == builder.capacity()); // ...which causes the builder to double up the reserve capacity
|
||||
|
||||
buffSiz = sizeof(Dummy) * builder.capacity();
|
||||
expectedAlloc = headerSiz + buffSiz;
|
||||
SHOW_EXPR(buffSiz)
|
||||
SHOW_EXPR(buffSiz + expectedAlloc)
|
||||
SHOW_EXPR(buffSiz + headerSiz)
|
||||
SHOW_EXPR(builder.size())
|
||||
SHOW_EXPR(builder.capacity())
|
||||
SHOW_EXPR(clu.numExtents())
|
||||
CHECK (1 == clu.numExtents()); // However, AllocationCluster was able to adjust allocation in-place
|
||||
SHOW_EXPR(clu.numBytes())
|
||||
CHECK (expectedAlloc == clu.numBytes()); // and thus the new increased buffer is still placed in the first extent
|
||||
buffSiz = sizeof(Dummy) * builder.capacity();
|
||||
expectedAlloc = headerSiz + buffSiz;
|
||||
CHECK (1 == clu.numExtents()); // However, AllocationCluster was able to adjust allocation in-place
|
||||
CHECK (expectedAlloc == clu.numBytes()); // and thus the new increased buffer is still placed in the first extent
|
||||
|
||||
// now perform another unrelated allocation
|
||||
Dummy& extraDummy = clu.create<Dummy>(55);
|
||||
SHOW_EXPR(clu.numExtents())
|
||||
CHECK (1 == clu.numExtents());
|
||||
SHOW_EXPR(clu.numBytes())
|
||||
CHECK (clu.numBytes() > expectedAlloc + sizeof(Dummy)); // but now we've used some further space behind that point
|
||||
|
||||
builder.reserve(9); // ...which means that the AllocationCluster can no longer adjust dynamically
|
||||
SHOW_EXPR(builder.size())
|
||||
CHECK (5 == builder.size()); // .....because this is only possible on the latest allocation opened
|
||||
SHOW_EXPR(builder.capacity())
|
||||
CHECK (9 <= builder.capacity()); // And while we still got out increased capacity,
|
||||
SHOW_EXPR(clu.numExtents())
|
||||
CHECK (2 == clu.numExtents()); // this was only possible by wasting space and copying into a new extent
|
||||
SHOW_EXPR(clu.numBytes())
|
||||
buffSiz = sizeof(Dummy) * builder.capacity();
|
||||
expectedAlloc = headerSiz + buffSiz;
|
||||
CHECK (expectedAlloc <= AllocationCluster::max_size());
|
||||
CHECK (clu.numBytes() == AllocationCluster::max_size()
|
||||
+ expectedAlloc);
|
||||
|
||||
elms = builder.build(); // Note: assigning to the existing front-end (which is storage agnostic)
|
||||
CHECK (5 == elms.size());
|
||||
// perform another unrelated allocation
|
||||
Dummy& extraDummy = clu.create<Dummy>(55);
|
||||
CHECK (1 == clu.numExtents());
|
||||
CHECK (clu.numBytes() > expectedAlloc+sizeof(Dummy)); // but now we've used some further space behind that point
|
||||
|
||||
builder.reserve(9); // ...which means that the AllocationCluster can no longer adjust dynamically
|
||||
CHECK (5 == builder.size()); // .....because this is only possible on the latest allocation opened
|
||||
CHECK (9 <= builder.capacity()); // And while we still got the increased capacity as desired,
|
||||
CHECK (2 == clu.numExtents()); // this was only possible by wasting space and copying into a new extent
|
||||
buffSiz = sizeof(Dummy) * builder.capacity();
|
||||
expectedAlloc = headerSiz + buffSiz;
|
||||
CHECK (expectedAlloc <= AllocationCluster::max_size());
|
||||
CHECK (clu.numBytes() == AllocationCluster::max_size()
|
||||
+ expectedAlloc);
|
||||
|
||||
allotted = clu.numBytes();
|
||||
// request to throw away excess reserve
|
||||
builder.shrinkFit();
|
||||
CHECK (5 == builder.size());
|
||||
CHECK (5 == builder.capacity());
|
||||
CHECK (allotted > clu.numBytes()); // dynamic adjustment was possible, since it is the latest allocation
|
||||
allotted = clu.numBytes();
|
||||
|
||||
elms = builder.build(); // Note: assigning to the existing front-end (which is storage agnostic)
|
||||
CHECK (5 == elms.size());
|
||||
CHECK (23 == elms.back().getVal());
|
||||
CHECK (55 == extraDummy.getVal());
|
||||
} // Now the Builder and the ExtraDummy is gone...
|
||||
CHECK (5 == elms.size()); // while all created elements are still there, sitting in the Allocationcluster
|
||||
CHECK (23 == elms.back().getVal());
|
||||
CHECK (55 == extraDummy.getVal());
|
||||
} // Now the Builder and the ExtraDummy is gone...
|
||||
CHECK (5 == elms.size()); // while all created elements are still there, sitting in the Allocationcluster
|
||||
CHECK (23 == elms.back().getVal());
|
||||
CHECK (2 == clu.numExtents());
|
||||
}
|
||||
CHECK (2 == clu.numExtents());
|
||||
CHECK (clu.numBytes() == allotted);
|
||||
|
||||
CHECK (Dummy::checksum() > 0);
|
||||
elms = move(Several<Dummy>{});
|
||||
CHECK (Dummy::checksum() == 55); // all elements within Several were cleaned-up...
|
||||
CHECK (2 == clu.numExtents()); // but the base allocation itself lives as long as the AllocationCluster
|
||||
CHECK (clu.numBytes() == allotted);
|
||||
}// AllocationCluster goes out of scope...
|
||||
CHECK (Dummy::checksum() == 0); // now the (already unreachable) extraDummy was cleaned up
|
||||
} // WARNING: contents in Several would now be dangling (if we haden't killed them)
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -81073,7 +81073,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1714870490954" ID="ID_433835630" MODIFIED="1714870505595" TEXT="Aufräumen">
|
||||
<node CREATED="1714870490954" ID="ID_433835630" MODIFIED="1718817901262" TEXT="Aufräumen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1714870511447" ID="ID_698798351" MODIFIED="1714870529856" TEXT="NodeGraphAttachment in ExitNode umwandeln"/>
|
||||
<node CREATED="1714870530945" ID="ID_1030439043" MODIFIED="1714870546389" TEXT="bisherige skizzierte Rolle er ExitNode zurückbauen"/>
|
||||
<node CREATED="1714872094981" ID="ID_1665864694" MODIFIED="1714872109269" TEXT="Reste der BuffTable aus dem 1.Entwurf"/>
|
||||
|
|
@ -81081,7 +81082,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<arrowlink DESTINATION="ID_963083918" ENDARROW="Default" ENDINCLINATION="423;38;" ID="Arrow_ID_674451029" STARTARROW="None" STARTINCLINATION="1145;-57;"/>
|
||||
</node>
|
||||
<node CREATED="1715523610870" ID="ID_1129364168" MODIFIED="1715523630439" TEXT="Invocation + StateAdapter + TurnoutSystem fallen zusammen"/>
|
||||
<node CREATED="1715526750604" ID="ID_208674861" MODIFIED="1715526755607" TEXT="RefArray modernisieren">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1715526750604" ID="ID_208674861" MODIFIED="1718817889363" TEXT="RefArray modernisieren">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1715526756800" ID="ID_364406773" MODIFIED="1715526765735" TEXT="sollte sich Richtung Concept bewegen"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1715526766314" ID="ID_1523408221" MODIFIED="1715526784381" TEXT="Vorsicht: eine Neben-Verwendung in der Session (ElementTracker)">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -81337,12 +81339,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1715526315140" ID="ID_266709880" MODIFIED="1715526343297" TEXT="der feste Anteil (Node-Network) wird alloziert via AllocationCluster"/>
|
||||
<node CREATED="1715526344106" ID="ID_1391623056" MODIFIED="1715526355632" TEXT="ein dynamischer Anteil delegiert an einen BufferManager"/>
|
||||
</node>
|
||||
<node CREATED="1715526114305" ID="ID_576332674" MODIFIED="1715526929087" TEXT="Several">
|
||||
<node COLOR="#338800" CREATED="1715526114305" FOLDED="true" ID="ID_576332674" MODIFIED="1718816094986" TEXT="Several">
|
||||
<linktarget COLOR="#fbfed6" DESTINATION="ID_576332674" ENDARROW="Default" ENDINCLINATION="-670;-163;" ID="Arrow_ID_18042992" SOURCE="ID_1553624646" STARTARROW="None" STARTINCLINATION="525;35;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1715526375984" ID="ID_466368192" MODIFIED="1715526390634" TEXT="leichtgewichtiges Front-End zu einer Vector-artigen Collection"/>
|
||||
<node CREATED="1715526412553" ID="ID_1310310561" MODIFIED="1715526457239" TEXT="bietet zusätzlich die Fähigkeit zur inplace-Allokation"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1715530825487" ID="ID_744922331" MODIFIED="1715530828707" TEXT="Design">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1715530825487" ID="ID_744922331" MODIFIED="1718816075854" TEXT="Design">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1715530839818" FOLDED="true" ID="ID_1299414083" MODIFIED="1718320555733" TEXT="Analyse">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1715530844562" ID="ID_598901793" MODIFIED="1718320534356" TEXT="warum nicht einen Vector?">
|
||||
|
|
@ -81530,7 +81533,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1715624536080" ID="ID_614918224" MODIFIED="1715624543338" TEXT="Entscheidungen">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1715624536080" ID="ID_614918224" MODIFIED="1718816072641" TEXT="Entscheidungen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1715624583813" ID="ID_1547806624" MODIFIED="1715624601374" TEXT="einfache begin/end-Pointer - Implementierung">
|
||||
<node CREATED="1715624604522" ID="ID_1995705427" MODIFIED="1715624613764" TEXT="analog zu std::vector"/>
|
||||
|
|
@ -81564,8 +81567,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1715625068841" ID="ID_273362995" MODIFIED="1715625074791" TEXT="Implementierung">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1715625094577" ID="ID_1764137888" MODIFIED="1715625115360" TEXT="muß Allocator-Integration klären">
|
||||
<node COLOR="#338800" CREATED="1715625068841" ID="ID_273362995" MODIFIED="1718816081230" TEXT="Implementierung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1715625094577" FOLDED="true" ID="ID_1764137888" MODIFIED="1718816065684" TEXT="muß Allocator-Integration klären">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1715625132676" ID="ID_741455291" MODIFIED="1715625275278" TEXT="bestehende Allocation-Cluster-Impl erscheint nicht ganz passend">
|
||||
<linktarget COLOR="#fd2206" DESTINATION="ID_741455291" ENDARROW="Default" ENDINCLINATION="371;-21;" ID="Arrow_ID_148841438" SOURCE="ID_748407633" STARTARROW="None" STARTINCLINATION="988;41;"/>
|
||||
|
|
@ -81624,7 +81628,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1715626381670" ID="ID_365556330" MODIFIED="1715626396019" TEXT="Idee: den Allocation-Cluster unter gleichem Namen im Grund neu schreiben">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1715626381670" ID="ID_365556330" MODIFIED="1718816061948" TEXT="Idee: den Allocation-Cluster unter gleichem Namen im Grund neu schreiben">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1715626414697" ID="ID_280677111" MODIFIED="1715626425820" TEXT="durch den Namen wäre die Kontinuität pro Forma gewahrt"/>
|
||||
<node CREATED="1715626476945" ID="ID_1929954995" MODIFIED="1715626592916" TEXT="es gibt bisher nur minimale / vorbereitende Verwendungen">
|
||||
|
|
@ -81733,9 +81737,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1715627195825" ID="ID_40203233" MODIFIED="1718073928659" TEXT="Details festlegen">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#338800" CREATED="1715627195825" ID="ID_40203233" MODIFIED="1718815998979" TEXT="Details festlegen">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1716856805949" ID="ID_792128264" MODIFIED="1716856808446" TEXT="Design">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1716856805949" ID="ID_792128264" MODIFIED="1718816042269" TEXT="Design">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1716903878763" ID="ID_1194580959" MODIFIED="1716903884972" TEXT="der Container ist general-purpose">
|
||||
<node CREATED="1716903981442" ID="ID_1597569499" MODIFIED="1716903997087" TEXT="es handelt sich um ein generell nützliches Konzept"/>
|
||||
<node CREATED="1716903997843" ID="ID_835405424" MODIFIED="1716904010573" TEXT="Funktionalität ist vergleichbar zu ScopedCollection"/>
|
||||
|
|
@ -81767,6 +81773,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1716857432809" ID="ID_976896851" MODIFIED="1716857436700" TEXT="API">
|
||||
<node CREATED="1716861302691" ID="ID_346534745" MODIFIED="1716861305151" TEXT="Builder">
|
||||
<node CREATED="1716861306163" ID="ID_1889956528" MODIFIED="1716861327876" TEXT="kann man direkt konstruieren"/>
|
||||
<node CREATED="1718816017247" ID="ID_890231451" MODIFIED="1718816031234" TEXT="Methoden zum konstruieren, default-konstruieren, anhängen"/>
|
||||
<node CREATED="1716861328512" ID="ID_533852363" MODIFIED="1716861336547" TEXT="convenience front-end: makeSeveral">
|
||||
<node CREATED="1716861337631" ID="ID_1982319827" MODIFIED="1716861345282" TEXT="kann Typ deduzieren"/>
|
||||
</node>
|
||||
|
|
@ -81778,8 +81785,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1716861408733" ID="ID_526137450" MODIFIED="1716861420560" TEXT="Iteration per Lumiera-Iterator"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1716861706141" ID="ID_32527710" MODIFIED="1718073921132" TEXT="knifflige technische Details">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1716861706141" FOLDED="true" ID="ID_32527710" MODIFIED="1718816005620" TEXT="knifflige technische Details">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1716861725635" ID="ID_1822785959" MODIFIED="1718073775948" TEXT="festlegen des Element-Spread">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#360bbc" CREATED="1716861791476" ID="ID_1153264423" MODIFIED="1718034898633" TEXT="Zielkonflikt">
|
||||
|
|
@ -82016,7 +82023,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node CREATED="1718635034149" ID="ID_1461604114" MODIFIED="1718635037864" TEXT="Daten-Layout">
|
||||
<node CREATED="1718635040841" ID="ID_175622224" MODIFIED="1718635051335" TEXT="Front-End ≙ reiner smart-Ptr"/>
|
||||
<node CREATED="1718635052043" ID="ID_484909431" MODIFIED="1718635056781" TEXT="Storage: ArrayBucket">
|
||||
<node CREATED="1718635052043" FOLDED="true" ID="ID_484909431" MODIFIED="1718815967768" TEXT="Storage: ArrayBucket">
|
||||
<node COLOR="#5b280f" CREATED="1718635061353" ID="ID_807024103" MODIFIED="1718669795382" TEXT="verschiedene Typ-Sichten">
|
||||
<linktarget COLOR="#fafec9" DESTINATION="ID_807024103" ENDARROW="Default" ENDINCLINATION="241;-200;" ID="Arrow_ID_1895952533" SOURCE="ID_692581133" STARTARROW="None" STARTINCLINATION="-711;55;"/>
|
||||
<icon BUILTIN="closed"/>
|
||||
|
|
@ -82229,7 +82236,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1716901733807" ID="ID_955318801" MODIFIED="1718073722360" TEXT="Typdefinition">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1716901733807" FOLDED="true" ID="ID_955318801" MODIFIED="1718073722360" TEXT="Typdefinition">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="info"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#651a92" CREATED="1716904763479" ID="ID_128910376" MODIFIED="1718073736477" TEXT="Several<X>">
|
||||
|
|
@ -82284,7 +82291,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1716909012702" ID="ID_1876994172" MODIFIED="1716909016713" TEXT="const-correctness">
|
||||
<node CREATED="1716909019405" ID="ID_1406909807" MODIFIED="1716909042294" TEXT="ein const Several<X> ist ein Several<const X>"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#ff0000" CREATED="1717594749496" ID="ID_390432519" MODIFIED="1718038723473" TEXT="Allokator-Problem gewaltsam lösen">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#ff0000" CREATED="1717594749496" FOLDED="true" ID="ID_390432519" MODIFIED="1718815943550" TEXT="Allokator-Problem gewaltsam lösen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1717594765625" ID="ID_1189594619" MODIFIED="1717594883249" TEXT="das Problem">
|
||||
<linktarget COLOR="#982b52" DESTINATION="ID_1189594619" ENDARROW="Default" ENDINCLINATION="-919;-125;" ID="Arrow_ID_1251242601" SOURCE="ID_891863283" STARTARROW="None" STARTINCLINATION="338;767;"/>
|
||||
|
|
@ -82427,7 +82434,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1716936826666" ID="ID_1382882363" MODIFIED="1716936834769" TEXT="Problem: Objekte verschieben">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1716936826666" FOLDED="true" ID="ID_1382882363" MODIFIED="1718815945091" TEXT="Problem: Objekte verschieben">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1716936845950" ID="ID_715653412" MODIFIED="1716936862044" TEXT="eigentlich darf man das nur bei trivial kopierbaren Objekten">
|
||||
<node CREATED="1716936929564" ID="ID_707314614" LINK="https://en.cppreference.com/w/cpp/named_req/TriviallyCopyable" MODIFIED="1716936935390" TEXT="TriviallyCopyable"/>
|
||||
|
|
@ -82442,7 +82449,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1716937138104" ID="ID_1463751078" MODIFIED="1716937157438" TEXT="aber: std::realloc gibt den alten Puffer sofort frei"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1716937163164" ID="ID_1513844512" MODIFIED="1718073800702" TEXT="wie geht std::vector damit um?">
|
||||
<node COLOR="#435e98" CREATED="1716937163164" FOLDED="true" ID="ID_1513844512" MODIFIED="1718073800702" TEXT="wie geht std::vector damit um?">
|
||||
<icon BUILTIN="help"/>
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1716990764896" FOLDED="true" ID="ID_1932292038" MODIFIED="1718073806810" TEXT="Code lesen...">
|
||||
|
|
@ -82557,9 +82564,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717536689923" ID="ID_57717387" MODIFIED="1718073831823" TEXT="Also: das können wir auch">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1717536689923" FOLDED="true" ID="ID_57717387" MODIFIED="1718815931010" TEXT="Also: das können wir auch">
|
||||
<linktarget COLOR="#62789e" DESTINATION="ID_57717387" ENDARROW="Default" ENDINCLINATION="-21;-195;" ID="Arrow_ID_659541479" SOURCE="ID_1563046053" STARTARROW="None" STARTINCLINATION="-158;46;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
<node CREATED="1717536711508" ID="ID_1202794334" MODIFIED="1717536719580" TEXT="und zwar zweischichtig">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1717536720952" ID="ID_438837024" MODIFIED="1717536735768" TEXT="Reserve-oder-Verschieben"/>
|
||||
|
|
@ -82807,8 +82815,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1717777101317" ID="ID_826816346" MODIFIED="1718073676455" TEXT="konkret einbinden">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1717777101317" ID="ID_826816346" MODIFIED="1718815893362" TEXT="konkret einbinden">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1717777109755" ID="ID_1395035594" MODIFIED="1718073670145" TEXT="neue Elemente erstellen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1717777153193" ID="ID_626770308" MODIFIED="1718038519856" TEXT="Element-Typ">
|
||||
|
|
@ -82835,14 +82843,17 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1717777127619" ID="ID_42350747" MODIFIED="1718320366608" TEXT="resize auf gegebenen Spread">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717777134500" ID="ID_1083429601" MODIFIED="1717777151106" TEXT="shrink-to-fit">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1717777134500" ID="ID_1083429601" MODIFIED="1718815890152" TEXT="shrink-to-fit">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#b90b8c" CREATED="1718815899224" HGAP="-7" ID="ID_211783347" MODIFIED="1718815925001" TEXT="(war leichter gesagt als getan)" VSHIFT="4">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="11"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717723412216" ID="ID_1483275702" MODIFIED="1717723419487" TEXT="Allokator flexibel einbinden">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1717723412216" ID="ID_1483275702" MODIFIED="1718815863344" TEXT="Allokator flexibel einbinden">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1717723422166" ID="ID_1525424957" MODIFIED="1717723517420" TEXT="Anforderungen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1717723426670" ID="ID_1964183784" MODIFIED="1717723456378" TEXT="Standardfall: Heap-Allokation �� muß automatisch funktionieren">
|
||||
|
|
@ -82858,21 +82869,24 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1717723564508" ID="ID_16935134" MODIFIED="1717723623192" TEXT="verwende eine AllocationPolicy">
|
||||
<node COLOR="#435e98" CREATED="1717723564508" FOLDED="true" ID="ID_16935134" MODIFIED="1718815860990" TEXT="verwende eine AllocationPolicy">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1717723580796" ID="ID_453265164" MODIFIED="1717796591123" TEXT="der Builder erbt von dieser (Policy Mix-In)"/>
|
||||
<node CREATED="1717723599686" ID="ID_1353907596" MODIFIED="1717723615688" TEXT="sie mischt ihrerseits eine ElementFactory ein"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1717723625139" ID="ID_1954915705" MODIFIED="1718073605616" TEXT="Adapter-Methoden">
|
||||
<node COLOR="#338800" CREATED="1717723636675" ID="ID_1612255322" MODIFIED="1718073597212" TEXT="realloc">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1717723720004" ID="ID_456348135" MODIFIED="1717723723226" TEXT="Anforderungen">
|
||||
<node COLOR="#435e98" CREATED="1717723720004" ID="ID_456348135" MODIFIED="1718815818324" TEXT="Anforderungen">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1717723724203" ID="ID_54813391" MODIFIED="1717801571693" TEXT="entscheidet intelligent ob und was zu tun ist"/>
|
||||
<node CREATED="1717723734527" ID="ID_184980735" MODIFIED="1717723746074" TEXT="unterstützt auch die normale (initiale) Allokation"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1717723747298" ID="ID_1111696667" MODIFIED="1717723776089" TEXT="kann mit dem unterliegenden Allokator eine Spezialbehandlung abstimmen">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1717723747298" ID="ID_1111696667" MODIFIED="1718815852827" TEXT="kann mit dem unterliegenden Allokator eine Spezialbehandlung abstimmen">
|
||||
<arrowlink COLOR="#fffcd5" DESTINATION="ID_119150059" ENDARROW="Default" ENDINCLINATION="-54;-105;" ID="Arrow_ID_265552892" STARTARROW="None" STARTINCLINATION="-378;14;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1717776954529" ID="ID_103031227" MODIFIED="1717894195586" TEXT="Basis-Implementierung">
|
||||
<node COLOR="#338800" CREATED="1717776954529" FOLDED="true" ID="ID_103031227" MODIFIED="1717894195586" TEXT="Basis-Implementierung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1717801589821" ID="ID_1293735403" MODIFIED="1717803186231" TEXT="arbeitet explizit mit ArrayBucket">
|
||||
<icon BUILTIN="yes"/>
|
||||
|
|
@ -82892,7 +82906,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1717777049607" ID="ID_184907732" MODIFIED="1717980968358" TEXT="brauche den konkreten Zieltyp hier">
|
||||
<node COLOR="#338800" CREATED="1717777049607" FOLDED="true" ID="ID_184907732" MODIFIED="1717980968358" TEXT="brauche den konkreten Zieltyp hier">
|
||||
<arrowlink COLOR="#339199" DESTINATION="ID_584325941" ENDARROW="Default" ENDINCLINATION="167;18;" ID="Arrow_ID_1090340504" STARTARROW="None" STARTINCLINATION="178;0;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1717858632242" HGAP="52" ID="ID_230351736" MODIFIED="1717980953018" TEXT="korrekte Methode für Verschiebung wählen" VSHIFT="62">
|
||||
|
|
@ -82912,9 +82926,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#435e98" CREATED="1717980924344" ID="ID_599080738" MODIFIED="1717980947745" TEXT="Lösung: auch die AllocationPolicy zusätzlich auf E templaten">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1717894127145" ID="ID_774641997" MODIFIED="1718073590404" TEXT="andere Fälle werden nicht zugelassen">
|
||||
<icon BUILTIN="bell"/>
|
||||
<node COLOR="#435e98" CREATED="1717894315160" ID="ID_1788527715" MODIFIED="1718206012876" TEXT="auf welcher Ebene wird das geprüft?">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1717894127145" ID="ID_774641997" MODIFIED="1718815737414" TEXT="andere Fälle werden nicht zugelassen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node COLOR="#435e98" CREATED="1717894315160" FOLDED="true" ID="ID_1788527715" MODIFIED="1718206012876" TEXT="auf welcher Ebene wird das geprüft?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node COLOR="#435e98" CREATED="1717894328830" ID="ID_1955150114" MODIFIED="1718206021517">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -83002,16 +83016,20 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718815743765" ID="ID_172886807" MODIFIED="1718815755893" TEXT="umfangreich im Test verifiziert">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1717893861445" ID="ID_405289980" MODIFIED="1717893885331" TEXT="Kapazitäts-Steuerung ">
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1717893861445" FOLDED="true" ID="ID_405289980" MODIFIED="1718815832771" TEXT="Kapazitäts-Steuerung ">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1717776973613" ID="ID_1749910669" MODIFIED="1717776980785" TEXT="exponentielle Erweiterung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1717776981387" ID="ID_631542593" MODIFIED="1717776987939" TEXT="safety-Limit einbauen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718807497816" ID="ID_1980443647" MODIFIED="1718807994990" TEXT="hier mögliche Beschränkung des Allokators berücksichtigen">
|
||||
<node COLOR="#338800" CREATED="1718807497816" FOLDED="true" ID="ID_1980443647" MODIFIED="1718807994990" TEXT="hier mögliche Beschränkung des Allokators berücksichtigen">
|
||||
<linktarget COLOR="#313f5b" DESTINATION="ID_1980443647" ENDARROW="Default" ENDINCLINATION="364;849;" ID="Arrow_ID_1834035862" SOURCE="ID_1147918184" STARTARROW="None" STARTINCLINATION="411;-39;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1718807514255" ID="ID_1358531504" MODIFIED="1718807523426" TEXT="Heap-Allokator">
|
||||
|
|
@ -83041,7 +83059,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1718807639230" ID="ID_1297078784" MODIFIED="1718810185655" TEXT="Achtung: zusätzclihen Admin-Overhead in der lib::Several-Storage beachten">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1718807639230" ID="ID_1297078784" MODIFIED="1718815722477" TEXT="Achtung: zusätzclihen Admin-Overhead in der lib::Several-Storage beachten">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1718807680712" ID="ID_1019078083" MODIFIED="1718807687755" TEXT="zum einen die Größe des ArrayBucket"/>
|
||||
<node CREATED="1718807690167" ID="ID_915812333" LINK="#ID_728519799" MODIFIED="1718807743585" TEXT="außerdem: brauche Puffer für over-alligned-types"/>
|
||||
|
|
@ -83104,7 +83122,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1717723649872" ID="ID_1412900866" MODIFIED="1718073552284" TEXT="Deleter einbinden">
|
||||
<node COLOR="#338800" CREATED="1717723649872" FOLDED="true" ID="ID_1412900866" MODIFIED="1718815846866" TEXT="Deleter einbinden">
|
||||
<linktarget COLOR="#2407e1" DESTINATION="ID_1412900866" ENDARROW="Default" ENDINCLINATION="336;-46;" ID="Arrow_ID_453255140" SOURCE="ID_1791379026" STARTARROW="Default" STARTINCLINATION="283;268;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1717894220868" FOLDED="true" HGAP="34" ID="ID_1883351365" MODIFIED="1718073565886" TEXT="muß passieren sobald wir ein ArrayBucket erstellen" VSHIFT="44">
|
||||
|
|
@ -83187,8 +83205,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718328808453" ID="ID_119150059" MODIFIED="1718328816482" TEXT="Spezialisierung für AllocationCluster">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1718328808453" ID="ID_119150059" MODIFIED="1718815852828" TEXT="Spezialisierung für AllocationCluster">
|
||||
<linktarget COLOR="#fffcd5" DESTINATION="ID_119150059" ENDARROW="Default" ENDINCLINATION="-54;-105;" ID="Arrow_ID_265552892" SOURCE="ID_1111696667" STARTARROW="None" STARTINCLINATION="-378;14;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1718328836352" ID="ID_456408300" MODIFIED="1718328872260" TEXT="Trigger: der Standard-Allocator-Adapter von AllocationCluster">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
|
|
@ -83203,9 +83222,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
<arrowlink COLOR="#45627f" DESTINATION="ID_868614135" ENDARROW="Default" ENDINCLINATION="228;-16;" ID="Arrow_ID_287792352" STARTARROW="None" STARTINCLINATION="655;33;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718328650553" ID="ID_1053724868" MODIFIED="1718328832230" TEXT="dynamische Allokations-Änderung einbinden">
|
||||
<node COLOR="#338800" CREATED="1718328650553" ID="ID_1053724868" MODIFIED="1718815715639" TEXT="dynamische Allokations-Änderung einbinden">
|
||||
<arrowlink COLOR="#415ab7" DESTINATION="ID_1869643772" ENDARROW="Default" ENDINCLINATION="-1433;-63;" ID="Arrow_ID_166309661" STARTARROW="None" STARTINCLINATION="1447;92;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -83328,7 +83347,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1717871024427" ID="ID_554783908" MODIFIED="1718073620943" TEXT="Aufteilung der Funktionalität">
|
||||
<node COLOR="#435e98" CREATED="1717871024427" FOLDED="true" ID="ID_554783908" MODIFIED="1718073620943" TEXT="Aufteilung der Funktionalität">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1717871092594" ID="ID_207458820" MODIFIED="1717871140551" TEXT="Basis-Aktionen">
|
||||
<node CREATED="1717871217897" ID="ID_925096747" MODIFIED="1717871229116" TEXT="Festlegen Zielpuffergröße"/>
|
||||
|
|
@ -83393,8 +83412,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1717858161497" ID="ID_114984038" MODIFIED="1717858172964" TEXT="kann danach die bestehenden Elemente verschieben"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1716914864769" ID="ID_966642586" MODIFIED="1716914906125" TEXT="Builder-Operationen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1716914864769" FOLDED="true" ID="ID_966642586" MODIFIED="1718815870047" TEXT="Builder-Operationen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1717634297656" ID="ID_330412196" MODIFIED="1717688579115" TEXT="Move-builder und Container per Slice ausgeben">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
|
|
@ -83413,19 +83432,22 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1716914877848" ID="ID_1535626389" MODIFIED="1718217001870" TEXT="Größenänderung Allokation">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1716914877848" ID="ID_1535626389" MODIFIED="1718815648566" TEXT="Größenänderung Allokation">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1718216970318" ID="ID_653307930" MODIFIED="1718216999025" TEXT="Vergrößerung: reserve<T>(cnt, size)">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1718216875365" ID="ID_808859315" MODIFIED="1718216924186" TEXT="Handling-Checks vorher">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1716936092764" ID="ID_618217173" MODIFIED="1718216922790" TEXT="Objekte einzeln verschieben">
|
||||
<node COLOR="#338800" CREATED="1716936092764" FOLDED="true" ID="ID_618217173" MODIFIED="1718815656394" TEXT="Objekte einzeln verschieben">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1718216902576" ID="ID_1819814974" MODIFIED="1718216911891" TEXT="entweder per bekanntem Element-Typ"/>
|
||||
<node CREATED="1716936101233" ID="ID_1155209653" MODIFIED="1718216920176" TEXT="oder via std::memmove"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718815642778" ID="ID_434654432" MODIFIED="1718815647339" TEXT="Shrink-to-fit">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1716914886169" ID="ID_505410227" MODIFIED="1718297612308" TEXT="Änderung Spread">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
|
|
@ -83472,8 +83494,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1718807449857" ID="ID_1496143411" MODIFIED="1718807467730" TEXT="beachtet die starke Größen-Limitierung für Allokationen im Cluster"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718147554244" ID="ID_1260306723" MODIFIED="1718147566635" TEXT="convenience-Functions">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1718147554244" ID="ID_1260306723" MODIFIED="1718815614907" TEXT="convenience-Functions">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1718147568653" ID="ID_175737075" MODIFIED="1718147586344" TEXT="makeSeveral ( initializer_list )">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
|
|
@ -83503,9 +83525,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1718147675355" ID="ID_1373098366" MODIFIED="1718147685899" TEXT="sinnvolle Syntax für Allokator??">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1718150858441" ID="ID_600268938" MODIFIED="1718150918229" TEXT="makeSeveral<I, E>().withAllocator<A>()"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1718147675355" FOLDED="true" ID="ID_1373098366" MODIFIED="1718815634826" TEXT="sinnvolle Syntax für Allokator entwickeln">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1718150858441" ID="ID_600268938" MODIFIED="1718815623640" TEXT="makeSeveral<I, E>().withAllocator<A>()">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1718151012651" ID="ID_868614135" MODIFIED="1718365124446" TEXT="dazu müßte es eine cross-build-Methode geben">
|
||||
<linktarget COLOR="#45627f" DESTINATION="ID_868614135" ENDARROW="Default" ENDINCLINATION="228;-16;" ID="Arrow_ID_287792352" SOURCE="ID_1562264915" STARTARROW="None" STARTINCLINATION="655;33;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
|
|
@ -83521,7 +83545,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718365424109" ID="ID_1414527850" MODIFIED="1718730128866" TEXT="benötigt: Schema zum Einrichten des Allokators">
|
||||
<node COLOR="#338800" CREATED="1718365424109" FOLDED="true" ID="ID_1414527850" MODIFIED="1718730128866" TEXT="benötigt: Schema zum Einrichten des Allokators">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1718365443600" ID="ID_826094679" MODIFIED="1718365447214" TEXT="Nutzmuster">
|
||||
<node CREATED="1718365455761" ID="ID_1839293953" MODIFIED="1718365460053" TEXT="Typ gegeben">
|
||||
|
|
@ -83570,7 +83594,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1718367386303" ID="ID_30749831" MODIFIED="1718367408489" TEXT="idealerweise ohne diese direkt im Header several-builder.hpp referenzieren zu müssen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1718373522423" ID="ID_93222228" MODIFIED="1718412475211" TEXT="Definition">
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1718373522423" ID="ID_93222228" MODIFIED="1718815604737" TEXT="Definition">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1718373526974" ID="ID_1686371317" MODIFIED="1718373556165" TEXT="allo::SetupSeveral<ALO,ARGS...>">
|
||||
<node CREATED="1718373561831" ID="ID_1037391385" MODIFIED="1718408850509">
|
||||
|
|
@ -83672,7 +83698,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718412437319" ID="ID_947832201" MODIFIED="1718810209984" TEXT="dann Spezialisierung für AllocationCluster">
|
||||
<node COLOR="#338800" CREATED="1718412437319" FOLDED="true" ID="ID_947832201" MODIFIED="1718815546245" TEXT="dann Spezialisierung für AllocationCluster">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1718412486764" ID="ID_1577108455" MODIFIED="1718412502863" TEXT="Vorbereitung: Forward-Deklarationen">
|
||||
<node CREATED="1718412503850" ID="ID_1754798061" MODIFIED="1718412512686" TEXT="in lib/allocation-cluster.hpp"/>
|
||||
|
|
@ -83742,8 +83768,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
...ich hab diese Mechanik ganz bewußt <i>janz domm </i>implementiert — also muß praktisch alle Info von oben kommen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718759774120" ID="ID_280082650" MODIFIED="1718759784624" TEXT="Bucket* mit übergeben">
|
||||
|
|
@ -83777,9 +83802,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718368775878" ID="ID_1921994351" LINK="#ID_28139752" MODIFIED="1718581587832" TEXT="testen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1718368775878" FOLDED="true" ID="ID_1921994351" LINK="#ID_28139752" MODIFIED="1718815628790" TEXT="testen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1718462814861" FOLDED="true" ID="ID_360498640" MODIFIED="1718581744590" TEXT="brauche einen »tracking« Test-Allocator">
|
||||
<linktarget COLOR="#24309b" DESTINATION="ID_360498640" ENDARROW="Default" ENDINCLINATION="-963;-85;" ID="Arrow_ID_1221752034" SOURCE="ID_1722995316" STARTARROW="None" STARTINCLINATION="-909;93;"/>
|
||||
<linktarget COLOR="#49596d" DESTINATION="ID_360498640" ENDARROW="Default" ENDINCLINATION="177;-168;" ID="Arrow_ID_1985044400" SOURCE="ID_1938493773" STARTARROW="None" STARTINCLINATION="-601;28;"/>
|
||||
|
|
@ -84210,9 +84234,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1718730232613" ID="ID_194573786" MODIFIED="1718759984199" TEXT="AllocationCluster ankoppeln">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718730253250" ID="ID_361490227" MODIFIED="1718730391736" TEXT="müßte sogar mit der gleichen schon bestehenden front-End-Instanz funktionieren">
|
||||
<node COLOR="#338800" CREATED="1718730232613" ID="ID_194573786" MODIFIED="1718815531739" TEXT="AllocationCluster ankoppeln">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1718730253250" ID="ID_361490227" MODIFIED="1718813076794" TEXT="müßte sogar mit der gleichen schon bestehenden front-End-Instanz funktionieren">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718730287657" ID="ID_1835018318" MODIFIED="1718759949578" TEXT="den gleichen Test-Zyklus mit mehreren re-Allocs machen">
|
||||
|
|
@ -84226,20 +84250,19 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
...da AllocationCluster eine starke Größenbeschränkgung hat
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718730299524" ID="ID_1847366954" MODIFIED="1718810706376" TEXT="verifizieren, daß die dynamische Anpassung stattgefunden hat">
|
||||
<node COLOR="#338800" CREATED="1718730299524" FOLDED="true" ID="ID_1847366954" MODIFIED="1718810706376" TEXT="verifizieren, daß die dynamische Anpassung stattgefunden hat">
|
||||
<linktarget COLOR="#54b885" DESTINATION="ID_1847366954" ENDARROW="Default" ENDINCLINATION="534;710;" ID="Arrow_ID_510035319" SOURCE="ID_1222886197" STARTARROW="None" STARTINCLINATION="1024;-48;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1718761161744" ID="ID_532446008" MODIFIED="1718810219869" TEXT="auch demonstrieren, daß das nach einer Zwischen-Allokaiton nicht mehr geht">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1718761232124" ID="ID_482647269" MODIFIED="1718761241262" TEXT="Speicherbeschränkung spricht an">
|
||||
<node COLOR="#435e98" CREATED="1718761232124" FOLDED="true" ID="ID_482647269" MODIFIED="1718813061195" TEXT="Speicherbeschränkung spricht an">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1718761242724" ID="ID_103960271" MODIFIED="1718761290782" TEXT="sollte sie hier nicht">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1718761242724" ID="ID_103960271" MODIFIED="1718813045181" TEXT="sollte sie hier nicht">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
|
|
@ -84247,11 +84270,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
denn das eine zusätzliche Element würde locker reinpassen — und zudem sollte ja nun der Block in den nächsten Extent migrieren
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1718797226426" ID="ID_1835898397" MODIFIED="1718797232563" TEXT="Beobachtungen">
|
||||
<node CREATED="1718797226426" ID="ID_1835898397" MODIFIED="1718813055277" TEXT="Beobachtungen">
|
||||
<icon BUILTIN="list"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#990033" CREATED="1718797237918" ID="ID_652382356" MODIFIED="1718800423280" TEXT="verwemdet ensureStorageCapacity den Aufruf Coll::hasReserve korrekt?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1718797275521" ID="ID_1971364291" MODIFIED="1718797292795" TEXT="geht es hier um ein Delta oder die absolute Forderung"/>
|
||||
|
|
@ -84308,8 +84331,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
...daß da immer noch high-level-Code darüber liegt, der eine inhaltliche Prüfung gemacht hat, so daß hier nur noch ein Konsistenzcheck vonnöten ist
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1718798266263" ID="ID_1888657389" MODIFIED="1718798419479" TEXT="realistisch betrachtet — zu gut">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -84319,8 +84341,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
...aber realistisch betrachtet ist der AllocationCluster viel zu einfach zu verwenden, als daß man da überhaupt daran denkt, noch explizit zu prüfen — und durch den standard-Allocator-Adapter gibt es unvermeidbar einen direkten Eingang über allot().
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1718798156446" ID="ID_726993777" MODIFIED="1718798198816" TEXT="⟹ im RELEASE-Mode würde wir munter in eine Endlosschleife oder Memory-Corruption laufen">
|
||||
|
|
@ -84339,7 +84360,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1718807769148" ID="ID_114386960" MODIFIED="1718810234819" TEXT="Konsequenz: exponentielle Expansion sinnvoll beschränken">
|
||||
<node COLOR="#338800" CREATED="1718807769148" FOLDED="true" ID="ID_114386960" MODIFIED="1718813068100" TEXT="Konsequenz: exponentielle Expansion sinnvoll beschränken">
|
||||
<linktarget COLOR="#981848" DESTINATION="ID_114386960" ENDARROW="Default" ENDINCLINATION="17;-94;" ID="Arrow_ID_1052035181" SOURCE="ID_1609091342" STARTARROW="None" STARTINCLINATION="-451;18;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1718807852641" ID="ID_1147918184" MODIFIED="1718807980725" TEXT="den Allokator abfragen, was er kann">
|
||||
|
|
@ -84358,8 +84379,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1718730317115" ID="ID_1509954190" MODIFIED="1718810242562" TEXT="es sollte sich genau die erwartete Speicherbelegung ergeben">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718730353373" ID="ID_819034170" MODIFIED="1718730388372" TEXT="Objekt-Cleanup findet statt — aber keine de-Allokation">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1718730353373" ID="ID_819034170" MODIFIED="1718815529742" TEXT="Objekt-Cleanup findet statt — aber keine de-Allokation">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -84368,8 +84389,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1717794532666" ID="ID_1285152534" MODIFIED="1717810981399" TEXT="Implementierungs-Logik aufbauen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1717794532666" FOLDED="true" ID="ID_1285152534" MODIFIED="1718815702542" TEXT="Implementierungs-Logik aufbauen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1717794550220" HGAP="4" ID="ID_1034302214" MODIFIED="1718581604449" STYLE="bubble" TEXT="das ist hier eine besondere Herausforderung...." VSHIFT="15">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -84382,7 +84403,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<edge COLOR="#a24d4d"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717794645742" ID="ID_1610453521" MODIFIED="1717796458652" TEXT="Methode: den Lebenszyklus konzeptionell durchgehen">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#004099" CREATED="1717794645742" ID="ID_1610453521" MODIFIED="1718815683443" TEXT="Methode: den Lebenszyklus konzeptionell durchgehen">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1717794669044" ID="ID_1613672201" MODIFIED="1717794729917" TEXT="jeweils mit einer Fall-Matrix gemäß der Analyse für die Strategy">
|
||||
<arrowlink COLOR="#705cb0" DESTINATION="ID_664027664" ENDARROW="Default" ENDINCLINATION="-687;54;" ID="Arrow_ID_440255158" STARTARROW="None" STARTINCLINATION="395;-572;"/>
|
||||
|
|
@ -84509,8 +84530,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1715625082614" ID="ID_1575150785" MODIFIED="1718219667879" TEXT="SeveralBuilder_test">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1715625082614" FOLDED="true" ID="ID_1575150785" MODIFIED="1718815990818" TEXT="SeveralBuilder_test">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1716857382440" ID="ID_46730448" MODIFIED="1718073046966" TEXT="simpleUsage">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1717980996623" ID="ID_644007892" MODIFIED="1718037983007" TEXT="Several mit sieben Fibonacci-Zahlen">
|
||||
|
|
@ -84758,7 +84779,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1716857382441" ID="ID_1397767362" MODIFIED="1718298219855" TEXT="check_ElementStorage">
|
||||
<node COLOR="#338800" CREATED="1716857382441" ID="ID_1397767362" MODIFIED="1718815987574" TEXT="check_ElementStorage">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1718290606176" ID="ID_1457988951" MODIFIED="1718290634409" TEXT="grundsätzlich: Platzierung mit gleichmäßigem Spread">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -84811,8 +84832,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1716857382442" ID="ID_28139752" MODIFIED="1718730880415" TEXT="check_CustomAllocator">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1716857382442" ID="ID_28139752" MODIFIED="1718815985754" TEXT="check_CustomAllocator">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1718674224723" ID="ID_1342074261" MODIFIED="1718730876075" TEXT="Verwendung eines generischen Custom-Allocators testen">
|
||||
<arrowlink COLOR="#2a81b2" DESTINATION="ID_1938493773" ENDARROW="Default" ENDINCLINATION="-141;780;" ID="Arrow_ID_814216426" STARTARROW="None" STARTINCLINATION="664;-34;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue