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 }