rbs 3.7.0 → 3.8.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +3 -3
- data/.github/workflows/ruby.yml +7 -7
- data/CHANGELOG.md +52 -0
- data/core/array.rbs +1743 -1580
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +165 -93
- data/core/data.rbs +1 -1
- data/core/dir.rbs +1 -17
- data/core/encoding.rbs +12 -6
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +0 -2
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +2 -2
- data/core/exception.rbs +236 -170
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +32 -74
- data/core/float.rbs +125 -72
- data/core/gc.rbs +138 -40
- data/core/hash.rbs +120 -141
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +97 -144
- data/core/kernel.rbs +290 -200
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/module.rbs +28 -23
- data/core/nil_class.rbs +0 -3
- data/core/numeric.rbs +100 -103
- data/core/object.rbs +0 -4
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +0 -2
- data/core/process.rbs +109 -57
- data/core/ractor.rbs +37 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +234 -33
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +4 -52
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +0 -5
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +0 -5
- data/core/rubygems/version.rbs +6 -6
- data/core/set.rbs +3 -15
- data/core/string.rbs +130 -136
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +127 -50
- data/core/trace_point.rbs +16 -0
- data/core/true_class.rbs +0 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +1 -1
- data/ext/rbs_extension/location.c +29 -19
- data/ext/rbs_extension/parser.c +267 -292
- data/ext/rbs_extension/parserstate.c +56 -22
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +1 -1
- data/lib/rbs/cli.rb +13 -13
- data/lib/rbs/collection/config.rb +3 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +2 -2
- data/lib/rbs/prototype/rb.rb +11 -8
- data/lib/rbs/prototype/rbi.rb +9 -5
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +4 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/unit_test/type_assertions.rb +2 -2
- data/lib/rbs/validator.rb +3 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +4 -0
- data/sig/ancestor_graph.rbs +4 -4
- data/sig/namespace.rbs +2 -3
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/type_alias_regularity.rbs +5 -5
- data/sig/typename.rbs +8 -5
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +2 -2
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +47 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/date/0/date.rbs +4 -19
- data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
- data/stdlib/json/0/json.rbs +56 -71
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/net-http/0/net-http.rbs +19 -77
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/openssl.rbs +136 -69
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +1 -2
- data/stdlib/resolv/0/resolv.rbs +8 -3
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +0 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +0 -1
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +49 -25
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +58 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +11 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- metadata +4 -6
data/core/integer.rbs
CHANGED
@@ -5,12 +5,10 @@
|
|
5
5
|
#
|
6
6
|
# * An [integer literal](rdoc-ref:syntax/literals.rdoc@Integer+Literals).
|
7
7
|
#
|
8
|
-
#
|
9
8
|
# You can convert certain objects to Integers with:
|
10
9
|
#
|
11
10
|
# * Method #Integer.
|
12
11
|
#
|
13
|
-
#
|
14
12
|
# An attempt to add a singleton method to an instance of this class causes an
|
15
13
|
# exception to be raised.
|
16
14
|
#
|
@@ -18,8 +16,9 @@
|
|
18
16
|
#
|
19
17
|
# First, what's elsewhere. Class Integer:
|
20
18
|
#
|
21
|
-
# * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here)
|
22
|
-
#
|
19
|
+
# * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here) and [class
|
20
|
+
# Object](rdoc-ref:Object@What-27s+Here).
|
21
|
+
# * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
|
23
22
|
#
|
24
23
|
# Here, class Integer provides methods for:
|
25
24
|
#
|
@@ -28,14 +27,12 @@
|
|
28
27
|
# * [Converting](rdoc-ref:Integer@Converting)
|
29
28
|
# * [Other](rdoc-ref:Integer@Other)
|
30
29
|
#
|
31
|
-
#
|
32
30
|
# ### Querying
|
33
31
|
#
|
34
32
|
# * #allbits?: Returns whether all bits in `self` are set.
|
35
33
|
# * #anybits?: Returns whether any bits in `self` are set.
|
36
34
|
# * #nobits?: Returns whether no bits in `self` are set.
|
37
35
|
#
|
38
|
-
#
|
39
36
|
# ### Comparing
|
40
37
|
#
|
41
38
|
# * #<: Returns whether `self` is less than the given value.
|
@@ -48,7 +45,6 @@
|
|
48
45
|
# * #>: Returns whether `self` is greater than the given value.
|
49
46
|
# * #>=: Returns whether `self` is greater than or equal to the given value.
|
50
47
|
#
|
51
|
-
#
|
52
48
|
# ### Converting
|
53
49
|
#
|
54
50
|
# * ::sqrt: Returns the integer square root of the given value.
|
@@ -64,6 +60,7 @@
|
|
64
60
|
# * #>>: Returns the value of `self` after a rightward bit-shift.
|
65
61
|
# * #[]: Returns a slice of bits from `self`.
|
66
62
|
# * #^: Returns the bitwise EXCLUSIVE OR of `self` and the given value.
|
63
|
+
# * #|: Returns the bitwise OR of `self` and the given value.
|
67
64
|
# * #ceil: Returns the smallest number greater than or equal to `self`.
|
68
65
|
# * #chr: Returns a 1-character string containing the character represented by
|
69
66
|
# the value of `self`.
|
@@ -85,8 +82,6 @@
|
|
85
82
|
# * #to_s (aliased as #inspect): Returns a string containing the place-value
|
86
83
|
# representation of `self` in the given radix.
|
87
84
|
# * #truncate: Returns `self` truncated to the given precision.
|
88
|
-
# * #|: Returns the bitwise OR of `self` and the given value.
|
89
|
-
#
|
90
85
|
#
|
91
86
|
# ### Other
|
92
87
|
#
|
@@ -362,7 +357,6 @@ class Integer < Numeric
|
|
362
357
|
# * 1, if `self` is greater then `other`.
|
363
358
|
# * `nil`, if `self` and `other` are incomparable.
|
364
359
|
#
|
365
|
-
#
|
366
360
|
# Examples:
|
367
361
|
#
|
368
362
|
# 1 <=> 2 # => -1
|
@@ -620,22 +614,40 @@ class Integer < Numeric
|
|
620
614
|
# rdoc-file=numeric.c
|
621
615
|
# - ceil(ndigits = 0) -> integer
|
622
616
|
# -->
|
623
|
-
# Returns
|
624
|
-
#
|
625
|
-
#
|
626
|
-
#
|
627
|
-
#
|
628
|
-
#
|
629
|
-
#
|
630
|
-
#
|
631
|
-
#
|
632
|
-
#
|
633
|
-
#
|
634
|
-
#
|
635
|
-
#
|
636
|
-
#
|
637
|
-
#
|
638
|
-
#
|
617
|
+
# Returns an integer that is a "ceiling" value for `self`,
|
618
|
+
# as specified by the given `ndigits`,
|
619
|
+
# which must be an
|
620
|
+
# [integer-convertible
|
621
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
622
|
+
# * When `self` is zero, returns zero (regardless of the value of `ndigits`):
|
623
|
+
# 0.ceil(2) # => 0
|
624
|
+
# 0.ceil(-2) # => 0
|
625
|
+
#
|
626
|
+
# * When `self` is non-zero and `ndigits` is non-negative, returns `self`:
|
627
|
+
# 555.ceil # => 555
|
628
|
+
# 555.ceil(50) # => 555
|
629
|
+
#
|
630
|
+
# * When `self` is non-zero and `ndigits` is negative,
|
631
|
+
# returns a value based on a computed granularity:
|
632
|
+
# * The granularity is `10 ** ndigits.abs`.
|
633
|
+
# * The returned value is the smallest multiple of the granularity
|
634
|
+
# that is greater than or equal to `self`.
|
635
|
+
# Examples with positive `self`:
|
636
|
+
# ndigits|Granularity|1234.ceil(ndigits)
|
637
|
+
# -------|-----------|------------------
|
638
|
+
# -1| 10| 1240
|
639
|
+
# -2| 100| 1300
|
640
|
+
# -3| 1000| 2000
|
641
|
+
# -4| 10000| 10000
|
642
|
+
# -5| 100000| 100000
|
643
|
+
# Examples with negative `self`:
|
644
|
+
# ndigits|Granularity|-1234.ceil(ndigits)
|
645
|
+
# -------|-----------|-------------------
|
646
|
+
# -1| 10| -1230
|
647
|
+
# -2| 100| -1200
|
648
|
+
# -3| 1000| -1000
|
649
|
+
# -4| 10000| 0
|
650
|
+
# -5| 100000| 0
|
639
651
|
# Related: Integer#floor.
|
640
652
|
#
|
641
653
|
def ceil: () -> Integer
|
@@ -728,14 +740,14 @@ class Integer < Numeric
|
|
728
740
|
# Performs integer division; returns the integer result of dividing `self` by
|
729
741
|
# `numeric`:
|
730
742
|
#
|
731
|
-
#
|
732
|
-
#
|
733
|
-
#
|
734
|
-
#
|
735
|
-
#
|
736
|
-
#
|
743
|
+
# 4.div(3) # => 1
|
744
|
+
# 4.div(-3) # => -2
|
745
|
+
# -4.div(3) # => -2
|
746
|
+
# -4.div(-3) # => 1
|
747
|
+
# 4.div(3.0) # => 1
|
748
|
+
# 4.div(Rational(3, 1)) # => 1
|
737
749
|
#
|
738
|
-
#
|
750
|
+
# Raises an exception if `numeric` does not have method `div`.
|
739
751
|
#
|
740
752
|
def div: (Numeric) -> Integer
|
741
753
|
|
@@ -823,22 +835,40 @@ class Integer < Numeric
|
|
823
835
|
# rdoc-file=numeric.c
|
824
836
|
# - floor(ndigits = 0) -> integer
|
825
837
|
# -->
|
826
|
-
# Returns
|
827
|
-
# `ndigits
|
828
|
-
#
|
829
|
-
#
|
830
|
-
#
|
831
|
-
#
|
832
|
-
#
|
833
|
-
#
|
834
|
-
#
|
835
|
-
#
|
836
|
-
#
|
837
|
-
#
|
838
|
-
#
|
839
|
-
#
|
840
|
-
#
|
841
|
-
#
|
838
|
+
# Returns an integer that is a "floor" value for `self`,
|
839
|
+
# as specified by the given `ndigits`,
|
840
|
+
# which must be an
|
841
|
+
# [integer-convertible
|
842
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
843
|
+
# * When `self` is zero, returns zero (regardless of the value of `ndigits`):
|
844
|
+
# 0.floor(2) # => 0
|
845
|
+
# 0.floor(-2) # => 0
|
846
|
+
#
|
847
|
+
# * When `self` is non-zero and `ndigits` is non-negative, returns `self`:
|
848
|
+
# 555.floor # => 555
|
849
|
+
# 555.floor(50) # => 555
|
850
|
+
#
|
851
|
+
# * When `self` is non-zero and `ndigits` is negative,
|
852
|
+
# returns a value based on a computed granularity:
|
853
|
+
# * The granularity is `10 ** ndigits.abs`.
|
854
|
+
# * The returned value is the largest multiple of the granularity
|
855
|
+
# that is less than or equal to `self`.
|
856
|
+
# Examples with positive `self`:
|
857
|
+
# ndigits|Granularity|1234.floor(ndigits)
|
858
|
+
# -------|-----------|-------------------
|
859
|
+
# -1| 10| 1230
|
860
|
+
# -2| 100| 1200
|
861
|
+
# -3| 1000| 1000
|
862
|
+
# -4| 10000| 0
|
863
|
+
# -5| 100000| 0
|
864
|
+
# Examples with negative `self`:
|
865
|
+
# ndigits|Granularity|-1234.floor(ndigits)
|
866
|
+
# -------|-----------|--------------------
|
867
|
+
# -1| 10| -1240
|
868
|
+
# -2| 100| -1300
|
869
|
+
# -3| 1000| -2000
|
870
|
+
# -4| 10000| -10000
|
871
|
+
# -5| 100000| -100000
|
842
872
|
# Related: Integer#ceil.
|
843
873
|
#
|
844
874
|
def floor: (?int digits) -> Integer
|
@@ -1136,7 +1166,6 @@ class Integer < Numeric
|
|
1136
1166
|
# 15.round(-1, half: :even) # => 20
|
1137
1167
|
# (-25).round(-1, half: :even) # => -20
|
1138
1168
|
#
|
1139
|
-
#
|
1140
1169
|
# Raises and exception if the value for `half` is invalid.
|
1141
1170
|
#
|
1142
1171
|
# Related: Integer#truncate.
|
data/core/io/buffer.rbs
CHANGED
@@ -15,7 +15,6 @@ class IO
|
|
15
15
|
# * Create a string of a fixed size with ::string, then #read into it, or
|
16
16
|
# modify it using #set_value.
|
17
17
|
#
|
18
|
-
#
|
19
18
|
# Interaction with string and file memory is performed by efficient low-level C
|
20
19
|
# mechanisms like `memcpy`.
|
21
20
|
#
|
@@ -42,30 +41,28 @@ class IO
|
|
42
41
|
#
|
43
42
|
# Buffer from string:
|
44
43
|
#
|
45
|
-
# string = '
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
# # =>
|
52
|
-
# # #<IO::Buffer 0x00007f3f02be9b18+4 SLICE>
|
53
|
-
# # 0x00000000 64 61 74 61 buffer
|
44
|
+
# string = 'data'
|
45
|
+
# IO::Buffer.for(string) do |buffer|
|
46
|
+
# buffer
|
47
|
+
# # =>
|
48
|
+
# # #<IO::Buffer 0x00007f3f02be9b18+4 SLICE>
|
49
|
+
# # 0x00000000 64 61 74 61 data
|
54
50
|
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
#
|
62
|
-
#
|
63
|
-
#
|
64
|
-
#
|
51
|
+
# buffer.get_string(2) # read content starting from offset 2
|
52
|
+
# # => "ta"
|
53
|
+
# buffer.set_string('---', 1) # write content, starting from offset 1
|
54
|
+
# # => 3
|
55
|
+
# buffer
|
56
|
+
# # =>
|
57
|
+
# # #<IO::Buffer 0x00007f3f02be9b18+4 SLICE>
|
58
|
+
# # 0x00000000 64 2d 2d 2d d---
|
59
|
+
# string # original string changed, too
|
60
|
+
# # => "d---"
|
61
|
+
# end
|
65
62
|
#
|
66
63
|
# Buffer from file:
|
67
64
|
#
|
68
|
-
# File.write('test.txt', 'test
|
65
|
+
# File.write('test.txt', 'test data')
|
69
66
|
# # => 9
|
70
67
|
# buffer = IO::Buffer.map(File.open('test.txt'))
|
71
68
|
# # =>
|
@@ -82,7 +79,7 @@ class IO
|
|
82
79
|
# buffer.set_string('---', 1)
|
83
80
|
# # => 3 -- bytes written
|
84
81
|
# File.read('test.txt')
|
85
|
-
# # => "t---
|
82
|
+
# # => "t--- data"
|
86
83
|
#
|
87
84
|
# **The class is experimental and the interface is subject to change, this is
|
88
85
|
# especially true of file mappings which may be removed entirely in the
|
@@ -199,29 +196,29 @@ class IO
|
|
199
196
|
# -->
|
200
197
|
# Fill buffer with `value`, starting with `offset` and going for `length` bytes.
|
201
198
|
#
|
202
|
-
# buffer = IO::Buffer.for('test')
|
199
|
+
# buffer = IO::Buffer.for('test').dup
|
203
200
|
# # =>
|
204
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
201
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
205
202
|
# # 0x00000000 74 65 73 74 test
|
206
203
|
#
|
207
204
|
# buffer.clear
|
208
205
|
# # =>
|
209
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
206
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
210
207
|
# # 0x00000000 00 00 00 00 ....
|
211
208
|
#
|
212
209
|
# buf.clear(1) # fill with 1
|
213
210
|
# # =>
|
214
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
211
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
215
212
|
# # 0x00000000 01 01 01 01 ....
|
216
213
|
#
|
217
214
|
# buffer.clear(2, 1, 2) # fill with 2, starting from offset 1, for 2 bytes
|
218
215
|
# # =>
|
219
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
216
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
220
217
|
# # 0x00000000 01 02 02 01 ....
|
221
218
|
#
|
222
219
|
# buffer.clear(2, 1) # fill with 2, starting from offset 1
|
223
220
|
# # =>
|
224
|
-
# # <IO::Buffer 0x00007fca40087c38+4
|
221
|
+
# # <IO::Buffer 0x00007fca40087c38+4 INTERNAL>
|
225
222
|
# # 0x00000000 01 02 02 02 ....
|
226
223
|
#
|
227
224
|
def clear: (?Integer value, ?Integer offset, ?Integer length) -> self
|
@@ -231,7 +228,7 @@ class IO
|
|
231
228
|
# - copy(source, [offset, [length, [source_offset]]]) -> size
|
232
229
|
# -->
|
233
230
|
# Efficiently copy from a source IO::Buffer into the buffer, at `offset` using
|
234
|
-
# `
|
231
|
+
# `memmove`. For copying String instances, see #set_string.
|
235
232
|
#
|
236
233
|
# buffer = IO::Buffer.new(32)
|
237
234
|
# # =>
|
@@ -249,13 +246,14 @@ class IO
|
|
249
246
|
#
|
250
247
|
# #copy can be used to put buffer into strings associated with buffer:
|
251
248
|
#
|
252
|
-
# string= "
|
253
|
-
# # => "
|
254
|
-
# buffer = IO::Buffer.for(string)
|
255
|
-
#
|
249
|
+
# string = "data: "
|
250
|
+
# # => "data: "
|
251
|
+
# buffer = IO::Buffer.for(string) do |buffer|
|
252
|
+
# buffer.copy(IO::Buffer.for("test"), 5)
|
253
|
+
# end
|
256
254
|
# # => 4
|
257
255
|
# string
|
258
|
-
# # => "
|
256
|
+
# # => "data:test"
|
259
257
|
#
|
260
258
|
# Attempt to copy into a read-only buffer will fail:
|
261
259
|
#
|
@@ -279,6 +277,20 @@ class IO
|
|
279
277
|
# buffer.copy(IO::Buffer.for('test'), 0)
|
280
278
|
# # in `copy': Specified offset+length is bigger than the buffer size! (ArgumentError)
|
281
279
|
#
|
280
|
+
# It is safe to copy between memory regions that overlaps each other. In such
|
281
|
+
# case, the data is copied as if the data was first copied from the source
|
282
|
+
# buffer to a temporary buffer, and then copied from the temporary buffer to the
|
283
|
+
# destination buffer.
|
284
|
+
#
|
285
|
+
# buffer = IO::Buffer.new(10)
|
286
|
+
# buffer.set_string("0123456789")
|
287
|
+
# buffer.copy(buffer, 3, 7)
|
288
|
+
# # => 7
|
289
|
+
# buffer
|
290
|
+
# # =>
|
291
|
+
# # #<IO::Buffer 0x000056494f8ce440+10 INTERNAL>
|
292
|
+
# # 0x00000000 30 31 32 30 31 32 33 34 35 36 0120123456
|
293
|
+
#
|
282
294
|
def copy: (Buffer source, ?Integer offset, ?Integer length, ?Integer source_offset) -> Integer
|
283
295
|
|
284
296
|
# <!--
|
@@ -313,7 +325,6 @@ class IO
|
|
313
325
|
# * for a buffer created from scratch: free memory.
|
314
326
|
# * for a buffer created from string: undo the association.
|
315
327
|
#
|
316
|
-
#
|
317
328
|
# After the buffer is freed, no further operations can't be performed on it.
|
318
329
|
#
|
319
330
|
# You can resize a freed buffer to re-allocate it.
|
@@ -376,7 +387,6 @@ class IO
|
|
376
387
|
# * `:f64`: double, 8 bytes, little-endian
|
377
388
|
# * `:F64`: double, 8 bytes, big-endian
|
378
389
|
#
|
379
|
-
#
|
380
390
|
# A buffer type refers specifically to the type of binary buffer that is stored
|
381
391
|
# in the buffer. For example, a `:u32` buffer type is a 32-bit unsigned integer
|
382
392
|
# in little-endian format.
|
@@ -654,7 +664,7 @@ class IO
|
|
654
664
|
# - set_string(string, [offset, [length, [source_offset]]]) -> size
|
655
665
|
# -->
|
656
666
|
# Efficiently copy from a source String into the buffer, at `offset` using
|
657
|
-
# `
|
667
|
+
# `memmove`.
|
658
668
|
#
|
659
669
|
# buf = IO::Buffer.new(8)
|
660
670
|
# # =>
|
@@ -739,7 +749,7 @@ class IO
|
|
739
749
|
# bounds.
|
740
750
|
#
|
741
751
|
# string = 'test'
|
742
|
-
# buffer = IO::Buffer.for(string)
|
752
|
+
# buffer = IO::Buffer.for(string).dup
|
743
753
|
#
|
744
754
|
# slice = buffer.slice
|
745
755
|
# # =>
|
@@ -766,13 +776,9 @@ class IO
|
|
766
776
|
# # it is also visible at position 1 of the original buffer
|
767
777
|
# buffer
|
768
778
|
# # =>
|
769
|
-
# # #<IO::Buffer 0x00007fc3d31e2d80+4
|
779
|
+
# # #<IO::Buffer 0x00007fc3d31e2d80+4 INTERNAL>
|
770
780
|
# # 0x00000000 74 6f 73 74 tost
|
771
781
|
#
|
772
|
-
# # ...and original string
|
773
|
-
# string
|
774
|
-
# # => tost
|
775
|
-
#
|
776
782
|
def slice: (Integer offset, Integer length) -> Buffer
|
777
783
|
|
778
784
|
# <!--
|