Foam::BitOps Namespace Reference

Various bit-wise operations and adaptor methods for containers that are somewhat similar to bitSet (eg, boolList, labelHashSet). More...

Classes

struct  bitInfo
 An (unsigned) integral type adapter, for output of bit values. More...
 

Functions

unsigned int count (const UList< bool > &bools, const bool val=true)
 Count number of 'true' entries. More...
 
bool all (const UList< bool > &bools)
 True if all entries are 'true' or if the set is empty. More...
 
bool any (const UList< bool > &bools)
 True if any entries are 'true'. More...
 
bool none (const UList< bool > &bools)
 True if no entries are 'true'. More...
 
void set (List< bool > &bools, const labelUList &locations)
 Set the listed locations (assign 'true'). More...
 
void set (List< bool > &bools, const labelRange &range)
 Set the specified range 'on' in a boolList. More...
 
void set (labelHashSet &hashset, const labelRange &range)
 Set the specified range in a labelHashSet. More...
 
void set (bitSet &bitset, const labelRange &range)
 Forward to bitSet::set(labelRange) More...
 
void unset (List< bool > &bools, const labelUList &locations)
 Unset the listed locations (assign 'false'). More...
 
void unset (List< bool > &bools, const labelRange &range)
 Unset the specified range 'on' in a boolList. More...
 
void unset (labelHashSet &hashset, const labelRange &range)
 Unset the specified range in a labelHashSet. More...
 
void unset (bitSet &bitset, const labelRange &range)
 Forward to bitSet::unset(labelRange) More...
 
List< bool > select (const label n, const labelUList &locations)
 Construct a selection list of bools (all false) with the given pre-size, subsequently add specified locations as true, auto-vivify entries if needed. More...
 
List< bool > select (const labelUList &locations)
 Construct an auto-sized selection list of bools (all false), and populate the specified locations as true. More...
 
List< label > toc (const UList< bool > &bools)
 Return the (sorted) values corresponding to 'true' entries. More...
 
List< label > sortedToc (const UList< bool > &bools)
 Return the (sorted) values corresponding to 'true' entries. More...
 
List< label > toc (const bitSet &bitset)
 Forward to bitSet::toc(), the sorted values of the 'on' entries. More...
 
List< label > sortedToc (const bitSet &bitset)
 Forward to bitSet::sortedToc(), the sorted values of the 'on' entries. More...
 
List< label > toc (const labelHashSet &hashset)
 Forward to labelHashSet::sortedToc(), the sorted values of the 'on' entries. More...
 
List< label > sortedToc (const labelHashSet &hashset)
 Forward to labelHashSet::sortedToc(), the sorted values of the 'on' entries. More...
 
template<class UIntType >
unsigned int bit_count (UIntType x)
 Count arbitrary number of bits (of an integral type) More...
 
template<>
unsigned int bit_count (uint32_t x)
 Count bits in a 32-bit value (Hamming weight method) More...
 
template<>
unsigned int bit_count (uint64_t x)
 Count bits in a 64-bit value (Hamming weight method) More...
 
template<class UIntType , unsigned BitWidth>
UIntType repeat_value (unsigned val)
 Repeat a value of the given BitWidth into the destination output type. More...
 
template<class UIntType >
Ostreamprint (Ostream &os, UIntType value, char off='0', char on='1')
 Print 0/1 bits in the (unsigned) integral type. More...
 

Detailed Description

Various bit-wise operations and adaptor methods for containers that are somewhat similar to bitSet (eg, boolList, labelHashSet).

