Library: switch rest of implementation

...and remove now obsolete metadata fields in the collection and builder classes
This commit is contained in:
Fischlurch 2024-06-07 23:02:51 +02:00
parent deaabcda6e
commit bbec35ce65
3 changed files with 35 additions and 31 deletions

View file

@ -267,8 +267,6 @@ namespace lib {
{
using Coll = Several<I>;
size_t storageSiz_{0};
public:
SeveralBuilder() = default;
@ -308,7 +306,7 @@ namespace lib {
size_t demand{cnt*spread};
Coll::data_ = POL::realloc (Coll::data_, demand);
ENSURE (Coll::data_);
if (spread != Coll::data_->spread) ///////////////OOO API für spread?
if (spread != Coll::spread())
adjustSpread (spread);
}
@ -316,7 +314,7 @@ namespace lib {
fitStorage()
{
if (not Coll::data_) return;
size_t demand{Coll::size_ * Coll::data_->spread};
size_t demand{Coll::size() * Coll::spread()};
Coll::data_ = POL::realloc (Coll::data_, demand);
}
@ -325,8 +323,8 @@ namespace lib {
adjustSpread (size_t newSpread)
{
REQUIRE (Coll::data_);
REQUIRE (newSpread * Coll::size_ <= storageSiz_);
size_t oldSpread = Coll::data_->spread;
REQUIRE (newSpread * Coll::size() <= Coll::data_->buffSiz);
size_t oldSpread = Coll::spread();
if (newSpread > oldSpread)
// need to spread out
for (size_t i=Coll::size()-1; 0<i; --i)
@ -366,8 +364,7 @@ namespace lib {
size_t
requiredSpread (size_t elmSiz)
{
size_t currSpread = Coll::empty()? 0 : Coll::data_->spread;
return util::max (currSpread, elmSiz);
return util::max (Coll::spread(), elmSiz);
}
};

View file

@ -134,7 +134,6 @@ namespace lib {
protected:
using Bucket = ArrayBucket<I>*;
size_t size_{0};
Bucket data_{nullptr};
Several() =default; ///< may only be created through SeveralBuilder
@ -181,6 +180,14 @@ namespace lib {
friend auto begin (Several const& svl) { return svl.begin();}
friend auto end (Several const& svl) { return svl.end(); }
protected:
size_t
spread() const
{
return data_? data_->spread : sizeof(I);
}
private:
void
discardData()

View file

@ -81809,9 +81809,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1717796539825" ID="ID_719213336" MODIFIED="1717803235299" TEXT="Umbau Storage: alle Metadaten in das ArrayBucket verlagern">
<linktarget COLOR="#af28b1" DESTINATION="ID_719213336" ENDARROW="Default" ENDINCLINATION="-878;40;" ID="Arrow_ID_1140258959" SOURCE="ID_505052942" STARTARROW="None" STARTINCLINATION="-488;-57;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1717796539825" ID="ID_719213336" MODIFIED="1717804833682" TEXT="Umbau Storage: alle Metadaten in das ArrayBucket verlagern">
<linktarget COLOR="#286bb1" DESTINATION="ID_719213336" ENDARROW="Default" ENDINCLINATION="-878;40;" ID="Arrow_ID_1140258959" SOURCE="ID_505052942" STARTARROW="None" STARTINCLINATION="-488;-57;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1717796640496" ID="ID_962872298" MODIFIED="1717796742452" TEXT="Begr&#xfc;ndung: Raum f&#xfc;r zuk&#xfc;nftige Optimierungen schaffen">
<richcontent TYPE="NOTE"><html>
<head>
@ -81826,22 +81826,22 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717796744022" ID="ID_37258983" MODIFIED="1717796967258" TEXT="cnt-Parameter in das ArrayBucket">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717796758675" ID="ID_307915281" MODIFIED="1717797027645" TEXT="neue size()-Methode">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1717796744022" ID="ID_37258983" MODIFIED="1717804825999" TEXT="cnt-Parameter in das ArrayBucket">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1717796758675" ID="ID_307915281" MODIFIED="1717804828423" TEXT="neue size()-Methode">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717796764642" ID="ID_1761107240" MODIFIED="1717797027646" TEXT="diese konsequent einsetzen im Builder">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1717796764642" ID="ID_1761107240" MODIFIED="1717804829789" TEXT="diese konsequent einsetzen im Builder">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717796968326" ID="ID_992819253" MODIFIED="1717797326906" TEXT="buffSiz-Parameter (raw storage size)">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717796995074" ID="ID_535611702" MODIFIED="1717797027646" TEXT="alle Zugriffe aus dem Builder verlagern">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1717796968326" ID="ID_992819253" MODIFIED="1717804827202" TEXT="buffSiz-Parameter (raw storage size)">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1717796995074" ID="ID_535611702" MODIFIED="1717804831049" TEXT="alle Zugriffe aus dem Builder verlagern">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717797008138" ID="ID_988757676" MODIFIED="1717797027647" TEXT="Allokation / Deallokation umschreiben">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1717797008138" ID="ID_988757676" MODIFIED="1717804832339" TEXT="Allokation / Deallokation umschreiben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
@ -82497,7 +82497,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1717771668227" ID="ID_218024173" MODIFIED="1717771674057" TEXT="was f&#xfc;r Auswege gibt es?">
<node COLOR="#435e98" CREATED="1717771668227" ID="ID_218024173" MODIFIED="1717804875317" TEXT="was f&#xfc;r Auswege gibt es?">
<icon BUILTIN="help"/>
<node CREATED="1717771677991" ID="ID_1848656527" MODIFIED="1717771708671" TEXT="das zus&#xe4;tzliche Datenfeld einfach akzeptieren">
<node CREATED="1717771763428" ID="ID_823499935" MODIFIED="1717771767903" TEXT="leicht zu implementieren"/>
@ -82521,8 +82521,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1717772041335" ID="ID_871652702" MODIFIED="1717772085852" TEXT="wenn nicht, dann verschwenden wir im AllocationCluster den ganzen bisherigen Platz"/>
<node CREATED="1717772086536" ID="ID_1322940252" MODIFIED="1717772099619" TEXT="und f&#xfc;r Heap-Allokation m&#xfc;ssen wir zumindest noch einmal alles umkopieren"/>
</node>
<node CREATED="1717773260668" ID="ID_1403509932" MODIFIED="1717796516735" TEXT="das ArrayBucket dynamisch flexibel machen">
<arrowlink COLOR="#5a38d9" DESTINATION="ID_505052942" ENDARROW="Default" ENDINCLINATION="83;-42;" ID="Arrow_ID_1081178000" STARTARROW="None" STARTINCLINATION="-249;16;"/>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1717773260668" ID="ID_1403509932" MODIFIED="1717804878671" TEXT="das ArrayBucket dynamisch flexibel machen">
<arrowlink COLOR="#575baf" DESTINATION="ID_505052942" ENDARROW="Default" ENDINCLINATION="83;-42;" ID="Arrow_ID_1081178000" STARTARROW="None" STARTINCLINATION="-249;16;"/>
<icon BUILTIN="forward"/>
<node CREATED="1717773280353" ID="ID_1332303474" MODIFIED="1717773295509" TEXT="alle weiteren Metadaten liegen im ArrayBucket"/>
<node CREATED="1717773296351" ID="ID_129834213" MODIFIED="1717773606110" TEXT="dabei wird ein spezielles optimiertes Placement verwendet">
@ -82568,10 +82568,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1717796486424" ID="ID_505052942" MODIFIED="1717803235298" TEXT="Konsequenz: Storage umbauen">
<arrowlink COLOR="#af28b1" DESTINATION="ID_719213336" ENDARROW="Default" ENDINCLINATION="-878;40;" ID="Arrow_ID_1140258959" STARTARROW="None" STARTINCLINATION="-488;-57;"/>
<linktarget COLOR="#5a38d9" DESTINATION="ID_505052942" ENDARROW="Default" ENDINCLINATION="83;-42;" ID="Arrow_ID_1081178000" SOURCE="ID_1403509932" STARTARROW="None" STARTINCLINATION="-249;16;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1717796486424" ID="ID_505052942" MODIFIED="1717804847524" TEXT="Konsequenz: Storage umbauen">
<arrowlink COLOR="#286bb1" DESTINATION="ID_719213336" ENDARROW="Default" ENDINCLINATION="-878;40;" ID="Arrow_ID_1140258959" STARTARROW="None" STARTINCLINATION="-488;-57;"/>
<linktarget COLOR="#575baf" DESTINATION="ID_505052942" ENDARROW="Default" ENDINCLINATION="83;-42;" ID="Arrow_ID_1081178000" SOURCE="ID_1403509932" STARTARROW="None" STARTINCLINATION="-249;16;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>