File indexing completed on 2025-01-05 04:37:21

0001 /*
0002     SPDX-FileCopyrightText: 2005 Joris Guisson <joris.guisson@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #include "chunkcounter.h"
0007 #include <util/bitset.h>
0008 
0009 namespace bt
0010 {
0011 ChunkCounter::ChunkCounter(Uint32 num_chunks)
0012     : cnt(num_chunks)
0013 {
0014     // fill with 0
0015     cnt.fill(0);
0016 }
0017 
0018 ChunkCounter::~ChunkCounter()
0019 {
0020 }
0021 
0022 void ChunkCounter::reset()
0023 {
0024     cnt.fill(0);
0025 }
0026 
0027 void ChunkCounter::incBitSet(const BitSet &bs)
0028 {
0029     for (Uint32 i = 0; i < cnt.size(); i++) {
0030         if (bs.get(i))
0031             cnt[i]++;
0032     }
0033 }
0034 
0035 void ChunkCounter::decBitSet(const BitSet &bs)
0036 {
0037     for (Uint32 i = 0; i < cnt.size(); i++) {
0038         if (bs.get(i))
0039             dec(i);
0040     }
0041 }
0042 
0043 void ChunkCounter::inc(Uint32 idx)
0044 {
0045     if (idx < cnt.size())
0046         cnt[idx]++;
0047 }
0048 
0049 void ChunkCounter::dec(Uint32 idx)
0050 {
0051     if (idx < cnt.size() && cnt[idx] > 0)
0052         cnt[idx]--;
0053 }
0054 
0055 Uint32 ChunkCounter::get(Uint32 idx) const
0056 {
0057     if (idx < cnt.size())
0058         return cnt[idx];
0059     else
0060         return 0;
0061 }
0062 
0063 }