Page MenuHomeDevCentral

Represent a bits vector
ClosedPublic

Authored by dereckson on Apr 9 2022, 18:27.
Tags
None
Referenced Files
F2831651: D2659.id6722.diff
Fri, Apr 19, 18:41
Unknown Object (File)
Thu, Apr 18, 13:26
Unknown Object (File)
Thu, Apr 18, 13:26
Unknown Object (File)
Thu, Apr 18, 13:26
Unknown Object (File)
Thu, Apr 18, 11:55
Unknown Object (File)
Wed, Apr 17, 10:28
Unknown Object (File)
Sun, Apr 14, 12:20
Unknown Object (File)
Sun, Apr 14, 04:44
Subscribers
None

Details

Summary

\Keruald\OmniTools\Collections\BitsVector allows to represent vector of bits,
and manipulate them with expressive oriented-object methods.

That allows to clearly express the bits manipulation without any arcane notation
like uuid->time_hi_and_version |= (v << 12) in C.

Context

Traditionally, Perl offers a pack() function to encode information
into a binary string, and read the string as ASCII. That function
has been ported into PHP.

Yet, this representation is especially useful when we manipulate bytes,
and some data structures like cut bits blocks in other boundaries than
bytes. For example UUID use 60 bits timestamp, 2 bits variant and 4 bits
version fields. That requires to combine two fields in one byte.

Ref. T1717

Test Plan

Unit tests provided, with full coverage for BaseVector, BitsVector, Vector.

Diff Detail

Repository
rKERUALD Keruald libraries development repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

dereckson created this revision.
dereckson edited the summary of this revision. (Show Details)
This revision is now accepted and ready to land.Apr 9 2022, 18:29
This revision was landed with ongoing or failed builds.Apr 9 2022, 18:29
This revision was automatically updated to reflect the committed changes.