1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
<?php
/**
* Copyright (c) 2016 Bernardo van der Wal
* MIT License
*
* Refer to the LICENSE file for the full copyright notice.
*/
namespace OneOfZero\Json\Helpers;
class Flags
{
/**
* @param int $value
* @param int $flags
*
* @return bool
*/
public static function has($value, $flags)
{
return ($value & $flags) === $flags;
}
/**
* @param int $value
* @param int $flags
*
* @return int
*/
public static function add($value, $flags)
{
return $value | $flags;
}
/**
* @param int $value
* @param int $flags
*
* @return int
*/
public static function remove($value, $flags)
{
return $value & (~$flags);
}
/**
* @param int $value
* @param int $flags
*
* @return int
*/
public static function toggle($value, $flags)
{
return $value ^ $flags;
}
/**
* @param int $value
* @param int $wordSize
*
* @return int
*/
public static function invert($value, $wordSize = 8)
{
if ($wordSize < 1)
{
return 0;
}
$mask = pow(2, $wordSize) - 1;
return (~$value) & $mask;
}
}