Commit 063d8ede authored by Mark Olesen's avatar Mark Olesen
Browse files

PackedBoolList specializaton for operator=

- now that I re-examined the code, the note in commit 51fd6327
  can be mostly ignored

  PackedList isMaster(nPoints, 1u);
  is not really inefficient at all, since the '1u' is packed into
  32/64-bits before the subsequent assignment and doesn't involve
  shifts/masking for each index

  The same misinformation applies to the PackedList(size, 0u) form.
  It isn't much slower at all.

  Nonetheless, add bool specialization so that it is a simple assign.
parent 58740164
......@@ -82,9 +82,13 @@ int main(int argc, char *argv[])
argList::noParallel();
argList::validArgs.insert("file .. fileN");
argList::addBoolOption("mask");
argList::addBoolOption("count");
argList::addBoolOption("info");
argList::addBoolOption("mask", "report information about the bit masks");
argList::addBoolOption("count", "test the count() method");
argList::addBoolOption
(
"info",
"print an ascii representation of the storage"
);
argList args(argc, argv, false, true);
......
......@@ -839,7 +839,24 @@ Foam::PackedList<nBits>::operator[](const label i)
}
// specialization for nBits=1 isn't worth the bother
namespace Foam
{
// specialization for nBits=1
template<>
inline void Foam::PackedList<1>::operator=(const unsigned int val)
{
if (val)
{
StorageList::operator=(~0u);
}
else
{
StorageList::operator=(0u);
}
}
}
template<unsigned nBits>
inline void Foam::PackedList<nBits>::operator=(const unsigned int val)
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment