Initial commit
This commit is contained in:
73
libs/Utils.h
Normal file
73
libs/Utils.h
Normal 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_ */
|
||||
Reference in New Issue
Block a user