From bbec35ce65d1d98dabaa047f9fa7fd002f92f311 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 7 Jun 2024 23:02:51 +0200 Subject: [PATCH] Library: switch rest of implementation ...and remove now obsolete metadata fields in the collection and builder classes --- src/lib/several-builder.hpp | 13 +++++------ src/lib/several.hpp | 9 +++++++- wiki/thinkPad.ichthyo.mm | 44 ++++++++++++++++++------------------- 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/src/lib/several-builder.hpp b/src/lib/several-builder.hpp index 0ecf1181a..d97d1de28 100644 --- a/src/lib/several-builder.hpp +++ b/src/lib/several-builder.hpp @@ -267,8 +267,6 @@ namespace lib { { using Coll = Several; - 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; 0spread; - return util::max (currSpread, elmSiz); + return util::max (Coll::spread(), elmSiz); } }; diff --git a/src/lib/several.hpp b/src/lib/several.hpp index f561fe0fc..380e2fd21 100644 --- a/src/lib/several.hpp +++ b/src/lib/several.hpp @@ -134,7 +134,6 @@ namespace lib { protected: using Bucket = ArrayBucket*; - 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() diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 32771b9c1..1c0a84cd0 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -81809,9 +81809,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - + + + @@ -81826,22 +81826,22 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - - + + + + - - + + - - - - + + + + - - + + @@ -82497,7 +82497,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + @@ -82521,8 +82521,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - + + @@ -82568,10 +82568,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - - + + + +