Commit c02683a
IO::Buffer: ビット演算の 8 メソッドを追加
& | ^ ~ and! or! xor! not! を追加した。8 つとも 3.2 からなので
#%since 3.2 で囲む (3.1 には無いことを実機で確認)。
説明がほぼ同じものはまとめ、4 エントリで表現している。
& | ^ で 1 つ、~ で 1 つ、and! or! xor! で 1 つ、not! で 1 つ。
ri に書かれていないが実機で確認した挙動を補った。
- 空のマスクを渡すと IO::Buffer::MaskError が発生する。rurema#3295 で収録した
例外クラスの発生条件が、これで文書化される。
- 読み取り専用のバッファに破壊版を呼ぶと IO::Buffer::AccessError が発生する。
- 破壊版の返り値は self。
- マスクが元より短い場合は先頭から繰り返し適用される (ri にも記載あり)。
ri の & の例は結果を +4 と表示しているが、実際は元と同じ 10 バイトになる
(| の例は +10 で正しい)。例をそのまま写さず p buf.size # => 10 を明示した。
IO::Buffer.for はブロックを渡さないと読み取り専用になるため、破壊版の例では
dup で複製している。その理由を例のコメントに書いた。
記載した例は 3.2 / 3.3 / 3.4 / 4.0 で実行して出力が一致することを確認した。
rake check_links はいずれの版も master と同数 (3.1: 225 / 3.2: 256 / 4.0: 257)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 81f7f59 commit c02683a
1 file changed
Lines changed: 82 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
825 | 825 | | |
826 | 826 | | |
827 | 827 | | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
0 commit comments