diff --git a/applications/test/PackedList/Test-PackedList.C b/applications/test/PackedList/Test-PackedList.C index f2ae2e923a..35ad7f2dd8 100644 --- a/applications/test/PackedList/Test-PackedList.C +++ b/applications/test/PackedList/Test-PackedList.C @@ -38,30 +38,30 @@ Description using namespace Foam; -template +template inline void reportInfo() { - const unsigned offset = PackedList::elem_per_block; + const unsigned offset = PackedList::elem_per_block; - unsigned useSHL = ((1u << (nBits * offset)) - 1); - unsigned useSHR = (~0u >> (sizeof(unsigned)*CHAR_BIT - nBits * offset)); + unsigned useSHL = ((1u << (Width * offset)) - 1); + unsigned useSHR = (~0u >> (sizeof(unsigned)*CHAR_BIT - Width * offset)); Info<< nl - << "PackedList<" << nBits << ">" << nl - << " max_value: " << PackedList::max_value << nl - << " packing: " << PackedList::elem_per_block << nl - << " utilization: " << (nBits * offset) << nl; + << "PackedList<" << Width << ">" << nl + << " max_value: " << PackedList::max_value << nl + << " packing: " << PackedList::elem_per_block << nl + << " utilization: " << (Width * offset) << nl; Info<< " Masking:" << nl << " shift << " - << unsigned(nBits * offset) << nl + << unsigned(Width * offset) << nl << " shift >> " - << unsigned((sizeof(unsigned)*CHAR_BIT) - nBits * offset) + << unsigned((sizeof(unsigned)*CHAR_BIT) - Width * offset) << nl; hex(Info); Info<< " maskLower: " - << PackedList::mask_lower(PackedList::elem_per_block) + << PackedList::mask_lower(PackedList::elem_per_block) << nl << " useSHL: " << useSHL << nl << " useSHR: " << useSHR << nl; diff --git a/applications/test/PackedList1/Test-PackedList1.C b/applications/test/PackedList1/Test-PackedList1.C index b9e023baff..81a212ddaa 100644 --- a/applications/test/PackedList1/Test-PackedList1.C +++ b/applications/test/PackedList1/Test-PackedList1.C @@ -118,6 +118,18 @@ int main(int argc, char *argv[]) list1.set(14, 2); report(list1); + Info<< "values() : " << flatOutput(list1.unpack()) << nl + << "values(5,8) : " << flatOutput(list1.unpack(labelRange(5,8))) + << nl; + + { + labelList locations({-5, -2, 2, 1, 8}); + + Info<< "values at " << flatOutput(locations) << " = " + << flatOutput(list1.unpack(locations)) + << nl; + } + Info<< "\ntest operator== between references\n"; if (list1[1] == list1[8]) { diff --git a/src/OpenFOAM/containers/Bits/PackedList/PackedList.C b/src/OpenFOAM/containers/Bits/PackedList/PackedList.C index 9f636b2c41..79a7911ed7 100644 --- a/src/OpenFOAM/containers/Bits/PackedList/PackedList.C +++ b/src/OpenFOAM/containers/Bits/PackedList/PackedList.C @@ -83,14 +83,34 @@ bool Foam::PackedList::uniform() const template Foam::labelList Foam::PackedList::values() const { + return this->unpack