31#ifndef FENNEC_LANG_BITS_H
32#define FENNEC_LANG_BITS_H
84#include <fennec/lang/detail/_bits.h>
97template<
typename ToT,
typename FromT>
requires(
sizeof(ToT) ==
sizeof(FromT))
99 if constexpr(FENNEC_HAS_BUILTIN_BIT_CAST) {
100 return FENNEC_BUILTIN_BIT_CAST(ToT, from);
103 fennec::memcpy(&to, &from,
sizeof(ToT));
120constexpr void*
bit_and(
void* arr,
const void* mask,
size_t n) {
129 const size_t step = detail::_bit_and(d, s, n);
145constexpr void*
bit_and_s(
void* arr,
size_t n0,
const void* mask,
size_t n1) {
146 return bit_and(arr, mask, n0 < n1 ? n0 : n1);
161constexpr void*
bit_or(
void* arr,
const void* mask,
size_t n) {
170 const size_t step = detail::_bit_or(d, s, n);
186constexpr void*
bit_or_s(
void* arr,
size_t n0,
const void* mask,
size_t n1) {
187 return bit_or(arr, mask, n0 < n1 ? n0 : n1);
202constexpr void*
bit_xor(
void* arr,
const void* mask,
size_t n) {
210 const size_t step = detail::_bit_xor(d, s, n);
226constexpr void*
bit_xor_s(
void* arr,
size_t n0,
const void* mask,
size_t n1) {
227 return bit_xor(arr, mask, n0 < n1 ? n0 : n1);
constexpr void * bit_xor(void *arr, const void *mask, size_t n)
Perform a bit-wise or over an array of bytes.
Definition bits.h:202
constexpr void * bit_and(void *arr, const void *mask, size_t n)
Perform a bit-wise and over an array of bytes.
Definition bits.h:120
constexpr void * bit_or(void *arr, const void *mask, size_t n)
Perform a bit-wise or over an array of bytes.
Definition bits.h:161
constexpr void * bit_or_s(void *arr, size_t n0, const void *mask, size_t n1)
Safe version of fennec::bit_or.
Definition bits.h:186
constexpr ToT bit_cast(const FromT &from)
Perform a bitcast of FromT to ToT.
Definition bits.h:98
constexpr void * bit_xor_s(void *arr, size_t n0, const void *mask, size_t n1)
Safe version of fennec::bit_xor.
Definition bits.h:226
constexpr void * bit_and_s(void *arr, size_t n0, const void *mask, size_t n1)
Safe version of fennec::bit_and.
Definition bits.h:145
constexpr genType step(genType edge, genType x)
Returns if , otherwise, it returns .
Definition common.h:750
This header contains functions related to analyzing, modifying or copying buffers interpreted as byte...
::uint8_t uint8_t
Unsigned 8-bit integer.
Definition types.h:272