The population count uses the Hamming weight (http://en.wikipedia.org/wiki/Hamming_weight).

Function Documentation

◆ count()

unsigned int Foam::BitOps::count ( const UList< bool > &  bools,
const bool  val = true 
)
inline

Count number of 'true' entries.

Parameters
valcan be set to false to count the number of false values instead For compatibility with bitSet::count()

Definition at line 73 of file BitOps.H.

References UList< T >::begin(), Foam::HashSetOps::bools(), and UList< T >::end().

Referenced by geometric::add(), object::addData(), triSurfaceMesh::addFaceToEdge(), CStringList::asList(), UOPstreamBase::beginRawWrite(), isoSurfaceBase::blockCells(), faPatch::boundaryConnections(), faPatch::boundaryProcSizes(), faMesh::boundaryProcSizes(), globalIndex::calcListOffsets(), globalIndex::calcOffset(), globalIndex::calcOffsets(), globalIndex::calcRange(), globalIndex::calcRanges(), CloudFunctionObjectList< KinematicCloud< Cloud< basicKinematicCollidingParcel > > >::CloudFunctionObjectList(), collector::collector(), hexRef8::consistentSlowRefinement(), Foam::stringOps::count(), cellCellStencil::count(), objectRegistry::count(), IOobjectList::count(), isoSurfaceBase::countCutType(), HashTable< const regIOobject * >::countEntries(), IOobjectList::countImpl(), objectRegistry::countImpl(), HashTable< const regIOobject * >::countKeys(), IOobjectList::countTypeImpl(), objectRegistry::countTypeImpl(), HashTable< const regIOobject * >::countValues(), HashTable< const regIOobject * >::csorted(), decompositionMethod::decompose(), snappyVoxelMeshDriver::doRefine(), Foam::duplicateOrder(), Pstream::exchange(), Foam::PstreamDetail::exchangeChunkedBuf(), Foam::PstreamDetail::exchangeConsensus(), Pstream::exchangeSizes(), limitFields::execute(), sigFpe::fillNan(), manifoldCellsMeshObject::filter(), NURBS3DVolume::findPointsInBox(), span< Type >::first(), ISstream::getLine(), Histogram< List >::Histogram(), InjectionModelList< Foam::KinematicCloud< Cloud< basicKinematicCollidingParcel > > >::InjectionModelList(), Foam::inplaceSubset(), Foam::inplaceSubsetList(), Foam::inplaceSubsetMatchingStrings(), span< Type >::last(), mapDistribute::mapDistribute(), wordRes::matching(), scalars::matching(), globalIndex::maxNonLocalSize(), regionProperties::names(), IOobjectList::namesImpl(), objectRegistry::namesImpl(), IOobjectList::namesTypeImpl(), objectRegistry::namesTypeImpl(), UOprocess::newField(), polySurface::nFaceData(), faBoundaryMesh::nNonProcessor(), polyBoundaryMesh::nNonProcessor(), faBoundaryMesh::nProcessorPatches(), polyBoundaryMesh::nProcessorPatches(), blockMesh::numZonedBlocks(), IOobjectList::objectsTypeImpl(), objectRegistry::objectsTypeImpl(), CompactListList< T >::pack_impl(), Foam::parseStream(), ParticleForceList< KinematicCloud< Cloud< basicKinematicCollidingParcel > > >::ParticleForceList(), points_delaunay_naive_2d(), ParticleTracks< CloudType >::postFace(), Foam::printHostsSubscription(), HashTable< const regIOobject * >::printInfo(), FIRECore::putFireLabels(), ensightReadFile::read(), FixedValueConstraint< Type >::read(), UIPstreamBase::read(), ISstream::read(), lumpedPointState::readPlain(), UIPstreamBase::readRaw(), ISstream::readRaw(), FIREMeshReader::readSelections(), MRFZoneList::reset(), porosityModelList::reset(), optionList::reset(), globalIndex::reset(), globalIndex::scatter(), clockValue::seconds(), lumpedPointDisplacementPointPatchVectorField::setInterpolators(), lumpedPointDisplacementPointPatchVectorField::setPatchControls(), Foam::ListOps::setValue(), pointFieldDecomposer::fieldsCache::privateCache::size(), faFieldDecomposer::fieldsCache::privateCache::size(), fvFieldDecomposer::fieldsCache::privateCache::size(), Foam::vtk::sizeofData(), ensightFaces::sizes(), ensightCells::sizes(), snappyVoxelMeshDriver::snappyVoxelMeshDriver(), HashTable< const regIOobject * >::sorted(), regionProperties::sortedNames(), clockValue::str(), IndirectList< T >::subset(), IndirectList< T >::subset_if(), Foam::subsetMatchingStrings(), Foam::sumReduce(), surfaceFeatures::surfaceFeatures(), toc(), bitSet::toc(), HashTable< const regIOobject * >::toc(), HashTable< const regIOobject * >::tocEntries(), HashTable< const regIOobject * >::tocKeys(), HashTable< const regIOobject * >::tocValues(), ensightFaces::totalSize(), ensightCells::totalSize(), wordRes::uniq(), hashedWordList::uniq(), IndirectList< T >::uniq(), Foam::uniqueOrder(), cellVolumeWeight::update(), inverseDistance::update(), cellCellStencil::walkFront(), prefixOSstream::write(), PtrListDetail< const Foam::UList >::write(), OSstream::write(), ensightFile::write(), UOPstreamBase::write(), Foam::writeAllAreaFields(), Foam::writeAllDimFields(), Foam::writeAllPointFields(), Foam::writeAllVolFields(), Foam::writeAreaFields(), Foam::ensightOutput::writeCloudField(), Foam::writeCoordHeader(), Foam::writeDimFields(), advancingFrontAMI::writeIntersectionOBJ(), Foam::meshTools::writeOBJ(), Foam::writePointFields(), OSstream::writeQuoted(), OSstream::writeRaw(), UOPstreamBase::writeRaw(), cellClassification::writeStats(), Foam::vtk::writeValueParallel(), Foam::writeVolFields(), vtkWrite::writeVolFieldsImpl(), ensightWrite::writeVolFieldsImpl(), memorybuf::in_base::xsgetn(), memorybuf::out_base::xsputn(), and memorybuf::out_dynamic::xsputn().

Here is the call graph for this function:

◆ all()

bool Foam::BitOps::all ( const UList< bool > &  bools)
inline

True if all entries are 'true' or if the set is empty.

For compatibility with bitSet::all()

Definition at line 83 of file BitOps.H.

References UList< T >::begin(), Foam::HashSetOps::bools(), and UList< T >::end().

Referenced by decompositionMethod::decompose().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ any()

bool Foam::BitOps::any ( const UList< bool > &  bools)
inline

True if any entries are 'true'.

For compatibility with bitSet::any()

Definition at line 93 of file BitOps.H.

References UList< T >::begin(), Foam::HashSetOps::bools(), and UList< T >::end().

Referenced by boolVector::none(), and bitSet::toc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ none()

bool Foam::BitOps::none ( const UList< bool > &  bools)
inline

True if no entries are 'true'.

For compatibility with bitSet::none()

Definition at line 103 of file BitOps.H.

References UList< T >::begin(), Foam::HashSetOps::bools(), and UList< T >::end().

Here is the call graph for this function:

◆ set() [1/4]

void set ( List< bool > &  bools,
const labelUList locations 
)

Set the listed locations (assign 'true').

Does auto-vivify for non-existent entries.

For compatibility with bitSet::set(labelUList)

Definition at line 30 of file BitOps.C.

References UList< T >::begin(), Foam::HashSetOps::bools(), UList< T >::end(), Foam::max(), List< T >::resize(), and UList< T >::size().

Referenced by HashPtrTable< exprResult >::emplace(), PtrList< transferModel >::release(), select(), PtrList< transferModel >::set(), PtrDynList< Foam::profilingInformation >::set(), and HashPtrTable< exprResult >::set().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set() [2/4]

void set ( List< bool > &  bools,
const labelRange range 
)

Set the specified range 'on' in a boolList.

For compatibility with bitSet::set(labelRange)

Definition at line 52 of file BitOps.C.

References labelRange::adjust(), Foam::HashSetOps::bools(), IntRange< IntType >::empty(), IntRange< IntType >::end_value(), range, List< T >::resize(), List< T >::set(), and UList< T >::size().

Here is the call graph for this function:

◆ set() [3/4]

void set ( labelHashSet hashset,
const labelRange range 
)

Set the specified range in a labelHashSet.

For compatibility with bitSet::set(labelRange)

Definition at line 81 of file BitOps.C.

References labelRange::adjust(), range, and HashSet< Key, Hash >::set().

Here is the call graph for this function:

◆ set() [4/4]

void set ( bitSet bitset,
const labelRange range 
)

Forward to bitSet::set(labelRange)

Definition at line 93 of file BitOps.C.

References Foam::HashSetOps::bitset(), range, and bitSet::set().

Here is the call graph for this function:

◆ unset() [1/4]

void unset ( List< bool > &  bools,
const labelUList locations 
)

◆ unset() [2/4]

void unset ( List< bool > &  bools,
const labelRange range 
)

Unset the specified range 'on' in a boolList.

For compatibility with bitSet::unset(labelRange)

Definition at line 109 of file BitOps.C.

References Foam::HashSetOps::bools(), range, and UList< T >::unset().

Here is the call graph for this function:

◆ unset() [3/4]

void unset ( labelHashSet hashset,
const labelRange range 
)

Unset the specified range in a labelHashSet.

For compatibility with bitSet::unset(labelRange)

Definition at line 118 of file BitOps.C.

References range, and HashSet< Key, Hash >::unset().

Here is the call graph for this function:

◆ unset() [4/4]

void unset ( bitSet bitset,
const labelRange range 
)

Forward to bitSet::unset(labelRange)

Definition at line 127 of file BitOps.C.

References Foam::HashSetOps::bitset(), range, and bitSet::unset().

Here is the call graph for this function:

◆ select() [1/2]

Foam::List< bool > select ( const label  n,
const labelUList locations 
)

Construct a selection list of bools (all false) with the given pre-size, subsequently add specified locations as true, auto-vivify entries if needed.

Similar to bitSet construction from locations

Returns
a List of bools

Definition at line 134 of file BitOps.C.

References Foam::HashSetOps::bools(), n, and set().

Referenced by Foam::BitSetOps::create(), fvMeshDistribute::distribute(), zeroGradient::execute(), ddt2::execute(), decompositionMethod::findCoeffsDict(), pointBoundaryMesh::indices(), fvBoundaryMesh::indices(), ZoneMesh< cellZone, polyMesh >::indices(), faBoundaryMesh::indices(), polyBoundaryMesh::indices(), Foam::inplaceSubset(), polyBoundaryMesh::patchSet(), ABAQUSCore::readHelper::purge_solids(), randomDecomp::randomDecomp(), IndirectList< T >::subset(), extendedEdgeMesh::trim(), Foam::HashSetOps::used(), and writeObjects::write().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ select() [2/2]

Foam::List< bool > select ( const labelUList locations)

Construct an auto-sized selection list of bools (all false), and populate the specified locations as true.

Similar to bitSet construction from locations

Returns
a List of bools

Definition at line 147 of file BitOps.C.

References Foam::HashSetOps::bools(), and set().

Here is the call graph for this function:

◆ toc() [1/3]

Foam::List< Foam::label > toc ( const UList< bool > &  bools)

Return the (sorted) values corresponding to 'true' entries.

Similar to bitSet::toc()

Returns
a List of labels

Definition at line 158 of file BitOps.C.

References Foam::constant::physicoChemical::b, Foam::HashSetOps::bools(), count(), and UList< T >::size().

Referenced by HashTable< const regIOobject * >::at(), Foam::FOAM_DEPRECATED_FOR(), distribution::mean(), sortedToc(), HashTable< const regIOobject * >::sortedToc(), and topoSet::writeDebug().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sortedToc() [1/3]

◆ toc() [2/3]

Foam::List< Foam::label > toc ( const bitSet bitset)

Forward to bitSet::toc(), the sorted values of the 'on' entries.

Returns
a List of labels

Definition at line 201 of file BitOps.C.

References Foam::HashSetOps::bitset(), and bitSet::toc().

Here is the call graph for this function:

◆ sortedToc() [2/3]

Foam::List< Foam::label > sortedToc ( const bitSet bitset)

Forward to bitSet::sortedToc(), the sorted values of the 'on' entries.

Returns
a List of labels

Definition at line 207 of file BitOps.C.

References Foam::HashSetOps::bitset(), and bitSet::sortedToc().

Here is the call graph for this function:

◆ toc() [3/3]

Foam::List< Foam::label > toc ( const labelHashSet hashset)

Forward to labelHashSet::sortedToc(), the sorted values of the 'on' entries.

Returns
a List of labels

Definition at line 213 of file BitOps.C.

References HashTable< T, Key, Hash >::sortedToc().

Here is the call graph for this function:

◆ sortedToc() [3/3]

Foam::List< Foam::label > sortedToc ( const labelHashSet hashset)

Forward to labelHashSet::sortedToc(), the sorted values of the 'on' entries.

Returns
a List of labels

Definition at line 219 of file BitOps.C.

References HashTable< T, Key, Hash >::sortedToc().

Here is the call graph for this function:

◆ bit_count() [1/3]

unsigned int Foam::BitOps::bit_count ( UIntType  x)
inline

Count arbitrary number of bits (of an integral type)

Definition at line 245 of file BitOps.H.

References n, and x.

Referenced by bitSet::count().

Here is the caller graph for this function:

◆ bit_count() [2/3]

unsigned int Foam::BitOps::bit_count ( uint32_t  x)
inline

Count bits in a 32-bit value (Hamming weight method)

Definition at line 259 of file BitOps.H.

References x.

◆ bit_count() [3/3]

unsigned int Foam::BitOps::bit_count ( uint64_t  x)
inline

Count bits in a 64-bit value (Hamming weight method)

Definition at line 272 of file BitOps.H.

References x.

◆ repeat_value()

UIntType Foam::BitOps::repeat_value ( unsigned  val)
inline

Repeat a value of the given BitWidth into the destination output type.

Note
when BitWidth is 1, it is better to do directly.
(val ? ~0u : 0u)

Definition at line 292 of file BitOps.H.

◆ print()

Ostream& Foam::BitOps::print ( Ostream os,
UIntType  value,
char  off = '0',
char  on = '1' 
)
inline

Print 0/1 bits in the (unsigned) integral type.

Definition at line 323 of file BitOps.H.

References IOstreamOption::BINARY, and os().

Referenced by if(), Foam::operator<<(), dynamicIndexedOctree< Foam::dynamicTreeDataPoint >::print(), indexedOctree< Foam::treeDataPrimitivePatch< PatchType > >::print(), PackedList< 2 >::printBits(), sampledPlane::update(), sampledPatch::update(), and seriesWriter::write().

Here is the call graph for this function:
Here is the caller graph for this function: