Files
bacnet_stack/src/bacnet/basic/sys/bits.h
T
Kari Argillander f806c5829b Run clang-format and enable CI check for it (#755)
* pre-commit: Update and enable clang-format check

There is newer version from clang-format so use that. We do not yet want
18 as that is little bit too new.

* Format some thing by hand which clang-format "breaks"

Clang-format will format some things little bit off in some cases.
Format some things by hand so we get cleaner end result.

* Run clang-format with

```
pre-commit run --all-files clang-format
```

We have already in previously checked places where clang-format does not
make good format and ignored those (hopefully most of the things).

---------

Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
2024-08-30 11:20:58 -05:00

50 lines
1.1 KiB
C

/**
* @file
* @author Steve Karg <skarg@users.sourceforge.net>
* @date 2012
* @brief Bitwise helper macros
* @copyright SPDX-License-Identifier: MIT
*/
#ifndef BACNET_SYS_BITS_H
#define BACNET_SYS_BITS_H
/********************************************************************
* Bit Masks
*********************************************************************/
#ifndef BIT
#define BIT(x) (1 << (x))
#endif
#ifndef _BV
#define _BV(x) (1 << (x))
#endif
/* a=register, b=bit number to act upon 0-n */
#ifndef BIT_SET
#define BIT_SET(a, b) ((a) |= (1 << (b)))
#endif
#ifndef BIT_CLEAR
#define BIT_CLEAR(a, b) ((a) &= ~(1 << (b)))
#endif
#ifndef BIT_FLIP
#define BIT_FLIP(a, b) ((a) ^= (1 << (b)))
#endif
#ifndef BIT_CHECK
#define BIT_CHECK(a, b) ((a) & (1 << (b)))
#endif
/* x=target variable, y=mask */
#ifndef BITMASK_SET
#define BITMASK_SET(x, y) ((x) |= (y))
#endif
#ifndef BITMASK_CLEAR
#define BITMASK_CLEAR(x, y) ((x) &= (~(y)))
#endif
#ifndef BITMASK_FLIP
#define BITMASK_FLIP(x, y) ((x) ^= (y))
#endif
#ifndef BITMASK_CHECK
#define BITMASK_CHECK(x, y) (((x) & (y)) == (y))
#endif
#endif