BitSet

The BitSet class is a helper class to manage bit sets. It eases the work with bits and bitwise operations by providing a reliable and tested API.

The class can be used standalone or as a parent for more verbose classes that handle bit sets.

The functionality is best described by an example:

define('PERMISSIONS_NONE', 0b0); // 0
define('PERMISSIONS_PAGE_SHOW', 0b1); // 1
define('PERMISSIONS_PAGE_EDIT', 0b10); // 2
define('PERMISSIONS_PAGE_DELETE', 0b100); // 4

$bitSet = new \TYPO3\CMS\Core\Type\BitSet(PERMISSIONS_PAGE_SHOW | PERMISSIONS_PAGE_EDIT);
$bitSet->get(PERMISSIONS_PAGE_SHOW); // true
$bitSet->get(PERMISSIONS_PAGE_DELETE); // false

Another example shows how to possibly extend the class:

class Permissions extends \TYPO3\CMS\Core\Type\BitSet
{
    public const NONE = 0b0; // 0
    public const PAGE_SHOW = 0b1; // 1

    public function isGranted(int $permission): bool
    {
        return $this->get($permission);
    }

    public function grant(int $permission): void
    {
        $this->set($permission);
    }
}

$permissions = new Permissions();
$permissions->isGranted(Permissions::PAGE_SHOW); // false
$permissions->grant(Permissions::PAGE_SHOW);
$permissions->isGranted(Permissions::PAGE_SHOW); // true

Table of Contents

Properties

$set  : int

Methods

__construct()  : mixed
__toInt()  : int
Returns the integer representation of the internal set.
__toString()  : string
Returns the (binary) string representation of the internal (integer) set.
and()  : void
Performs a logical AND of this target bit set with the argument bit set. This bit set is modified so that each bit in it has the value true if and only if it both initially had the value true and the corresponding bit in the bit set argument also had the value true.
andNot()  : void
Clears all of the bits in this BitSet whose corresponding bit is set in the specified BitSet.
clear()  : void
Sets all of the bits in this BitSet to false.
get()  : bool
or()  : void
Performs a logical OR of this bit set with the bit set argument. This bit set is modified so that a bit in it has the value true if and only if it either already had the value true or the corresponding bit in the bit set argument has the value true.
set()  : void
Performs the same operation as {@see or()} without the need to create a BitSet instance from an integer value.
setValue()  : void
unset()  : void
Performs the same operation as {@see andNot()} without the need to create a BitSet instance from an integer value.
xor()  : void
Performs a logical XOR of this bit set with the bit set argument. This bit set is modified so that a bit in it has the value true if and only if one of the following statements holds:

Properties

Methods

__construct()

public __construct([int $set = 0 ]) : mixed
Parameters
$set : int = 0

__toInt()

Returns the integer representation of the internal set.

public __toInt() : int

(As PHP does not know a byte type, the internal set is already handled as an integer and can therefore directly be returned)

Return values
int

__toString()

Returns the (binary) string representation of the internal (integer) set.

public __toString() : string
Return values
string

and()

Performs a logical AND of this target bit set with the argument bit set. This bit set is modified so that each bit in it has the value true if and only if it both initially had the value true and the corresponding bit in the bit set argument also had the value true.

public and(BitSet $set) : void
Parameters
$set : BitSet

andNot()

Clears all of the bits in this BitSet whose corresponding bit is set in the specified BitSet.

public andNot(BitSet $set) : void
Parameters
$set : BitSet

clear()

Sets all of the bits in this BitSet to false.

public clear() : void

get()

public get(int $bitIndex) : bool
Parameters
$bitIndex : int
Return values
bool

or()

Performs a logical OR of this bit set with the bit set argument. This bit set is modified so that a bit in it has the value true if and only if it either already had the value true or the corresponding bit in the bit set argument has the value true.

public or(BitSet $set) : void
Parameters
$set : BitSet

set()

Performs the same operation as {@see or()} without the need to create a BitSet instance from an integer value.

public set(int $bitIndex) : void
Parameters
$bitIndex : int

setValue()

public setValue(int $bitIndex, bool $value) : void
Parameters
$bitIndex : int
$value : bool

unset()

Performs the same operation as {@see andNot()} without the need to create a BitSet instance from an integer value.

public unset(int $bitIndex) : void
Parameters
$bitIndex : int

xor()

Performs a logical XOR of this bit set with the bit set argument. This bit set is modified so that a bit in it has the value true if and only if one of the following statements holds:

public xor(BitSet $set) : void
  • The bit initially has the value true, and the corresponding bit in the argument has the value false.
  • The bit initially has the value false, and the corresponding bit in the argument has the value true.
Parameters
$set : BitSet

        
On this page

Search results