CNum 0.2.1
CPU-optimized ML library for C++
Loading...
Searching...
No Matches
BinaryMask.h
Go to the documentation of this file.
1#ifndef BINARY_MASK_H
2#define BINARY_MASK_H
4#include <memory>
5#include <stdexcept>
6#include <iostream>
7
8namespace CNum::DataStructs {
9 template <typename T>
10 class Matrix;
11
12 using BitMask = ::std::unique_ptr<uint8_t[]>;
13
22 class BinaryMask {
23 private:
24 ::std::unique_ptr<uint8_t[]> _bit_mask;
25 size_t _size;
26 size_t _n_set;
27
29 void copy(const BinaryMask &other) noexcept;
32 void move(BinaryMask &&other) noexcept;
33
36
37 static size_t n_bytes_required(size_t bits) noexcept;
39 public:
40 BinaryMask() = delete;
45 BinaryMask(BitMask mask, size_t size, size_t n_set);
46
48 BinaryMask(const BinaryMask &other) noexcept;
50 BinaryMask &operator=(const BinaryMask &other) noexcept;
52 BinaryMask(BinaryMask &&other) noexcept;
54 BinaryMask &operator=(BinaryMask &&other) noexcept;
55
59 template <typename T>
60 ::CNum::DataStructs::Matrix<T> mask(const ::CNum::DataStructs::Matrix<T> &m) const;
61
67 template <typename T, typename U, typename CompareFunction>
68 static BinaryMask create_binary_mask(const T &m, U val);
69
74 template <typename T, typename CompareFunction>
75 static BinaryMask create_binary_mask_matrix(const ::CNum::DataStructs::Matrix<T> &m, T val);
76 };
77
78 #include "CNum/DataStructs/Matrix/BinaryMask.tpp"
79};
80
81#endif
BinaryMask(const BinaryMask &other) noexcept
Copy constructor.
::CNum::DataStructs::Matrix< T > mask(const ::CNum::DataStructs::Matrix< T > &m) const
apply the mask to a Matrix
static BinaryMask create_binary_mask_matrix(const ::CNum::DataStructs::Matrix< T > &m, T val)
Create a BinaryMask for a Matrix.
Definition BinaryMask.h:30
BinaryMask & operator=(const BinaryMask &other) noexcept
Copy equals operator.
BinaryMask & operator=(BinaryMask &&other) noexcept
Move equals operator.
BinaryMask(BinaryMask &&other) noexcept
Move constructor.
BinaryMask(BitMask mask, size_t size, size_t n_set)
Overloaded constructor.
static BinaryMask create_binary_mask(const T &m, U val)
Create a binary mask.
Definition BinaryMask.h:38
2d array abstraction
Definition Matrix.h:43
The data structures used in CNum.
Definition ConcurrentQueue.h:8
::std::unique_ptr< uint8_t[]> BitMask
Definition BinaryMask.h:12