5#include "system/collections/icollection.h"
6#include "system/collections/ienumerable.h"
7#include "system/array.h"
13#ifdef ASPOSECPPLIB_BEING_BUILT
14#include <boost/dynamic_bitset.hpp>
20 template <
class,
class>
class dynamic_bitset;
25namespace Collections {
29 typedef boost::dynamic_bitset<uint32_t, std::allocator<uint32_t>> BitsetType;
32 struct BitsetSizeEquivalent
35 std::vector<uint32_t> m_data;
40 struct BitsetReferenceSizeEquivalent
47 BitsetReferenceSizeEquivalent() =
delete;
51 ASPOSECPP_3RD_PARTY_TYPE_HOLDER(BitsetType, dynamic_bitset,
sizeof(BitsetSizeEquivalent), std::uint32_t*, BitsetHolder);
53 ASPOSECPP_3RD_PARTY_TYPE_HOLDER_HIDDEN_TYPE(BitsetType::reference, reference,
sizeof(BitsetReferenceSizeEquivalent), BitsetReferenceSizeEquivalent, BitsetReferenceHolder);
99 RTTI_INFO(
BitArray, ::System::BaseTypesInfo<System::Object>);
127 ASPOSECPP_SHARED_API
void Reset()
override;
138 ASPOSECPP_SHARED_API
operator bool()
const;
141 ASPOSECPP_SHARED_API
bool operator ~ ()
const;
145 ASPOSECPP_SHARED_API
Reference& operator = (
bool value);
153 ASPOSECPP_SHARED_API
Reference& operator |= (
bool value);
157 ASPOSECPP_SHARED_API
Reference& operator &= (
bool value);
161 ASPOSECPP_SHARED_API
Reference& operator ^= (
bool value);
165 ASPOSECPP_SHARED_API
Reference& operator -= (
bool value);
172 template <
typename T>
Reference(
const T &reference);
174 Detail::BitsetReferenceHolder m_reference;
202 ASPOSECPP_SHARED_API
BitArray(
int length,
bool defaultValue =
false);
212 ASPOSECPP_SHARED_API
bool idx_get(
int index)
const;
216 ASPOSECPP_SHARED_API
void idx_set(
int index,
bool value);
227 ASPOSECPP_SHARED_API
void Add(
const bool &item)
override;
229 ASPOSECPP_SHARED_API
void Clear()
override;
233 ASPOSECPP_SHARED_API
bool Contains(
const bool &item)
const override;
237 ASPOSECPP_SHARED_API
bool Remove(
const bool &item)
override;
262 ASPOSECPP_SHARED_API
bool Get(
int index)
const;
266 ASPOSECPP_SHARED_API
void Set(
int index,
bool value);
269 ASPOSECPP_SHARED_API
void SetAll(
bool value);
324 ASPOSECPP_SHARED_API
bool IsNull()
const;
Enumerator type for iteration purposes.
Definition: bitarray.h:107
bool get_Current() const override
Gets addressed bit in boolean form.
bool MoveNext() override
Moves to the next bit.
void Reset() override
Resets enumerator to position before first element.
Enumerator(const SharedPtr< BitArray > &parent)
Creates enumerator.
Reference class to allow treating BitArray elements in contexts where bool is required.
Definition: bitarray.h:132
~Reference()
Deletes reference.
Array of bits which can be addressed by index. Objects of this class should only be allocated using S...
Definition: bitarray.h:97
BitArray(const System::ArrayPtr< uint8_t > &bytes)
Copy constructor.
const bitset & data() const
Underlying data structure access.
bool Get(int index) const
Gets BitArray element.
System::Details::VirtualizedIteratorBase< bool > * virtualizeBeginIterator() override
Gets the implementation of begin iterator for the current container.
void CopyTo(System::ArrayPtr< bool > array, int arrayIndex) override
Copies data to existing array elements.
BitArray(const bitset &bits)
Copy constructor.
int get_Count() const override
Gets container size.
System::Details::VirtualizedIteratorBase< bool > * virtualizeBeginConstIterator() const override
Gets the implementation of begin const iterator for the current container.
~BitArray() override
Destructor.
void idx_set(int index, bool value)
Setter function.
BitArrayPtr And(const BitArrayPtr &value)
Calculates bitwise 'and' between two BitSets.
void Clear() override
Deletes all elements.
bool idx_get(int index) const
Getter function.
BitArray(const BitArrayPtr &array)
Copy constructor.
BitArrayPtr Not()
Negates BitSet.
BitArray(const BitArray &bits)
Copy constructor.
Reference operator[](int index)
Accessor function.
bitset & data()
Underlying data structure access.
Detail::BitsetHolder m_data
Internal data structure.
Definition: bitarray.h:303
BitArray(const System::ArrayPtr< int > &values)
Copy constructor.
SharedPtr< Generic::IEnumerator< bool > > GetEnumerator() override
Creates enumerator object.
bool Contains(const bool &item) const override
Checks whether specific value is present in container. Not implemented.
void SetAll(bool value)
Sets all elements to specific value.
BitArray(int length, bool defaultValue=false)
Fill constructor.
void Set(int index, bool value)
Sets BitArray element.
BitArrayPtr Xor(const BitArrayPtr &value)
Calculates bitwise 'xor' between two BitSets.
bool Remove(const bool &item) override
Returns first occurance of specified value. Not implemented.
System::Details::VirtualizedIteratorBase< bool > * virtualizeEndIterator() override
Gets the implementation of end iterator for the current container.
Detail::BitsetType bitset
Underlying data type.
Definition: bitarray.h:103
BitArrayPtr Or(const BitArrayPtr &value)
Calculates bitwise 'or' between two BitSets.
BitArray(const System::ArrayPtr< bool > &values)
Copy constructor.
int get_Length() const
Gets container size.
System::Details::VirtualizedIteratorBase< bool > * virtualizeEndConstIterator() const override
Gets the implementation of end const iterator for the current container.
void Add(const bool &item) override
Adds value to the end of container.
void SetTemplateWeakPtr(uint32_t argument) override
Formal implementation of weak template arguments mechanism; inapplicable to this class.
Pointer to BitArray. This type is a pointer to manage other object's deletion. It should be allocated...
Definition: bitarray.h:310
BitArrayPtr(const SharedPtr< BitArray > &obj)
Conversion constructor.
bool IsNull() const
Checks if specific value is null.
BitArrayPtr()
Initializes null pointer.
Interface of collection of elements. Objects of this class should only be allocated using System::Mak...
Definition: icollection.h:20
Interface of enumerator which can be used to iterate through some elements. Objects of this class sho...
Definition: ienumerator.h:63
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:62
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
Definition: db_command.h:9
bool operator!=(ArraySegment< T > a, ArraySegment< T > b)
Definition: array_segment.h:157
bool operator==(ArraySegment< T > a, ArraySegment< T > b)
Definition: array_segment.h:151