Initial commit

This commit is contained in:
2025-10-22 20:40:25 +03:00
commit 63d038ee63
57 changed files with 104378 additions and 0 deletions

73
libs/Utils.h Normal file
View File

@@ -0,0 +1,73 @@
/*
* Utils.h
*
* Created on: 29 мая 2015 г.
* Author: esaulenko
*/
#ifndef UTILS_H_
#define UTILS_H_
#include <cstdint>
#include "IO.h"
uint32_t constexpr BIT (uint32_t n)
{ return 1UL << n; }
uint64_t constexpr BIT64 (uint32_t n)
{ return 1ULL << n; }
template <typename T1, typename T2> uint32_t MAX (T1 a, T2 b)
{
if (a > b) return a;
else return b;
}
template <typename T1, typename T2> uint32_t MIN (T1 a, T2 b)
{
if (a > b) return b;
else return a;
}
#define countof(array) (sizeof(array)/sizeof(array[0]))
// установка/снятие бита
template <typename T> void BSET (T &x, uint32_t bitNo) ///< установить бит
{ x |= BIT64 (bitNo); }
template <typename T> void BCLR (T &x, uint32_t bitNo) ///< стереть бит
{ x &= ~BIT64 (bitNo); }
///< определить (стереть (Value=0) или установить(Value=1)) бит
template <typename T> void BDEF (T &x, uint32_t bitNo, uint32_t Value)
{
if (Value) BSET (x, bitNo);
else BCLR (x, bitNo);
}
// возвращает номер старшего бита
constexpr int8_t bitmask2offset (uint32_t val)
{
return (int8_t) ( (val > 1) ? ( bitmask2offset (val/2) + 1 ) : 0 );
}
// управление последовательностями
// использовать в CoreFunc->RunSequence()
#define SEQ(x,y) CIO::x, CSettings::y-CSettings::seqOFFSET
#endif /* UTILS_H_ */