| @@ 678-695 (lines=18) @@ | ||
| 675 | * |
|
| 676 | * @since 1.0.0 |
|
| 677 | */ |
|
| 678 | public function applyOr(BitArray $bits) |
|
| 679 | { |
|
| 680 | if ($this->size == $bits->size) |
|
| 681 | { |
|
| 682 | $length = strlen($this->data); |
|
| 683 | ||
| 684 | for ($index = 0; $index < $length; $index++) |
|
| 685 | { |
|
| 686 | $this->data[$index] = chr(ord($this->data[$index]) | ord($bits->data[$index])); |
|
| 687 | } |
|
| 688 | ||
| 689 | return $this; |
|
| 690 | } |
|
| 691 | else |
|
| 692 | { |
|
| 693 | throw new \InvalidArgumentException('Argument must be of equal size'); |
|
| 694 | } |
|
| 695 | } |
|
| 696 | ||
| 697 | /** |
|
| 698 | * And with an another bit array |
|
| @@ 708-725 (lines=18) @@ | ||
| 705 | * |
|
| 706 | * @since 1.0.0 |
|
| 707 | */ |
|
| 708 | public function applyAnd(BitArray $bits) |
|
| 709 | { |
|
| 710 | if ($this->size == $bits->size) |
|
| 711 | { |
|
| 712 | $length = strlen($this->data); |
|
| 713 | ||
| 714 | for ($index = 0; $index < $length; $index++) |
|
| 715 | { |
|
| 716 | $this->data[$index] = chr(ord($this->data[$index]) & ord($bits->data[$index])); |
|
| 717 | } |
|
| 718 | ||
| 719 | return $this; |
|
| 720 | } |
|
| 721 | else |
|
| 722 | { |
|
| 723 | throw new \InvalidArgumentException('Argument must be of equal size'); |
|
| 724 | } |
|
| 725 | } |
|
| 726 | ||
| 727 | /** |
|
| 728 | * Xor with an another bit array |
|
| @@ 738-755 (lines=18) @@ | ||
| 735 | * |
|
| 736 | * @since 1.0.0 |
|
| 737 | */ |
|
| 738 | public function applyXor(BitArray $bits) |
|
| 739 | { |
|
| 740 | if ($this->size == $bits->size) |
|
| 741 | { |
|
| 742 | $length = strlen($this->data); |
|
| 743 | ||
| 744 | for ($index = 0; $index < $length; $index++) |
|
| 745 | { |
|
| 746 | $this->data[$index] = chr(ord($this->data[$index]) ^ ord($bits->data[$index])); |
|
| 747 | } |
|
| 748 | ||
| 749 | return $this; |
|
| 750 | } |
|
| 751 | else |
|
| 752 | { |
|
| 753 | throw new \InvalidArgumentException('Argument must be of equal size'); |
|
| 754 | } |
|
| 755 | } |
|
| 756 | ||
| 757 | /** |
|
| 758 | * Shift a bit array. |
|