From 860712b09fa433968e2e4b0545b08f366cd8454c Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 16 Mar 2015 19:21:28 +0100 Subject: [PATCH] (Bitset) Added Unbounded methods Former-commit-id: 898eecf4aa8ecf7c9ec85fc8c46c17a6c3badc34 --- include/Nazara/Core/Bitset.hpp | 4 ++++ include/Nazara/Core/Bitset.inl | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/Nazara/Core/Bitset.hpp b/include/Nazara/Core/Bitset.hpp index 4eda7fef7..ccb7802ef 100644 --- a/include/Nazara/Core/Bitset.hpp +++ b/include/Nazara/Core/Bitset.hpp @@ -70,6 +70,10 @@ class NzBitset template T To() const; NzString ToString() const; + void UnboundedReset(unsigned int bit); + void UnboundedSet(unsigned int bit, bool val = true); + bool UnboundedTest(unsigned int bit) const; + Bit operator[](int index); bool operator[](int index) const; diff --git a/include/Nazara/Core/Bitset.inl b/include/Nazara/Core/Bitset.inl index 6be3e2e06..78c9b3932 100644 --- a/include/Nazara/Core/Bitset.inl +++ b/include/Nazara/Core/Bitset.inl @@ -379,6 +379,34 @@ NzString NzBitset::ToString() const return str; } +template +void NzBitset::UnboundedReset(unsigned int bit) +{ + UnboundedSet(bit, false); +} + +template +void NzBitset::UnboundedSet(unsigned int bit, bool val) +{ + if (bit < m_bitCount) + Set(bit, val); + else if (val) + { + // On élargit le bitset seulement s'il y a un bit à marquer + Resize(bit + 1, false); + Set(bit, true); + } +} + +template +bool NzBitset::UnboundedTest(unsigned int bit) const +{ + if (bit < m_bitCount) + return Test(bit); + else + return false; +} + template typename NzBitset::Bit NzBitset::operator[](int index) {