#pragma once namespace big::misc { template inline void clear_bit(T* address, int pos) { *address &= ~(1 << pos); } template inline void clear_bits(T* address, int bits) { *address &= ~(bits); } template inline bool has_bit_set(T* address, int pos) { return *address & 1 << pos; } template inline bool has_bits_set(T* address, T bits) { return (*address & bits) == bits; } template inline void set_bit(T* address, int pos) { *address |= 1 << pos; } template inline void set_bits(T* address, int bits) { *address |= bits; } }