diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock
index 5a0c849f8c..e85bb4ba71 100644
--- a/Library/Homebrew/Gemfile.lock
+++ b/Library/Homebrew/Gemfile.lock
@@ -4,7 +4,7 @@ GEM
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
ast (2.4.2)
- bindata (2.4.15)
+ bindata (2.5.0)
bootsnap (1.18.3)
msgpack (~> 1.2)
byebug (11.1.3)
diff --git a/Library/Homebrew/sorbet/rbi/gems/bindata@2.4.15.rbi b/Library/Homebrew/sorbet/rbi/gems/bindata@2.5.0.rbi
similarity index 75%
rename from Library/Homebrew/sorbet/rbi/gems/bindata@2.4.15.rbi
rename to Library/Homebrew/sorbet/rbi/gems/bindata@2.5.0.rbi
index 84fdca1045..e348c271d3 100644
--- a/Library/Homebrew/sorbet/rbi/gems/bindata@2.4.15.rbi
+++ b/Library/Homebrew/sorbet/rbi/gems/bindata@2.5.0.rbi
@@ -13,27 +13,27 @@ module BinData
# @yield [@tracer]
#
- # source://bindata//lib/bindata/trace.rb#40
+ # source://bindata//lib/bindata/trace.rb#41
def trace_message; end
# Turn on trace information when reading a BinData object.
# If +block+ is given then the tracing only occurs for that block.
# This is useful for debugging a BinData declaration.
#
- # source://bindata//lib/bindata/trace.rb#26
+ # source://bindata//lib/bindata/trace.rb#6
def trace_reading(io = T.unsafe(nil)); end
class << self
# @yield [@tracer]
#
- # source://bindata//lib/bindata/trace.rb#40
+ # source://bindata//lib/bindata/trace.rb#41
def trace_message; end
# Turn on trace information when reading a BinData object.
# If +block+ is given then the tracing only occurs for that block.
# This is useful for debugging a BinData declaration.
#
- # source://bindata//lib/bindata/trace.rb#26
+ # source://bindata//lib/bindata/trace.rb#6
def trace_reading(io = T.unsafe(nil)); end
end
end
@@ -115,7 +115,7 @@ class BinData::AcceptedParametersPlugin::AcceptedParameters
def to_syms(args); end
class << self
- # source://bindata//lib/bindata/params.rb#117
+ # source://bindata//lib/bindata/params.rb#118
def invalid_parameter_names; end
end
end
@@ -314,13 +314,40 @@ class BinData::Array < ::BinData::Base
def sum_num_bytes_for_all_elements; end
end
+# Logic for the :initial_length parameter
+#
+# source://bindata//lib/bindata/array.rb#311
+module BinData::Array::InitialLengthPlugin
+ # source://bindata//lib/bindata/array.rb#312
+ def do_read(io); end
+
+ # source://bindata//lib/bindata/array.rb#316
+ def elements; end
+end
+
+# Logic for the read_until: :eof parameter
+#
+# source://bindata//lib/bindata/array.rb#296
+module BinData::Array::ReadUntilEOFPlugin
+ # source://bindata//lib/bindata/array.rb#297
+ def do_read(io); end
+end
+
+# Logic for the :read_until parameter
+#
# source://bindata//lib/bindata/array.rb#284
-class BinData::ArrayArgProcessor < ::BinData::BaseArgProcessor
+module BinData::Array::ReadUntilPlugin
# source://bindata//lib/bindata/array.rb#285
+ def do_read(io); end
+end
+
+# source://bindata//lib/bindata/array.rb#329
+class BinData::ArrayArgProcessor < ::BinData::BaseArgProcessor
+ # source://bindata//lib/bindata/array.rb#330
def sanitize_parameters!(obj_class, params); end
end
-# Add these offset options to Base
+# This is the abstract base class for all data objects.
#
# source://bindata//lib/bindata/base.rb#11
class BinData::Base
@@ -331,30 +358,30 @@ class BinData::Base
# source://bindata//lib/bindata/warnings.rb#12
def initialize(*args); end
- # source://bindata//lib/bindata/base.rb#231
+ # source://bindata//lib/bindata/base.rb#221
def ==(other); end
# Override and delegate =~ as it is defined in Object.
#
- # source://bindata//lib/bindata/base.rb#199
+ # source://bindata//lib/bindata/base.rb#201
def =~(other); end
# Returns the offset (in bytes) of this object with respect to its most
# distant ancestor.
#
- # source://bindata//lib/bindata/base.rb#214
+ # source://bindata//lib/bindata/base.rb#212
def abs_offset; end
def base_respond_to?(*_arg0); end
# Resets the internal state to that of a newly created object.
#
- # source://bindata//lib/bindata/base.rb#137
+ # source://bindata//lib/bindata/base.rb#139
def clear; end
# Returns a user friendly name of this object for debugging purposes.
#
- # source://bindata//lib/bindata/base.rb#204
+ # source://bindata//lib/bindata/base.rb#206
def debug_name; end
# Returns the result of evaluating the parameter identified by +key+.
@@ -364,21 +391,21 @@ class BinData::Base
#
# Returns nil if +key+ does not refer to any parameter.
#
- # source://bindata//lib/bindata/base.rb#110
+ # source://bindata//lib/bindata/base.rb#112
def eval_parameter(key, overrides = T.unsafe(nil)); end
# Returns the parameter referenced by +key+.
# Use this method if you are sure the parameter is not to be evaluated.
# You most likely want #eval_parameter.
#
- # source://bindata//lib/bindata/base.rb#127
+ # source://bindata//lib/bindata/base.rb#129
def get_parameter(key); end
# Returns whether +key+ exists in the +parameters+ hash.
#
# @return [Boolean]
#
- # source://bindata//lib/bindata/base.rb#132
+ # source://bindata//lib/bindata/base.rb#134
def has_parameter?(key); end
# source://bindata//lib/bindata/warnings.rb#25
@@ -389,25 +416,27 @@ class BinData::Base
# Return a human readable representation of this data object.
#
- # source://bindata//lib/bindata/base.rb#184
+ # source://bindata//lib/bindata/base.rb#186
def inspect; end
# Returns a lazy evaluator for this object.
#
- # source://bindata//lib/bindata/base.rb#120
+ # source://bindata//lib/bindata/base.rb#122
def lazy_evaluator; end
# Creates a new data object based on this instance.
#
+ # This implements the prototype design pattern.
+ #
# All parameters will be be duplicated. Use this method
# when creating multiple objects with the same parameters.
#
- # source://bindata//lib/bindata/base.rb#95
+ # source://bindata//lib/bindata/base.rb#97
def new(value = T.unsafe(nil), parent = T.unsafe(nil)); end
# Returns the number of bytes it will take to write this data object.
#
- # source://bindata//lib/bindata/base.rb#167
+ # source://bindata//lib/bindata/base.rb#169
def num_bytes; end
# Returns the value of attribute parent.
@@ -417,17 +446,17 @@ class BinData::Base
# Work with Ruby's pretty-printer library.
#
- # source://bindata//lib/bindata/base.rb#194
+ # source://bindata//lib/bindata/base.rb#196
def pretty_print(pp); end
# Reads data into this data object.
#
- # source://bindata//lib/bindata/base.rb#142
+ # source://bindata//lib/bindata/base.rb#144
def read(io, &block); end
# Returns the offset (in bytes) of this object with respect to its parent.
#
- # source://bindata//lib/bindata/base.rb#223
+ # source://bindata//lib/bindata/base.rb#217
def rel_offset; end
# A version of +respond_to?+ used by the lazy evaluator. It doesn't
@@ -435,27 +464,27 @@ class BinData::Base
#
# @return [Boolean]
#
- # source://bindata//lib/bindata/base.rb#238
+ # source://bindata//lib/bindata/base.rb#228
def safe_respond_to?(symbol, include_private = T.unsafe(nil)); end
# Returns the string representation of this data object.
#
- # source://bindata//lib/bindata/base.rb#172
+ # source://bindata//lib/bindata/base.rb#174
def to_binary_s(&block); end
# Returns the hexadecimal string representation of this data object.
#
- # source://bindata//lib/bindata/base.rb#179
+ # source://bindata//lib/bindata/base.rb#181
def to_hex(&block); end
# Return a string representing this data object.
#
- # source://bindata//lib/bindata/base.rb#189
+ # source://bindata//lib/bindata/base.rb#191
def to_s; end
# Writes the value for this data object to +io+.
#
- # source://bindata//lib/bindata/base.rb#155
+ # source://bindata//lib/bindata/base.rb#157
def write(io, &block); end
protected
@@ -469,10 +498,10 @@ class BinData::Base
private
- # source://bindata//lib/bindata/base.rb#284
+ # source://bindata//lib/bindata/base.rb#274
def binary_string(str); end
- # source://bindata//lib/bindata/base.rb#247
+ # source://bindata//lib/bindata/base.rb#237
def extract_args(args); end
# Creates a new data object.
@@ -504,19 +533,19 @@ class BinData::Base
#
# @return [Boolean]
#
- # source://bindata//lib/bindata/base.rb#259
+ # source://bindata//lib/bindata/base.rb#249
def reading?; end
- # source://bindata//lib/bindata/base.rb#251
+ # source://bindata//lib/bindata/base.rb#241
def start_read; end
- # source://bindata//lib/bindata/base.rb#273
+ # source://bindata//lib/bindata/base.rb#263
def top_level; end
- # source://bindata//lib/bindata/base.rb#267
+ # source://bindata//lib/bindata/base.rb#257
def top_level_get(sym); end
- # source://bindata//lib/bindata/base.rb#263
+ # source://bindata//lib/bindata/base.rb#253
def top_level_set(sym, value); end
class << self
@@ -580,25 +609,25 @@ end
# Any passed parameters are sanitized so the BinData object doesn't
# need to perform error checking on the parameters.
#
-# source://bindata//lib/bindata/base.rb#294
+# source://bindata//lib/bindata/base.rb#284
class BinData::BaseArgProcessor
# Takes the arguments passed to BinData::Base.new and
# extracts [value, sanitized_parameters, parent].
#
- # source://bindata//lib/bindata/base.rb#299
+ # source://bindata//lib/bindata/base.rb#289
def extract_args(obj_class, obj_args); end
# Performs sanity checks on the given parameters.
# This method converts the parameters to the form expected
# by the data object.
#
- # source://bindata//lib/bindata/base.rb#332
+ # source://bindata//lib/bindata/base.rb#322
def sanitize_parameters!(obj_class, obj_params); end
# Separates the arguments passed to BinData::Base.new into
# [value, parameters, parent]. Called by #extract_args.
#
- # source://bindata//lib/bindata/base.rb#308
+ # source://bindata//lib/bindata/base.rb#298
def separate_args(_obj_class, obj_args); end
end
@@ -649,7 +678,9 @@ end
#
# source://bindata//lib/bindata/base_primitive.rb#49
class BinData::BasePrimitive < ::BinData::Base
- # source://bindata//lib/bindata/base_primitive.rb#115
+ extend ::BinData::TraceHook
+
+ # source://bindata//lib/bindata/base_primitive.rb#110
def <=>(other); end
# @raise [ArgumentError]
@@ -662,24 +693,24 @@ class BinData::BasePrimitive < ::BinData::Base
# source://bindata//lib/bindata/base_primitive.rb#68
def clear?; end
- # source://bindata//lib/bindata/base_primitive.rb#136
+ # source://bindata//lib/bindata/base_primitive.rb#131
def do_num_bytes; end
- # source://bindata//lib/bindata/base_primitive.rb#128
+ # source://bindata//lib/bindata/base_primitive.rb#123
def do_read(io); end
- # source://bindata//lib/bindata/trace.rb#58
+ # source://bindata//lib/bindata/trace.rb#66
def do_read_with_hook(io); end
- # source://bindata//lib/bindata/base_primitive.rb#132
+ # source://bindata//lib/bindata/base_primitive.rb#127
def do_write(io); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/base_primitive.rb#119
+ # source://bindata//lib/bindata/base_primitive.rb#114
def eql?(other); end
- # source://bindata//lib/bindata/base_primitive.rb#124
+ # source://bindata//lib/bindata/base_primitive.rb#119
def hash; end
# source://bindata//lib/bindata/base_primitive.rb#64
@@ -688,24 +719,16 @@ class BinData::BasePrimitive < ::BinData::Base
# source://bindata//lib/bindata/base_primitive.rb#56
def initialize_shared_instance; end
- # source://bindata//lib/bindata/base_primitive.rb#102
+ # source://bindata//lib/bindata/base_primitive.rb#96
def method_missing(symbol, *args, &block); end
- # @return [Boolean]
- #
- # source://bindata//lib/bindata/base_primitive.rb#97
- def respond_to?(symbol, include_private = T.unsafe(nil)); end
-
- # source://bindata//lib/bindata/base_primitive.rb#85
+ # source://bindata//lib/bindata/base_primitive.rb#79
def snapshot; end
- # source://bindata//lib/bindata/trace.rb#63
- def trace_value; end
-
- # source://bindata//lib/bindata/base_primitive.rb#89
+ # source://bindata//lib/bindata/base_primitive.rb#83
def value; end
- # source://bindata//lib/bindata/base_primitive.rb#93
+ # source://bindata//lib/bindata/base_primitive.rb#87
def value=(val); end
private
@@ -714,97 +737,105 @@ class BinData::BasePrimitive < ::BinData::Base
# method. This indirection is so that #snapshot can be overridden in
# subclasses to modify the presentation value.
#
- # source://bindata//lib/bindata/base_primitive.rb#146
+ # source://bindata//lib/bindata/base_primitive.rb#141
def _value; end
# Read a number of bytes from +io+ and return the value they represent.
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/base_primitive.rb#236
+ # source://bindata//lib/bindata/base_primitive.rb#240
def read_and_return_value(io); end
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/base_primitive.rb#91
+ def respond_to_missing?(symbol, include_all = T.unsafe(nil)); end
+
# Return a sensible default for this data.
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/base_primitive.rb#241
+ # source://bindata//lib/bindata/base_primitive.rb#245
def sensible_default; end
# Return the string representation that +val+ will take when written.
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/base_primitive.rb#231
+ # source://bindata//lib/bindata/base_primitive.rb#235
def value_to_binary_string(val); end
class << self
- # source://bindata//lib/bindata/alignment.rb#72
+ # source://bindata//lib/bindata/alignment.rb#80
def bit_aligned; end
# source://bindata//lib/bindata/base.rb#53
def inherited(subclass); end
-
- # source://bindata//lib/bindata/trace.rb#53
- def turn_off_tracing; end
-
- # source://bindata//lib/bindata/trace.rb#48
- def turn_on_tracing; end
end
end
# Logic for the :assert parameter
#
-# source://bindata//lib/bindata/base_primitive.rb#169
+# source://bindata//lib/bindata/base_primitive.rb#164
module BinData::BasePrimitive::AssertPlugin
# @raise [ValidityError]
#
- # source://bindata//lib/bindata/base_primitive.rb#180
+ # source://bindata//lib/bindata/base_primitive.rb#175
def assert!; end
- # source://bindata//lib/bindata/base_primitive.rb#170
+ # source://bindata//lib/bindata/base_primitive.rb#165
def assign(val); end
- # source://bindata//lib/bindata/base_primitive.rb#175
+ # source://bindata//lib/bindata/base_primitive.rb#170
def do_read(io); end
end
# Logic for the :asserted_value parameter
#
-# source://bindata//lib/bindata/base_primitive.rb#198
+# source://bindata//lib/bindata/base_primitive.rb#193
module BinData::BasePrimitive::AssertedValuePlugin
- # source://bindata//lib/bindata/base_primitive.rb#204
+ # source://bindata//lib/bindata/base_primitive.rb#199
def _value; end
- # source://bindata//lib/bindata/base_primitive.rb#213
+ # source://bindata//lib/bindata/base_primitive.rb#217
def assert!; end
- # source://bindata//lib/bindata/base_primitive.rb#217
+ # source://bindata//lib/bindata/base_primitive.rb#221
def assert_value(current_value); end
- # source://bindata//lib/bindata/base_primitive.rb#199
+ # The asserted value as a binary string.
+ #
+ # Rationale: while reading, +#to_binary_s+ will use the
+ # value read in, rather than the +:asserted_value+.
+ # This feature is used by Skip.
+ #
+ # source://bindata//lib/bindata/base_primitive.rb#208
+ def asserted_binary_s; end
+
+ # source://bindata//lib/bindata/base_primitive.rb#194
def assign(val); end
- # source://bindata//lib/bindata/base_primitive.rb#208
+ # source://bindata//lib/bindata/base_primitive.rb#212
def do_read(io); end
end
# Logic for the :initial_value parameter
#
-# source://bindata//lib/bindata/base_primitive.rb#162
+# source://bindata//lib/bindata/base_primitive.rb#157
module BinData::BasePrimitive::InitialValuePlugin
- # source://bindata//lib/bindata/base_primitive.rb#163
+ # source://bindata//lib/bindata/base_primitive.rb#158
def _value; end
end
# Logic for the :value parameter
#
-# source://bindata//lib/bindata/base_primitive.rb#151
+# source://bindata//lib/bindata/base_primitive.rb#146
module BinData::BasePrimitive::ValuePlugin
- # source://bindata//lib/bindata/base_primitive.rb#156
+ # source://bindata//lib/bindata/base_primitive.rb#151
def _value; end
- # source://bindata//lib/bindata/base_primitive.rb#152
+ # source://bindata//lib/bindata/base_primitive.rb#147
def assign(val); end
end
@@ -838,17 +869,17 @@ end
module BinData::BitAligned
# @return [Boolean]
#
- # source://bindata//lib/bindata/alignment.rb#55
+ # source://bindata//lib/bindata/alignment.rb#63
def bit_aligned?; end
- # source://bindata//lib/bindata/alignment.rb#63
+ # source://bindata//lib/bindata/alignment.rb#71
def do_num_bytes; end
# source://bindata//lib/bindata/alignment.rb#67
- def do_write(io); end
+ def do_read(io); end
- # source://bindata//lib/bindata/alignment.rb#59
- def read_and_return_value(io); end
+ # source://bindata//lib/bindata/alignment.rb#75
+ def do_write(io); end
end
# source://bindata//lib/bindata/alignment.rb#44
@@ -858,8 +889,14 @@ class BinData::BitAligned::BitAlignedIO
# source://bindata//lib/bindata/alignment.rb#45
def initialize(io); end
- # source://bindata//lib/bindata/alignment.rb#48
+ # source://bindata//lib/bindata/alignment.rb#49
+ def binary_string(str); end
+
+ # source://bindata//lib/bindata/alignment.rb#53
def readbytes(n); end
+
+ # source://bindata//lib/bindata/alignment.rb#58
+ def writebytes(str); end
end
# Defines a number of classes that contain a bit based integer.
@@ -983,13 +1020,13 @@ class BinData::Buffer < ::BinData::Base
# source://bindata//lib/bindata/buffer.rb#71
def clear?; end
- # source://bindata//lib/bindata/buffer.rb#103
+ # source://bindata//lib/bindata/buffer.rb#105
def do_num_bytes; end
# source://bindata//lib/bindata/buffer.rb#91
def do_read(io); end
- # source://bindata//lib/bindata/buffer.rb#97
+ # source://bindata//lib/bindata/buffer.rb#98
def do_write(io); end
# source://bindata//lib/bindata/buffer.rb#62
@@ -1003,45 +1040,63 @@ class BinData::Buffer < ::BinData::Base
# source://bindata//lib/bindata/buffer.rb#67
def raw_num_bytes; end
+ # source://bindata//lib/bindata/buffer.rb#79
+ def snapshot; end
+
+ private
+
# @return [Boolean]
#
# source://bindata//lib/bindata/buffer.rb#83
- def respond_to?(symbol, include_private = T.unsafe(nil)); end
-
- # source://bindata//lib/bindata/buffer.rb#79
- def snapshot; end
+ def respond_to_missing?(symbol, include_all = T.unsafe(nil)); end
end
-# source://bindata//lib/bindata/buffer.rb#108
+# Transforms the IO stream to restrict access inside
+# a buffer of specified length.
+#
+# source://bindata//lib/bindata/buffer.rb#111
+class BinData::Buffer::BufferIO < ::BinData::IO::Transform
+ # @return [BufferIO] a new instance of BufferIO
+ #
+ # source://bindata//lib/bindata/buffer.rb#112
+ def initialize(length); end
+
+ # source://bindata//lib/bindata/buffer.rb#161
+ def after_read_transform; end
+
+ # source://bindata//lib/bindata/buffer.rb#165
+ def after_write_transform; end
+
+ # source://bindata//lib/bindata/buffer.rb#117
+ def before_transform; end
+
+ # source://bindata//lib/bindata/buffer.rb#169
+ def buffer_limited_n(n); end
+
+ # source://bindata//lib/bindata/buffer.rb#122
+ def num_bytes_remaining; end
+
+ # source://bindata//lib/bindata/buffer.rb#144
+ def read(n); end
+
+ # source://bindata//lib/bindata/buffer.rb#135
+ def seek_abs(n); end
+
+ # source://bindata//lib/bindata/buffer.rb#128
+ def skip(n); end
+
+ # source://bindata//lib/bindata/buffer.rb#151
+ def write(data); end
+end
+
+# source://bindata//lib/bindata/buffer.rb#186
class BinData::BufferArgProcessor < ::BinData::BaseArgProcessor
include ::BinData::MultiFieldArgSeparator
- # source://bindata//lib/bindata/buffer.rb#111
+ # source://bindata//lib/bindata/buffer.rb#189
def sanitize_parameters!(obj_class, params); end
end
-# Align fields to a multiple of :byte_align
-#
-# source://bindata//lib/bindata/struct.rb#294
-module BinData::ByteAlignPlugin
- # @return [Boolean]
- #
- # source://bindata//lib/bindata/struct.rb#343
- def align_obj?(obj); end
-
- # source://bindata//lib/bindata/struct.rb#338
- def bytes_to_align(obj, rel_offset); end
-
- # source://bindata//lib/bindata/struct.rb#295
- def do_read(io); end
-
- # source://bindata//lib/bindata/struct.rb#308
- def do_write(io); end
-
- # source://bindata//lib/bindata/struct.rb#321
- def sum_num_bytes_below_index(index); end
-end
-
# A Choice is a collection of data objects of which only one is active
# at any particular time. Method calls will be delegated to the active
# choice.
@@ -1101,13 +1156,14 @@ end
# source://bindata//lib/bindata/choice.rb#60
class BinData::Choice < ::BinData::Base
extend ::BinData::DSLMixin
+ extend ::BinData::TraceHook
def assign(*args); end
def clear?(*args); end
def do_num_bytes(*args); end
def do_read(*args); end
- # source://bindata//lib/bindata/trace.rb#83
+ # source://bindata//lib/bindata/trace.rb#79
def do_read_with_hook(io); end
def do_write(*args); end
@@ -1118,13 +1174,13 @@ class BinData::Choice < ::BinData::Base
# source://bindata//lib/bindata/choice.rb#69
def initialize_shared_instance; end
- # source://bindata//lib/bindata/choice.rb#92
+ # source://bindata//lib/bindata/choice.rb#93
def method_missing(symbol, *args, &block); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/choice.rb#88
- def respond_to?(symbol, include_private = T.unsafe(nil)); end
+ # source://bindata//lib/bindata/choice.rb#89
+ def respond_to?(symbol, include_all = T.unsafe(nil)); end
# Returns the current selection.
#
@@ -1133,57 +1189,46 @@ class BinData::Choice < ::BinData::Base
def snapshot(*args); end
- # source://bindata//lib/bindata/trace.rb#88
- def trace_selection; end
-
private
- # source://bindata//lib/bindata/choice.rb#107
+ # source://bindata//lib/bindata/choice.rb#108
def current_choice; end
- # source://bindata//lib/bindata/choice.rb#112
+ # source://bindata//lib/bindata/choice.rb#113
def instantiate_choice(selection); end
-
- class << self
- # source://bindata//lib/bindata/trace.rb#78
- def turn_off_tracing; end
-
- # source://bindata//lib/bindata/trace.rb#73
- def turn_on_tracing; end
- end
end
-# source://bindata//lib/bindata/choice.rb#121
+# source://bindata//lib/bindata/choice.rb#124
class BinData::ChoiceArgProcessor < ::BinData::BaseArgProcessor
- # source://bindata//lib/bindata/choice.rb#122
+ # source://bindata//lib/bindata/choice.rb#125
def sanitize_parameters!(obj_class, params); end
private
- # source://bindata//lib/bindata/choice.rb#135
+ # source://bindata//lib/bindata/choice.rb#138
def choices_as_hash(choices); end
- # source://bindata//lib/bindata/choice.rb#151
+ # source://bindata//lib/bindata/choice.rb#154
def ensure_valid_keys(choices); end
- # source://bindata//lib/bindata/choice.rb#143
+ # source://bindata//lib/bindata/choice.rb#146
def key_array_by_index(array); end
end
# Logic for the :copy_on_change parameter
#
-# source://bindata//lib/bindata/choice.rb#162
+# source://bindata//lib/bindata/choice.rb#165
module BinData::CopyOnChangePlugin
- # source://bindata//lib/bindata/choice.rb#169
+ # source://bindata//lib/bindata/choice.rb#172
def copy_previous_value(obj); end
- # source://bindata//lib/bindata/choice.rb#163
+ # source://bindata//lib/bindata/choice.rb#166
def current_choice; end
- # source://bindata//lib/bindata/choice.rb#176
+ # source://bindata//lib/bindata/choice.rb#179
def get_previous_choice(selection); end
- # source://bindata//lib/bindata/choice.rb#182
+ # source://bindata//lib/bindata/choice.rb#185
def remember_current_selection(selection); end
end
@@ -1238,128 +1283,128 @@ end
# This option creates two subclasses, each handling
# :big or :little endian.
#
-# source://bindata//lib/bindata/dsl.rb#255
+# source://bindata//lib/bindata/dsl.rb#256
class BinData::DSLMixin::DSLBigAndLittleEndianHandler
class << self
- # source://bindata//lib/bindata/dsl.rb#323
+ # source://bindata//lib/bindata/dsl.rb#324
def class_with_endian(class_name, endian); end
- # source://bindata//lib/bindata/dsl.rb#269
+ # source://bindata//lib/bindata/dsl.rb#270
def create_subclasses_with_endian(bnl_class); end
- # source://bindata//lib/bindata/dsl.rb#290
+ # source://bindata//lib/bindata/dsl.rb#291
def delegate_field_creation(bnl_class); end
- # source://bindata//lib/bindata/dsl.rb#303
+ # source://bindata//lib/bindata/dsl.rb#304
def fixup_subclass_hierarchy(bnl_class); end
- # source://bindata//lib/bindata/dsl.rb#257
+ # source://bindata//lib/bindata/dsl.rb#258
def handle(bnl_class); end
- # source://bindata//lib/bindata/dsl.rb#265
+ # source://bindata//lib/bindata/dsl.rb#266
def make_class_abstract(bnl_class); end
- # source://bindata//lib/bindata/dsl.rb#331
+ # source://bindata//lib/bindata/dsl.rb#332
def obj_attribute(obj, attr); end
- # source://bindata//lib/bindata/dsl.rb#274
+ # source://bindata//lib/bindata/dsl.rb#275
def override_new_in_class(bnl_class); end
end
end
# Extracts the details from a field declaration.
#
-# source://bindata//lib/bindata/dsl.rb#338
+# source://bindata//lib/bindata/dsl.rb#339
class BinData::DSLMixin::DSLFieldParser
# @return [DSLFieldParser] a new instance of DSLFieldParser
#
- # source://bindata//lib/bindata/dsl.rb#339
+ # source://bindata//lib/bindata/dsl.rb#340
def initialize(hints, symbol, *args, &block); end
# Returns the value of attribute name.
#
- # source://bindata//lib/bindata/dsl.rb#346
+ # source://bindata//lib/bindata/dsl.rb#347
def name; end
- # source://bindata//lib/bindata/dsl.rb#348
+ # source://bindata//lib/bindata/dsl.rb#349
def name_from_field_declaration(args); end
# Returns the value of attribute params.
#
- # source://bindata//lib/bindata/dsl.rb#346
+ # source://bindata//lib/bindata/dsl.rb#347
def params; end
- # source://bindata//lib/bindata/dsl.rb#367
+ # source://bindata//lib/bindata/dsl.rb#368
def params_from_args(args); end
- # source://bindata//lib/bindata/dsl.rb#374
+ # source://bindata//lib/bindata/dsl.rb#375
def params_from_block(&block); end
- # source://bindata//lib/bindata/dsl.rb#357
+ # source://bindata//lib/bindata/dsl.rb#358
def params_from_field_declaration(args, &block); end
# Returns the value of attribute type.
#
- # source://bindata//lib/bindata/dsl.rb#346
+ # source://bindata//lib/bindata/dsl.rb#347
def type; end
end
# Validates a field defined in a DSLMixin.
#
-# source://bindata//lib/bindata/dsl.rb#398
+# source://bindata//lib/bindata/dsl.rb#400
class BinData::DSLMixin::DSLFieldValidator
# @return [DSLFieldValidator] a new instance of DSLFieldValidator
#
- # source://bindata//lib/bindata/dsl.rb#399
+ # source://bindata//lib/bindata/dsl.rb#401
def initialize(the_class, parser); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#448
+ # source://bindata//lib/bindata/dsl.rb#450
def all_or_none_names_failed?(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#463
+ # source://bindata//lib/bindata/dsl.rb#465
def duplicate_name?(name); end
- # source://bindata//lib/bindata/dsl.rb#420
+ # source://bindata//lib/bindata/dsl.rb#422
def ensure_valid_name(name); end
- # source://bindata//lib/bindata/dsl.rb#475
+ # source://bindata//lib/bindata/dsl.rb#477
def fields; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#459
+ # source://bindata//lib/bindata/dsl.rb#461
def malformed_name?(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#444
+ # source://bindata//lib/bindata/dsl.rb#446
def must_have_a_name_failed?(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#440
+ # source://bindata//lib/bindata/dsl.rb#442
def must_not_have_a_name_failed?(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#471
+ # source://bindata//lib/bindata/dsl.rb#473
def name_is_reserved?(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#467
+ # source://bindata//lib/bindata/dsl.rb#469
def name_shadows_method?(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#479
+ # source://bindata//lib/bindata/dsl.rb#481
def option?(opt); end
- # source://bindata//lib/bindata/dsl.rb#404
+ # source://bindata//lib/bindata/dsl.rb#406
def validate_field(name); end
end
@@ -1404,57 +1449,57 @@ class BinData::DSLMixin::DSLParser
private
- # source://bindata//lib/bindata/dsl.rb#190
+ # source://bindata//lib/bindata/dsl.rb#191
def append_field(type, name, params); end
# @raise [exception]
#
- # source://bindata//lib/bindata/dsl.rb#206
+ # source://bindata//lib/bindata/dsl.rb#207
def dsl_raise(exception, msg); end
- # source://bindata//lib/bindata/dsl.rb#142
+ # source://bindata//lib/bindata/dsl.rb#143
def ensure_hints; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#176
+ # source://bindata//lib/bindata/dsl.rb#177
def fields?; end
- # source://bindata//lib/bindata/dsl.rb#147
+ # source://bindata//lib/bindata/dsl.rb#148
def hints; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#138
+ # source://bindata//lib/bindata/dsl.rb#139
def option?(opt); end
- # source://bindata//lib/bindata/dsl.rb#196
+ # source://bindata//lib/bindata/dsl.rb#197
def parent_attribute(attr, default = T.unsafe(nil)); end
- # source://bindata//lib/bindata/dsl.rb#172
+ # source://bindata//lib/bindata/dsl.rb#173
def parent_fields; end
- # source://bindata//lib/bindata/dsl.rb#180
+ # source://bindata//lib/bindata/dsl.rb#181
def parse_and_append_field(*args, &block); end
# source://bindata//lib/bindata/dsl.rb#126
def parser_abilities; end
- # source://bindata//lib/bindata/dsl.rb#151
+ # source://bindata//lib/bindata/dsl.rb#152
def set_endian(endian); end
- # source://bindata//lib/bindata/dsl.rb#224
+ # source://bindata//lib/bindata/dsl.rb#225
def to_choice_params(key); end
- # source://bindata//lib/bindata/dsl.rb#213
+ # source://bindata//lib/bindata/dsl.rb#214
def to_object_params(key); end
- # source://bindata//lib/bindata/dsl.rb#236
- def to_struct_params(*unused); end
+ # source://bindata//lib/bindata/dsl.rb#237
+ def to_struct_params(*_); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/dsl.rb#168
+ # source://bindata//lib/bindata/dsl.rb#169
def valid_endian?(endian); end
end
@@ -1563,11 +1608,6 @@ class BinData::DelayedIO < ::BinData::Base
# source://bindata//lib/bindata/delayed_io.rb#103
def rel_offset; end
- # @return [Boolean]
- #
- # source://bindata//lib/bindata/delayed_io.rb#86
- def respond_to?(symbol, include_private = T.unsafe(nil)); end
-
# source://bindata//lib/bindata/delayed_io.rb#78
def snapshot; end
@@ -1578,6 +1618,13 @@ class BinData::DelayedIO < ::BinData::Base
#
# source://bindata//lib/bindata/delayed_io.rb#137
def write_now!; end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/delayed_io.rb#86
+ def respond_to_missing?(symbol, include_all = T.unsafe(nil)); end
end
# source://bindata//lib/bindata/delayed_io.rb#146
@@ -1670,14 +1717,14 @@ module BinData::Framework
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/framework.rb#29
+ # source://bindata//lib/bindata/framework.rb#27
def assign(val); end
# Is this object aligned on non-byte boundaries?
#
# @return [Boolean]
#
- # source://bindata//lib/bindata/framework.rb#51
+ # source://bindata//lib/bindata/framework.rb#49
def bit_aligned?; end
# Returns true if the object has not been changed since creation.
@@ -1685,26 +1732,26 @@ module BinData::Framework
# @raise [NotImplementedError]
# @return [Boolean]
#
- # source://bindata//lib/bindata/framework.rb#23
+ # source://bindata//lib/bindata/framework.rb#21
def clear?; end
# Returns the debug name of +child+. This only needs to be implemented
# by objects that contain child objects.
#
- # source://bindata//lib/bindata/framework.rb#40
+ # source://bindata//lib/bindata/framework.rb#38
def debug_name_of(child); end
# Returns the offset of +child+. This only needs to be implemented
# by objects that contain child objects.
#
- # source://bindata//lib/bindata/framework.rb#46
+ # source://bindata//lib/bindata/framework.rb#44
def offset_of(child); end
# Returns a snapshot of this data object.
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/framework.rb#34
+ # source://bindata//lib/bindata/framework.rb#32
def snapshot; end
protected
@@ -1713,21 +1760,21 @@ module BinData::Framework
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/framework.rb#66
+ # source://bindata//lib/bindata/framework.rb#64
def do_num_bytes; end
# Reads the data for this data object from +io+.
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/framework.rb#56
+ # source://bindata//lib/bindata/framework.rb#54
def do_read(io); end
# Writes the value for this data to +io+.
#
# @raise [NotImplementedError]
#
- # source://bindata//lib/bindata/framework.rb#61
+ # source://bindata//lib/bindata/framework.rb#59
def do_write(io); end
# Initializes the state of the object. All instance variables that
@@ -1743,7 +1790,7 @@ module BinData::Framework
# between all objects that are initialized with the same parameters.
# This method is called only once for a particular set of parameters.
#
- # source://bindata//lib/bindata/framework.rb#19
+ # source://bindata//lib/bindata/framework.rb#18
def initialize_shared_instance; end
end
@@ -1755,106 +1802,49 @@ module BinData::IO
class << self
# Creates a StringIO around +str+.
#
- # source://bindata//lib/bindata/io.rb#215
+ # source://bindata//lib/bindata/io.rb#9
def create_string_io(str = T.unsafe(nil)); end
end
end
-# Common operations for both Read and Write.
+# API used to access the raw data stream.
#
-# source://bindata//lib/bindata/io.rb#9
-module BinData::IO::Common
- # source://bindata//lib/bindata/io.rb#10
+# source://bindata//lib/bindata/io.rb#315
+class BinData::IO::RawIO
+ # @return [RawIO] a new instance of RawIO
+ #
+ # source://bindata//lib/bindata/io.rb#316
def initialize(io); end
- private
-
- # source://bindata//lib/bindata/io.rb#40
- def buffer_limited_n(n); end
-
- # source://bindata//lib/bindata/io.rb#36
- def seek(n); end
-
# @return [Boolean]
#
- # source://bindata//lib/bindata/io.rb#30
+ # source://bindata//lib/bindata/io.rb#327
+ def is_seekable?(io); end
+
+ # source://bindata//lib/bindata/io.rb#337
+ def num_bytes_remaining; end
+
+ # source://bindata//lib/bindata/io.rb#346
+ def offset; end
+
+ # source://bindata//lib/bindata/io.rb#361
+ def read(n); end
+
+ # source://bindata//lib/bindata/io.rb#356
+ def seek_abs(n); end
+
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/io.rb#333
def seekable?; end
- # source://bindata//lib/bindata/io.rb#54
- def with_buffer_common(n); end
-end
-
-# Use #seek and #pos on seekable streams
-#
-# source://bindata//lib/bindata/io.rb#69
-module BinData::IO::Common::SeekableStream
- # The number of bytes remaining in the input stream.
- #
- # source://bindata//lib/bindata/io.rb#71
- def num_bytes_remaining; end
-
- # All io calls in +block+ are rolled back after this
- # method completes.
- #
- # source://bindata//lib/bindata/io.rb#90
- def with_readahead; end
-
- private
-
- # source://bindata//lib/bindata/io.rb#106
- def offset_raw; end
-
- # source://bindata//lib/bindata/io.rb#114
- def read_raw(n); end
-
- # source://bindata//lib/bindata/io.rb#110
- def seek_raw(n); end
-
- # source://bindata//lib/bindata/io.rb#102
- def stream_init; end
-
- # source://bindata//lib/bindata/io.rb#118
- def write_raw(data); end
-end
-
-# Manually keep track of offset for unseekable streams.
-#
-# source://bindata//lib/bindata/io.rb#124
-module BinData::IO::Common::UnSeekableStream
- # The number of bytes remaining in the input stream.
- #
# @raise [IOError]
#
- # source://bindata//lib/bindata/io.rb#130
- def num_bytes_remaining; end
+ # source://bindata//lib/bindata/io.rb#350
+ def skip(n); end
- # source://bindata//lib/bindata/io.rb#125
- def offset_raw; end
-
- # All io calls in +block+ are rolled back after this
- # method completes.
- #
- # source://bindata//lib/bindata/io.rb#136
- def with_readahead; end
-
- private
-
- # source://bindata//lib/bindata/io.rb#161
- def read_raw(n); end
-
- # source://bindata//lib/bindata/io.rb#167
- def read_raw_with_readahead(n); end
-
- # @raise [IOError]
- #
- # source://bindata//lib/bindata/io.rb#199
- def seek_raw(n); end
-
- # source://bindata//lib/bindata/io.rb#157
- def stream_init; end
-
- # source://bindata//lib/bindata/io.rb#194
- def write_raw(data); end
+ # source://bindata//lib/bindata/io.rb#365
+ def write(data); end
end
# Create a new IO Read wrapper around +io+. +io+ must provide #read,
@@ -1874,30 +1864,27 @@ end
# In little endian format:
# readbits(6), readbits(5) #=> [543210, a9876]
#
-# source://bindata//lib/bindata/io.rb#238
+# source://bindata//lib/bindata/io.rb#31
class BinData::IO::Read
- include ::BinData::IO::Common
-
# @return [Read] a new instance of Read
#
- # source://bindata//lib/bindata/io.rb#241
+ # source://bindata//lib/bindata/io.rb#32
def initialize(io); end
- # Returns the current offset of the io stream. Offset will be rounded
- # up when reading bitfields.
+ # The number of bytes remaining in the io steam.
#
- # source://bindata//lib/bindata/io.rb#261
- def offset; end
+ # source://bindata//lib/bindata/io.rb#68
+ def num_bytes_remaining; end
# Reads all remaining bytes from the stream.
#
- # source://bindata//lib/bindata/io.rb#282
+ # source://bindata//lib/bindata/io.rb#95
def read_all_bytes; end
# Reads exactly +nbits+ bits from the stream. +endian+ specifies whether
# the bits are stored in +:big+ or +:little+ endian format.
#
- # source://bindata//lib/bindata/io.rb#289
+ # source://bindata//lib/bindata/io.rb#102
def readbits(nbits, endian); end
# Reads exactly +n+ bytes from +io+.
@@ -1906,47 +1893,204 @@ class BinData::IO::Read
#
# If the data read is too short an IOError is raised.
#
- # source://bindata//lib/bindata/io.rb#276
+ # source://bindata//lib/bindata/io.rb#89
def readbytes(n); end
# Discards any read bits so the stream becomes aligned at the
# next byte boundary.
#
- # source://bindata//lib/bindata/io.rb#305
+ # source://bindata//lib/bindata/io.rb#118
def reset_read_bits; end
+ # Seek to an absolute offset within the io stream.
+ #
+ # source://bindata//lib/bindata/io.rb#79
+ def seek_to_abs_offset(n); end
+
# Seek +n+ bytes from the current position in the io stream.
#
- # source://bindata//lib/bindata/io.rb#266
- def seekbytes(n); end
+ # source://bindata//lib/bindata/io.rb#73
+ def skipbytes(n); end
- # Sets a buffer of +n+ bytes on the io stream. Any reading or seeking
- # calls inside the +block+ will be contained within this buffer.
+ # Allow transforming data in the input stream.
+ # See +BinData::Buffer+ as an example.
#
- # source://bindata//lib/bindata/io.rb#252
- def with_buffer(n); end
+ # +io+ must be an instance of +Transform+.
+ #
+ # yields +self+ and +io+ to the given block
+ #
+ # source://bindata//lib/bindata/io.rb#56
+ def transform(io); end
private
- # source://bindata//lib/bindata/io.rb#334
+ # source://bindata//lib/bindata/io.rb#147
def accumulate_big_endian_bits; end
- # source://bindata//lib/bindata/io.rb#352
+ # source://bindata//lib/bindata/io.rb#165
def accumulate_little_endian_bits; end
- # source://bindata//lib/bindata/io.rb#358
+ # source://bindata//lib/bindata/io.rb#171
def mask(nbits); end
- # source://bindata//lib/bindata/io.rb#313
+ # source://bindata//lib/bindata/io.rb#126
def read(n = T.unsafe(nil)); end
- # source://bindata//lib/bindata/io.rb#322
+ # source://bindata//lib/bindata/io.rb#135
def read_big_endian_bits(nbits); end
- # source://bindata//lib/bindata/io.rb#340
+ # source://bindata//lib/bindata/io.rb#153
def read_little_endian_bits(nbits); end
end
+# An IO stream may be transformed before processing.
+# e.g. encoding, compression, buffered.
+#
+# Multiple transforms can be chained together.
+#
+# To create a new transform layer, subclass +Transform+.
+# Override the public methods +#read+ and +#write+ at a minimum.
+# Additionally the hook, +#before_transform+, +#after_read_transform+
+# and +#after_write_transform+ are available as well.
+#
+# IMPORTANT! If your transform changes the size of the underlying
+# data stream (e.g. compression), then call
+# +::transform_changes_stream_length!+ in your subclass.
+#
+# source://bindata//lib/bindata/io.rb#383
+class BinData::IO::Transform
+ # @return [Transform] a new instance of Transform
+ #
+ # source://bindata//lib/bindata/io.rb#392
+ def initialize; end
+
+ # Flushes the input stream.
+ #
+ # Called after the final read operation.
+ #
+ # source://bindata//lib/bindata/io.rb#404
+ def after_read_transform; end
+
+ # Flushes the output stream.
+ #
+ # Called after the final write operation.
+ #
+ # source://bindata//lib/bindata/io.rb#409
+ def after_write_transform; end
+
+ # Initialises this transform.
+ #
+ # Called before any IO operations.
+ #
+ # source://bindata//lib/bindata/io.rb#399
+ def before_transform; end
+
+ # How many bytes are available for reading?
+ #
+ # source://bindata//lib/bindata/io.rb#426
+ def num_bytes_remaining; end
+
+ # The current offset within the stream.
+ #
+ # source://bindata//lib/bindata/io.rb#431
+ def offset; end
+
+ # Prepends this transform to the given +chain+.
+ #
+ # Returns self (the new head of chain).
+ #
+ # source://bindata//lib/bindata/io.rb#414
+ def prepend_to_chain(chain); end
+
+ # Reads +n+ bytes from the stream.
+ #
+ # source://bindata//lib/bindata/io.rb#446
+ def read(n); end
+
+ # Seeks to the given absolute position.
+ #
+ # source://bindata//lib/bindata/io.rb#441
+ def seek_abs(n); end
+
+ # Is the IO seekable?
+ #
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/io.rb#421
+ def seekable?; end
+
+ # Skips forward +n+ bytes in the input stream.
+ #
+ # source://bindata//lib/bindata/io.rb#436
+ def skip(n); end
+
+ # Writes +data+ to the stream.
+ #
+ # source://bindata//lib/bindata/io.rb#451
+ def write(data); end
+
+ private
+
+ # source://bindata//lib/bindata/io.rb#466
+ def chain_num_bytes_remaining; end
+
+ # source://bindata//lib/bindata/io.rb#470
+ def chain_offset; end
+
+ # source://bindata//lib/bindata/io.rb#482
+ def chain_read(n); end
+
+ # source://bindata//lib/bindata/io.rb#478
+ def chain_seek_abs(n); end
+
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/io.rb#462
+ def chain_seekable?; end
+
+ # source://bindata//lib/bindata/io.rb#474
+ def chain_skip(n); end
+
+ # source://bindata//lib/bindata/io.rb#486
+ def chain_write(data); end
+
+ # source://bindata//lib/bindata/io.rb#458
+ def create_empty_binary_string; end
+
+ class << self
+ # Indicates that this transform changes the length of the
+ # underlying data. e.g. performs compression or error correction
+ #
+ # source://bindata//lib/bindata/io.rb#387
+ def transform_changes_stream_length!; end
+ end
+end
+
+# A module to be prepended to +RawIO+ or +Transform+ when the data
+# stream is not seekable. This is either due to underlying stream
+# being unseekable or the transform changes the number of bytes.
+#
+# source://bindata//lib/bindata/io.rb#494
+module BinData::IO::UnSeekableIO
+ # @raise [IOError]
+ #
+ # source://bindata//lib/bindata/io.rb#499
+ def num_bytes_remaining; end
+
+ # source://bindata//lib/bindata/io.rb#514
+ def seek_abs(n); end
+
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/io.rb#495
+ def seekable?; end
+
+ # @raise [IOError]
+ #
+ # source://bindata//lib/bindata/io.rb#503
+ def skip(n); end
+end
+
# Create a new IO Write wrapper around +io+. +io+ must provide #write.
# If +io+ is a string it will be automatically wrapped in an StringIO
# object.
@@ -1955,81 +2099,66 @@ end
#
# See IO::Read for more information.
#
-# source://bindata//lib/bindata/io.rb#370
+# source://bindata//lib/bindata/io.rb#183
class BinData::IO::Write
- include ::BinData::IO::Common
-
# @return [Write] a new instance of Write
#
- # source://bindata//lib/bindata/io.rb#372
+ # source://bindata//lib/bindata/io.rb#184
def initialize(io); end
# To be called after all +writebits+ have been applied.
#
- # source://bindata//lib/bindata/io.rb#428
+ # source://bindata//lib/bindata/io.rb#251
def flush; end
# To be called after all +writebits+ have been applied.
#
- # source://bindata//lib/bindata/io.rb#428
+ # source://bindata//lib/bindata/io.rb#251
def flushbits; end
- # Returns the current offset of the io stream. Offset will be rounded
- # up when writing bitfields.
+ # Seek to an absolute offset within the io stream.
#
- # source://bindata//lib/bindata/io.rb#393
- def offset; end
+ # @raise [IOError]
+ #
+ # source://bindata//lib/bindata/io.rb#219
+ def seek_to_abs_offset(n); end
- # Seek +n+ bytes from the current position in the io stream.
+ # Allow transforming data in the output stream.
+ # See +BinData::Buffer+ as an example.
#
- # source://bindata//lib/bindata/io.rb#398
- def seekbytes(n); end
-
- # Sets a buffer of +n+ bytes on the io stream. Any writes inside the
- # +block+ will be contained within this buffer. If less than +n+ bytes
- # are written inside the block, the remainder will be padded with '\0'
- # bytes.
+ # +io+ must be an instance of +Transform+.
#
- # source://bindata//lib/bindata/io.rb#384
- def with_buffer(n); end
+ # yields +self+ and +io+ to the given block
+ #
+ # source://bindata//lib/bindata/io.rb#207
+ def transform(io); end
# Writes +nbits+ bits from +val+ to the stream. +endian+ specifies whether
# the bits are to be stored in +:big+ or +:little+ endian format.
#
- # source://bindata//lib/bindata/io.rb#411
+ # source://bindata//lib/bindata/io.rb#234
def writebits(val, nbits, endian); end
# Writes the given string of bytes to the io stream.
#
- # source://bindata//lib/bindata/io.rb#404
+ # source://bindata//lib/bindata/io.rb#227
def writebytes(str); end
private
- # source://bindata//lib/bindata/io.rb#491
+ # source://bindata//lib/bindata/io.rb#309
def mask(nbits); end
- # source://bindata//lib/bindata/io.rb#440
+ # source://bindata//lib/bindata/io.rb#263
def write(data); end
- # source://bindata//lib/bindata/io.rb#449
+ # source://bindata//lib/bindata/io.rb#267
def write_big_endian_bits(val, nbits); end
- # source://bindata//lib/bindata/io.rb#470
+ # source://bindata//lib/bindata/io.rb#288
def write_little_endian_bits(val, nbits); end
end
-# Logic for the :initial_length parameter
-#
-# source://bindata//lib/bindata/array.rb#328
-module BinData::InitialLengthPlugin
- # source://bindata//lib/bindata/array.rb#329
- def do_read(io); end
-
- # source://bindata//lib/bindata/array.rb#333
- def elements; end
-end
-
# Defines a number of classes that contain an integer. The integer
# is defined by endian, signedness and number of bytes.
#
@@ -2057,7 +2186,7 @@ module BinData::Int
def create_raw_read_code(nbits, endian, signed); end
# source://bindata//lib/bindata/int.rb#101
- def create_read_assemble_code(nbits, endian, signed); end
+ def create_read_assemble_code(nbits, endian); end
# source://bindata//lib/bindata/int.rb#72
def create_read_code(nbits, endian, signed); end
@@ -2080,7 +2209,7 @@ module BinData::Int
def pack_directive(nbits, endian, signed); end
# source://bindata//lib/bindata/int.rb#130
- def val_as_packed_words(nbits, endian, signed); end
+ def val_as_packed_words(nbits, endian); end
end
end
@@ -2301,7 +2430,7 @@ class BinData::Primitive < ::BinData::BasePrimitive
def set(v); end
class << self
- # source://bindata//lib/bindata/alignment.rb#76
+ # source://bindata//lib/bindata/alignment.rb#84
def bit_aligned; end
end
end
@@ -2312,22 +2441,6 @@ class BinData::PrimitiveArgProcessor < ::BinData::BaseArgProcessor
def sanitize_parameters!(obj_class, params); end
end
-# Logic for the read_until: :eof parameter
-#
-# source://bindata//lib/bindata/array.rb#313
-module BinData::ReadUntilEOFPlugin
- # source://bindata//lib/bindata/array.rb#314
- def do_read(io); end
-end
-
-# Logic for the :read_until parameter
-#
-# source://bindata//lib/bindata/array.rb#301
-module BinData::ReadUntilPlugin
- # source://bindata//lib/bindata/array.rb#302
- def do_read(io); end
-end
-
# A Record is a declarative wrapper around Struct.
#
# See +Struct+ for more info.
@@ -2399,40 +2512,40 @@ BinData::RegisteredClasses = T.let(T.unsafe(nil), BinData::Registry)
class BinData::Registry
# @return [Registry] a new instance of Registry
#
- # source://bindata//lib/bindata/registry.rb#22
+ # source://bindata//lib/bindata/registry.rb#21
def initialize; end
- # source://bindata//lib/bindata/registry.rb#39
+ # source://bindata//lib/bindata/registry.rb#38
def lookup(name, hints = T.unsafe(nil)); end
- # source://bindata//lib/bindata/registry.rb#26
+ # source://bindata//lib/bindata/registry.rb#25
def register(name, class_to_register); end
# Convert CamelCase +name+ to underscore style.
#
- # source://bindata//lib/bindata/registry.rb#51
+ # source://bindata//lib/bindata/registry.rb#50
def underscore_name(name); end
- # source://bindata//lib/bindata/registry.rb#35
+ # source://bindata//lib/bindata/registry.rb#34
def unregister(name); end
private
- # source://bindata//lib/bindata/registry.rb#96
+ # source://bindata//lib/bindata/registry.rb#95
def name_with_endian(name, endian); end
- # source://bindata//lib/bindata/registry.rb#87
+ # source://bindata//lib/bindata/registry.rb#86
def name_with_prefix(name, prefix); end
- # source://bindata//lib/bindata/registry.rb#64
+ # source://bindata//lib/bindata/registry.rb#63
def normalize_name(name, hints); end
- # source://bindata//lib/bindata/registry.rb#113
+ # source://bindata//lib/bindata/registry.rb#112
def register_dynamic_class(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/registry.rb#107
+ # source://bindata//lib/bindata/registry.rb#106
def registered?(name); end
# source://bindata//lib/bindata/registry.rb#123
@@ -2503,22 +2616,22 @@ end
# ----------------------------------------------------------------------------
#
-# source://bindata//lib/bindata/sanitize.rb#157
+# source://bindata//lib/bindata/sanitize.rb#149
class BinData::SanitizedBigEndian < ::BinData::SanitizedParameter
- # source://bindata//lib/bindata/sanitize.rb#158
+ # source://bindata//lib/bindata/sanitize.rb#150
def endian; end
end
# ----------------------------------------------------------------------------
#
-# source://bindata//lib/bindata/sanitize.rb#132
+# source://bindata//lib/bindata/sanitize.rb#124
class BinData::SanitizedChoices < ::BinData::SanitizedParameter
# @return [SanitizedChoices] a new instance of SanitizedChoices
#
- # source://bindata//lib/bindata/sanitize.rb#133
+ # source://bindata//lib/bindata/sanitize.rb#125
def initialize(choices, hints); end
- # source://bindata//lib/bindata/sanitize.rb#151
+ # source://bindata//lib/bindata/sanitize.rb#143
def [](key); end
end
@@ -2533,13 +2646,15 @@ class BinData::SanitizedField < ::BinData::SanitizedParameter
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#62
+ # source://bindata//lib/bindata/sanitize.rb#58
def has_parameter?(param); end
- # source://bindata//lib/bindata/sanitize.rb#66
+ # source://bindata//lib/bindata/sanitize.rb#62
def instantiate(value = T.unsafe(nil), parent = T.unsafe(nil)); end
- # source://bindata//lib/bindata/sanitize.rb#58
+ # Returns the value of attribute name.
+ #
+ # source://bindata//lib/bindata/sanitize.rb#52
def name; end
# source://bindata//lib/bindata/sanitize.rb#54
@@ -2553,62 +2668,62 @@ end
# ----------------------------------------------------------------------------
#
-# source://bindata//lib/bindata/sanitize.rb#72
+# source://bindata//lib/bindata/sanitize.rb#68
class BinData::SanitizedFields < ::BinData::SanitizedParameter
include ::Enumerable
# @return [SanitizedFields] a new instance of SanitizedFields
#
- # source://bindata//lib/bindata/sanitize.rb#75
+ # source://bindata//lib/bindata/sanitize.rb#71
def initialize(hints, base_fields = T.unsafe(nil)); end
- # source://bindata//lib/bindata/sanitize.rb#94
+ # source://bindata//lib/bindata/sanitize.rb#86
def [](idx); end
- # source://bindata//lib/bindata/sanitize.rb#84
+ # source://bindata//lib/bindata/sanitize.rb#76
def add_field(type, name, params); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#118
+ # source://bindata//lib/bindata/sanitize.rb#110
def all_field_names_blank?; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#126
+ # source://bindata//lib/bindata/sanitize.rb#118
def any_field_has_parameter?(parameter); end
- # source://bindata//lib/bindata/sanitize.rb#106
+ # source://bindata//lib/bindata/sanitize.rb#98
def each(&block); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#98
+ # source://bindata//lib/bindata/sanitize.rb#90
def empty?; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#114
+ # source://bindata//lib/bindata/sanitize.rb#106
def field_name?(name); end
- # source://bindata//lib/bindata/sanitize.rb#110
+ # source://bindata//lib/bindata/sanitize.rb#102
def field_names; end
- # source://bindata//lib/bindata/sanitize.rb#102
+ # source://bindata//lib/bindata/sanitize.rb#94
def length; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#122
+ # source://bindata//lib/bindata/sanitize.rb#114
def no_field_names_blank?; end
- # source://bindata//lib/bindata/sanitize.rb#90
+ # source://bindata//lib/bindata/sanitize.rb#82
def raw_fields; end
end
-# source://bindata//lib/bindata/sanitize.rb#163
+# source://bindata//lib/bindata/sanitize.rb#155
class BinData::SanitizedLittleEndian < ::BinData::SanitizedParameter
- # source://bindata//lib/bindata/sanitize.rb#164
+ # source://bindata//lib/bindata/sanitize.rb#156
def endian; end
end
@@ -2629,24 +2744,24 @@ class BinData::SanitizedParameter; end
# is to recursively sanitize the parameters of an entire BinData object chain
# at a single time.
#
-# source://bindata//lib/bindata/sanitize.rb#181
+# source://bindata//lib/bindata/sanitize.rb#174
class BinData::SanitizedParameters < ::Hash
# @return [SanitizedParameters] a new instance of SanitizedParameters
#
- # source://bindata//lib/bindata/sanitize.rb#197
+ # source://bindata//lib/bindata/sanitize.rb#188
def initialize(parameters, the_class, hints); end
- # source://bindata//lib/bindata/sanitize.rb#287
+ # source://bindata//lib/bindata/sanitize.rb#280
def create_sanitized_params(params, the_class); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#215
+ # source://bindata//lib/bindata/sanitize.rb#206
def has_at_least_one_of?(*keys); end
def has_parameter?(_arg0); end
- # source://bindata//lib/bindata/sanitize.rb#291
+ # source://bindata//lib/bindata/sanitize.rb#284
def hints; end
# def warn_renamed_parameter(old_key, new_key)
@@ -2658,76 +2773,76 @@ class BinData::SanitizedParameters < ::Hash
# end
# end
#
- # source://bindata//lib/bindata/sanitize.rb#239
+ # source://bindata//lib/bindata/sanitize.rb#230
def must_be_integer(*keys); end
- # source://bindata//lib/bindata/sanitize.rb#253
+ # source://bindata//lib/bindata/sanitize.rb#244
def rename_parameter(old_key, new_key); end
- # source://bindata//lib/bindata/sanitize.rb#281
+ # source://bindata//lib/bindata/sanitize.rb#274
def sanitize(key, &block); end
- # source://bindata//lib/bindata/sanitize.rb#271
+ # source://bindata//lib/bindata/sanitize.rb#264
def sanitize_choices(key, &block); end
- # source://bindata//lib/bindata/sanitize.rb#277
+ # source://bindata//lib/bindata/sanitize.rb#270
def sanitize_endian(key); end
- # source://bindata//lib/bindata/sanitize.rb#263
+ # source://bindata//lib/bindata/sanitize.rb#256
def sanitize_fields(key, &block); end
- # source://bindata//lib/bindata/sanitize.rb#259
+ # source://bindata//lib/bindata/sanitize.rb#250
def sanitize_object_prototype(key); end
- # source://bindata//lib/bindata/sanitize.rb#223
+ # source://bindata//lib/bindata/sanitize.rb#214
def warn_replacement_parameter(bad_key, suggested_key); end
private
- # source://bindata//lib/bindata/sanitize.rb#359
+ # source://bindata//lib/bindata/sanitize.rb#352
def create_sanitized_choices(choices); end
- # source://bindata//lib/bindata/sanitize.rb#347
+ # source://bindata//lib/bindata/sanitize.rb#340
def create_sanitized_endian(endian); end
- # source://bindata//lib/bindata/sanitize.rb#363
+ # source://bindata//lib/bindata/sanitize.rb#356
def create_sanitized_fields; end
- # source://bindata//lib/bindata/sanitize.rb#367
+ # source://bindata//lib/bindata/sanitize.rb#360
def create_sanitized_object_prototype(obj_type, obj_params); end
- # source://bindata//lib/bindata/sanitize.rb#327
+ # source://bindata//lib/bindata/sanitize.rb#320
def ensure_mandatory_parameters_exist; end
- # source://bindata//lib/bindata/sanitize.rb#336
+ # source://bindata//lib/bindata/sanitize.rb#329
def ensure_mutual_exclusion_of_parameters; end
- # source://bindata//lib/bindata/sanitize.rb#312
+ # source://bindata//lib/bindata/sanitize.rb#305
def ensure_no_nil_values; end
- # source://bindata//lib/bindata/sanitize.rb#321
+ # source://bindata//lib/bindata/sanitize.rb#314
def merge_default_parameters!; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/sanitize.rb#308
+ # source://bindata//lib/bindata/sanitize.rb#301
def needs_sanitizing?(key); end
- # source://bindata//lib/bindata/sanitize.rb#298
+ # source://bindata//lib/bindata/sanitize.rb#291
def sanitize!; end
class << self
- # source://bindata//lib/bindata/sanitize.rb#188
+ # source://bindata//lib/bindata/sanitize.rb#179
def sanitize(parameters, the_class); end
end
end
# Memoized constants
#
-# source://bindata//lib/bindata/sanitize.rb#184
+# source://bindata//lib/bindata/sanitize.rb#175
BinData::SanitizedParameters::BIG_ENDIAN = T.let(T.unsafe(nil), BinData::SanitizedBigEndian)
-# source://bindata//lib/bindata/sanitize.rb#185
+# source://bindata//lib/bindata/sanitize.rb#176
BinData::SanitizedParameters::LITTLE_ENDIAN = T.let(T.unsafe(nil), BinData::SanitizedLittleEndian)
# source://bindata//lib/bindata/sanitize.rb#8
@@ -2772,6 +2887,88 @@ class BinData::SbitLe < ::BinData::BasePrimitive
def sensible_default; end
end
+# A Section is a layer on top of a stream that transforms the underlying
+# data. This allows BinData to process a stream that has multiple
+# encodings. e.g. Some data data is compressed or encrypted.
+#
+# require 'bindata'
+#
+# class XorTransform < BinData::IO::Transform
+# def initialize(xor)
+# super()
+# @xor = xor
+# end
+#
+# def read(n)
+# chain_read(n).bytes.map { |byte| (byte ^ @xor).chr }.join
+# end
+#
+# def write(data)
+# chain_write(data.bytes.map { |byte| (byte ^ @xor).chr }.join)
+# end
+# end
+#
+# obj = BinData::Section.new(transform: -> { XorTransform.new(0xff) },
+# type: [:string, read_length: 5])
+#
+# obj.read("\x97\x9A\x93\x93\x90") #=> "hello"
+#
+#
+# == Parameters
+#
+# Parameters may be provided at initialisation to control the behaviour of
+# an object. These params are:
+#
+# :transform:: A callable that returns a new BinData::IO::Transform.
+# :type:: The single type inside the buffer. Use a struct if
+# multiple fields are required.
+#
+# source://bindata//lib/bindata/section.rb#40
+class BinData::Section < ::BinData::Base
+ extend ::BinData::DSLMixin
+
+ # source://bindata//lib/bindata/section.rb#56
+ def assign(val); end
+
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/section.rb#52
+ def clear?; end
+
+ # source://bindata//lib/bindata/section.rb#84
+ def do_num_bytes; end
+
+ # source://bindata//lib/bindata/section.rb#72
+ def do_read(io); end
+
+ # source://bindata//lib/bindata/section.rb#78
+ def do_write(io); end
+
+ # source://bindata//lib/bindata/section.rb#48
+ def initialize_instance; end
+
+ # source://bindata//lib/bindata/section.rb#68
+ def method_missing(symbol, *args, &block); end
+
+ # source://bindata//lib/bindata/section.rb#60
+ def snapshot; end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/section.rb#64
+ def respond_to_missing?(symbol, include_all = T.unsafe(nil)); end
+end
+
+# source://bindata//lib/bindata/section.rb#89
+class BinData::SectionArgProcessor < ::BinData::BaseArgProcessor
+ include ::BinData::MultiFieldArgSeparator
+
+ # source://bindata//lib/bindata/section.rb#92
+ def sanitize_parameters!(obj_class, params); end
+end
+
# Skip will skip over bytes from the input stream. If the stream is not
# seekable, then the bytes are consumed and discarded.
#
@@ -2789,12 +2986,14 @@ end
#
#
# class B < BinData::Record
-# skip until_valid: [:string, {read_length: 2, assert: "ef"} ]
-# string :b, read_length: 5
+# skip do
+# string read_length: 2, assert: 'ef'
+# end
+# string :s, read_length: 5
# end
#
# obj = B.read("abcdefghij")
-# obj.b #=> "efghi"
+# obj.s #=> "efghi"
#
#
# == Parameters
@@ -2804,64 +3003,98 @@ end
#
# :length:: The number of bytes to skip.
# :to_abs_offset:: Skips to the given absolute offset.
-# :until_valid:: Skips untils a given byte pattern is matched.
+# :until_valid:: Skips until a given byte pattern is matched.
# This parameter contains a type that will raise
# a BinData::ValidityError unless an acceptable byte
# sequence is found. The type is represented by a
-# Symbol, or if the type is to have params #
-# passed to it, then it should be provided as #
+# Symbol, or if the type is to have params
+# passed to it, then it should be provided as
# [type_symbol, hash_params].
#
-# source://bindata//lib/bindata/skip.rb#44
+# source://bindata//lib/bindata/skip.rb#47
class BinData::Skip < ::BinData::BasePrimitive
- # source://bindata//lib/bindata/skip.rb#50
+ extend ::BinData::DSLMixin
+
+ # source://bindata//lib/bindata/skip.rb#56
def initialize_shared_instance; end
private
- # source://bindata//lib/bindata/skip.rb#69
+ # source://bindata//lib/bindata/skip.rb#76
def read_and_return_value(io); end
- # source://bindata//lib/bindata/skip.rb#79
+ # source://bindata//lib/bindata/skip.rb#87
def sensible_default; end
- # source://bindata//lib/bindata/skip.rb#60
- def value_to_binary_string(val); end
-end
-
-# source://bindata//lib/bindata/skip.rb#84
-class BinData::SkipArgProcessor < ::BinData::BaseArgProcessor
- # source://bindata//lib/bindata/skip.rb#85
- def sanitize_parameters!(obj_class, params); end
+ # source://bindata//lib/bindata/skip.rb#66
+ def value_to_binary_string(_); end
end
# Logic for the :length parameter
#
-# source://bindata//lib/bindata/skip.rb#96
-module BinData::SkipLengthPlugin
- # source://bindata//lib/bindata/skip.rb#97
+# source://bindata//lib/bindata/skip.rb#92
+module BinData::Skip::SkipLengthPlugin
+ # source://bindata//lib/bindata/skip.rb#93
def skip_length; end
end
# Logic for the :to_abs_offset parameter
#
-# source://bindata//lib/bindata/skip.rb#103
-module BinData::SkipToAbsOffsetPlugin
- # source://bindata//lib/bindata/skip.rb#104
+# source://bindata//lib/bindata/skip.rb#99
+module BinData::Skip::SkipToAbsOffsetPlugin
+ # source://bindata//lib/bindata/skip.rb#100
def skip_length; end
end
# Logic for the :until_valid parameter
#
-# source://bindata//lib/bindata/skip.rb#110
-module BinData::SkipUntilValidPlugin
- # source://bindata//lib/bindata/skip.rb#116
- def read_and_return_value(io); end
+# source://bindata//lib/bindata/skip.rb#106
+module BinData::Skip::SkipUntilValidPlugin
+ # source://bindata//lib/bindata/skip.rb#145
+ def fast_search_for(obj); end
+
+ # If a search object has an +asserted_value+ field then we
+ # perform a faster search for a valid object.
+ #
+ # source://bindata//lib/bindata/skip.rb#155
+ def fast_search_for_obj(obj); end
+
+ # source://bindata//lib/bindata/skip.rb#170
+ def next_search_index(io, fs); end
# source://bindata//lib/bindata/skip.rb#111
+ def read_and_return_value(io); end
+
+ # source://bindata//lib/bindata/skip.rb#137
+ def seek_to_pos(pos, io); end
+
+ # source://bindata//lib/bindata/skip.rb#107
def skip_length; end
end
+# A fast search has a pattern string at a specific offset.
+#
+# source://bindata//lib/bindata/skip.rb#143
+BinData::Skip::SkipUntilValidPlugin::FastSearch = Struct
+
+# source://bindata//lib/bindata/skip.rb#193
+class BinData::Skip::SkipUntilValidPlugin::ReadaheadIO < ::BinData::IO::Transform
+ # source://bindata//lib/bindata/skip.rb#194
+ def before_transform; end
+
+ # source://bindata//lib/bindata/skip.rb#202
+ def rollback; end
+end
+
+# source://bindata//lib/bindata/skip.rb#168
+BinData::Skip::SkipUntilValidPlugin::SEARCH_SIZE = T.let(T.unsafe(nil), Integer)
+
+# source://bindata//lib/bindata/skip.rb#209
+class BinData::SkipArgProcessor < ::BinData::BaseArgProcessor
+ # source://bindata//lib/bindata/skip.rb#210
+ def sanitize_parameters!(obj_class, params); end
+end
+
# A String is a sequence of bytes. This is the same as strings in Ruby 1.8.
# The issue of character encoding is ignored by this class.
#
@@ -2939,14 +3172,22 @@ class BinData::String < ::BinData::BasePrimitive
def value_to_binary_string(val); end
end
+# Warns when reading if :value && no :read_length
+#
# source://bindata//lib/bindata/string.rb#126
-class BinData::StringArgProcessor < ::BinData::BaseArgProcessor
+module BinData::String::WarnNoReadLengthPlugin
# source://bindata//lib/bindata/string.rb#127
+ def read_and_return_value(io); end
+end
+
+# source://bindata//lib/bindata/string.rb#134
+class BinData::StringArgProcessor < ::BinData::BaseArgProcessor
+ # source://bindata//lib/bindata/string.rb#135
def sanitize_parameters!(obj_class, params); end
private
- # source://bindata//lib/bindata/string.rb#137
+ # source://bindata//lib/bindata/string.rb#145
def sanitized_pad_byte(byte); end
end
@@ -2976,33 +3217,33 @@ end
#
# source://bindata//lib/bindata/stringz.rb#27
class BinData::Stringz < ::BinData::BasePrimitive
- # source://bindata//lib/bindata/stringz.rb#31
+ # source://bindata//lib/bindata/stringz.rb#30
def assign(val); end
- # source://bindata//lib/bindata/stringz.rb#35
+ # source://bindata//lib/bindata/stringz.rb#34
def snapshot; end
private
- # source://bindata//lib/bindata/stringz.rb#90
+ # source://bindata//lib/bindata/stringz.rb#92
def append_zero_byte_if_needed!(str); end
- # source://bindata//lib/bindata/stringz.rb#48
+ # source://bindata//lib/bindata/stringz.rb#47
def read_and_return_value(io); end
- # source://bindata//lib/bindata/stringz.rb#64
+ # source://bindata//lib/bindata/stringz.rb#63
def sensible_default; end
- # source://bindata//lib/bindata/stringz.rb#68
+ # source://bindata//lib/bindata/stringz.rb#67
def trim_and_zero_terminate(str); end
- # source://bindata//lib/bindata/stringz.rb#80
+ # source://bindata//lib/bindata/stringz.rb#85
def trim_to!(str, max_length = T.unsafe(nil)); end
- # source://bindata//lib/bindata/stringz.rb#76
+ # source://bindata//lib/bindata/stringz.rb#81
def truncate_after_first_zero_byte!(str); end
- # source://bindata//lib/bindata/stringz.rb#44
+ # source://bindata//lib/bindata/stringz.rb#43
def value_to_binary_string(val); end
end
@@ -3056,116 +3297,119 @@ end
# [:byte_align] This field's rel_offset must be a multiple of
# :byte_align.
#
-# source://bindata//lib/bindata/struct.rb#59
+# source://bindata//lib/bindata/struct.rb#58
class BinData::Struct < ::BinData::Base
- # source://bindata//lib/bindata/struct.rb#153
+ # source://bindata//lib/bindata/struct.rb#154
def [](key); end
- # source://bindata//lib/bindata/struct.rb#157
+ # source://bindata//lib/bindata/struct.rb#158
def []=(key, value); end
- # source://bindata//lib/bindata/struct.rb#101
+ # source://bindata//lib/bindata/struct.rb#102
def assign(val); end
- # source://bindata//lib/bindata/struct.rb#93
+ # source://bindata//lib/bindata/struct.rb#94
def clear; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/struct.rb#97
+ # source://bindata//lib/bindata/struct.rb#98
def clear?; end
- # source://bindata//lib/bindata/struct.rb#127
+ # source://bindata//lib/bindata/struct.rb#128
def debug_name_of(child); end
- # source://bindata//lib/bindata/struct.rb#148
+ # source://bindata//lib/bindata/struct.rb#149
def do_num_bytes; end
- # source://bindata//lib/bindata/struct.rb#138
+ # source://bindata//lib/bindata/struct.rb#139
def do_read(io); end
- # :nodoc
- #
- # source://bindata//lib/bindata/struct.rb#143
+ # source://bindata//lib/bindata/struct.rb#144
def do_write(io); end
- # source://bindata//lib/bindata/struct.rb#168
- def each_pair; end
+ # Calls the given block for each field_name-field_obj pair.
+ #
+ # Does not include anonymous or hidden fields unless
+ # +include_all+ is true.
+ #
+ # source://bindata//lib/bindata/struct.rb#170
+ def each_pair(include_all = T.unsafe(nil)); end
# Returns a list of the names of all fields accessible through this
# object. +include_hidden+ specifies whether to include hidden names
# in the listing.
#
- # source://bindata//lib/bindata/struct.rb#118
+ # source://bindata//lib/bindata/struct.rb#119
def field_names(include_hidden = T.unsafe(nil)); end
# has_key? is deprecated
#
# @return [Boolean]
#
- # source://bindata//lib/bindata/struct.rb#164
+ # source://bindata//lib/bindata/struct.rb#162
def has_key?(key); end
- # source://bindata//lib/bindata/struct.rb#89
+ # source://bindata//lib/bindata/struct.rb#90
def initialize_instance; end
- # source://bindata//lib/bindata/struct.rb#81
+ # source://bindata//lib/bindata/struct.rb#82
def initialize_shared_instance; end
# @return [Boolean]
#
- # source://bindata//lib/bindata/struct.rb#164
+ # source://bindata//lib/bindata/struct.rb#162
def key?(key); end
- # source://bindata//lib/bindata/struct.rb#132
+ # source://bindata//lib/bindata/struct.rb#133
def offset_of(child); end
- # source://bindata//lib/bindata/struct.rb#106
+ # source://bindata//lib/bindata/struct.rb#107
def snapshot; end
private
- # source://bindata//lib/bindata/struct.rb#239
+ # source://bindata//lib/bindata/struct.rb#247
def as_stringified_hash(val); end
- # source://bindata//lib/bindata/struct.rb#228
+ # source://bindata//lib/bindata/struct.rb#236
def assign_fields(val); end
- # source://bindata//lib/bindata/struct.rb#213
+ # source://bindata//lib/bindata/struct.rb#221
def base_field_name(name); end
- # source://bindata//lib/bindata/struct.rb#177
+ # source://bindata//lib/bindata/struct.rb#187
def define_field_accessors; end
- # source://bindata//lib/bindata/struct.rb#184
+ # source://bindata//lib/bindata/struct.rb#194
def define_field_accessors_for(name, index); end
- # source://bindata//lib/bindata/struct.rb#199
+ # source://bindata//lib/bindata/struct.rb#209
def find_index_of(obj); end
- # source://bindata//lib/bindata/struct.rb#203
+ # source://bindata//lib/bindata/struct.rb#213
def find_obj_for_name(name); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/struct.rb#273
+ # source://bindata//lib/bindata/struct.rb#281
def include_obj?(obj); end
# @return [Boolean]
#
- # source://bindata//lib/bindata/struct.rb#267
+ # source://bindata//lib/bindata/struct.rb#275
def include_obj_for_io?(obj); end
- # source://bindata//lib/bindata/struct.rb#217
+ # source://bindata//lib/bindata/struct.rb#225
def instantiate_all_objs; end
- # source://bindata//lib/bindata/struct.rb#221
+ # source://bindata//lib/bindata/struct.rb#229
def instantiate_obj_at(index); end
- # source://bindata//lib/bindata/struct.rb#255
+ # source://bindata//lib/bindata/struct.rb#263
def sum_num_bytes_below_index(index); end
- # source://bindata//lib/bindata/struct.rb#251
+ # source://bindata//lib/bindata/struct.rb#259
def sum_num_bytes_for_all_fields; end
class << self
@@ -3174,67 +3418,100 @@ class BinData::Struct < ::BinData::Base
end
end
+# Align fields to a multiple of :byte_align
+#
+# source://bindata//lib/bindata/struct.rb#301
+module BinData::Struct::ByteAlignPlugin
+ # @return [Boolean]
+ #
+ # source://bindata//lib/bindata/struct.rb#361
+ def align_obj?(obj); end
+
+ # source://bindata//lib/bindata/struct.rb#356
+ def bytes_to_align(obj, rel_offset); end
+
+ # source://bindata//lib/bindata/struct.rb#302
+ def do_read(io); end
+
+ # source://bindata//lib/bindata/struct.rb#320
+ def do_write(io); end
+
+ # source://bindata//lib/bindata/struct.rb#338
+ def sum_num_bytes_below_index(index); end
+end
+
# These reserved words may not be used as field names
#
-# source://bindata//lib/bindata/struct.rb#66
+# source://bindata//lib/bindata/struct.rb#65
BinData::Struct::RESERVED = T.let(T.unsafe(nil), Hash)
# A hash that can be accessed via attributes.
#
-# source://bindata//lib/bindata/struct.rb#278
+# source://bindata//lib/bindata/struct.rb#286
class BinData::Struct::Snapshot < ::Hash
- # source://bindata//lib/bindata/struct.rb#279
+ # source://bindata//lib/bindata/struct.rb#287
def []=(key, value); end
- # source://bindata//lib/bindata/struct.rb#287
+ # source://bindata//lib/bindata/struct.rb#295
def method_missing(symbol, *args); end
+ private
+
# @return [Boolean]
#
- # source://bindata//lib/bindata/struct.rb#283
- def respond_to?(symbol, include_private = T.unsafe(nil)); end
+ # source://bindata//lib/bindata/struct.rb#291
+ def respond_to_missing?(symbol, include_all = T.unsafe(nil)); end
end
-# source://bindata//lib/bindata/struct.rb#348
+# source://bindata//lib/bindata/struct.rb#367
class BinData::StructArgProcessor < ::BinData::BaseArgProcessor
- # source://bindata//lib/bindata/struct.rb#349
+ # source://bindata//lib/bindata/struct.rb#368
def sanitize_parameters!(obj_class, params); end
private
- # source://bindata//lib/bindata/struct.rb#403
+ # source://bindata//lib/bindata/struct.rb#420
def ensure_field_names_are_valid(obj_class, field_names); end
- # source://bindata//lib/bindata/struct.rb#399
+ # source://bindata//lib/bindata/struct.rb#416
def hidden_field_names(hidden); end
- # source://bindata//lib/bindata/struct.rb#359
+ # source://bindata//lib/bindata/struct.rb#378
def sanitize_endian(params); end
- # source://bindata//lib/bindata/struct.rb#375
+ # source://bindata//lib/bindata/struct.rb#392
def sanitize_fields(obj_class, params); end
- # source://bindata//lib/bindata/struct.rb#386
+ # source://bindata//lib/bindata/struct.rb#403
def sanitize_hide(params); end
- # source://bindata//lib/bindata/struct.rb#363
+ # source://bindata//lib/bindata/struct.rb#382
def sanitize_search_prefix(params); end
- # source://bindata//lib/bindata/struct.rb#395
+ # source://bindata//lib/bindata/struct.rb#412
def sanitized_field_names(sanitized_fields); end
end
-# source://bindata//lib/bindata/trace.rb#5
+# source://bindata//lib/bindata/trace.rb#47
+module BinData::TraceHook
+ # source://bindata//lib/bindata/trace.rb#55
+ def turn_off_tracing; end
+
+ # source://bindata//lib/bindata/trace.rb#48
+ def turn_on_tracing; end
+end
+
+# source://bindata//lib/bindata/trace.rb#23
class BinData::Tracer
# @return [Tracer] a new instance of Tracer
#
- # source://bindata//lib/bindata/trace.rb#6
+ # source://bindata//lib/bindata/trace.rb#24
def initialize(io); end
- # source://bindata//lib/bindata/trace.rb#10
+ # source://bindata//lib/bindata/trace.rb#28
def trace(msg); end
- # source://bindata//lib/bindata/trace.rb#14
+ # source://bindata//lib/bindata/trace.rb#32
def trace_obj(obj_name, val); end
end
@@ -3293,6 +3570,8 @@ class BinData::Uint8ArrayArgProcessor < ::BinData::BaseArgProcessor
def sanitize_parameters!(obj_class, params); end
end
+# Raised when #lookup fails.
+#
# source://bindata//lib/bindata/registry.rb#3
class BinData::UnRegisteredTypeError < ::StandardError; end
@@ -3318,7 +3597,7 @@ class BinData::ValidityError < ::StandardError; end
#
# obj = A.read("abcdeabcde")
# obj.a #=> "abcde"
-# obj.c.offset #=> 10
+# obj.c.rel_offset #=> 10
#
# obj = A.read("abcdeABCDE") #=> BinData::ValidityError: assertion failed for obj.c
#
@@ -3333,23 +3612,15 @@ class BinData::ValidityError < ::StandardError; end
#
# source://bindata//lib/bindata/virtual.rb#31
class BinData::Virtual < ::BinData::BasePrimitive
- # source://bindata//lib/bindata/virtual.rb#39
+ # source://bindata//lib/bindata/virtual.rb#36
def do_num_bytes; end
- # source://bindata//lib/bindata/virtual.rb#33
+ # source://bindata//lib/bindata/virtual.rb#32
def do_read(io); end
- # source://bindata//lib/bindata/virtual.rb#36
+ # source://bindata//lib/bindata/virtual.rb#34
def do_write(io); end
- # source://bindata//lib/bindata/virtual.rb#43
+ # source://bindata//lib/bindata/virtual.rb#40
def sensible_default; end
end
-
-# Warns when reading if :value && no :read_length
-#
-# source://bindata//lib/bindata/string.rb#147
-module BinData::WarnNoReadLengthPlugin
- # source://bindata//lib/bindata/string.rb#148
- def read_and_return_value(io); end
-end
diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb
index 60a2ca3b16..fb4ef8f5d4 100644
--- a/Library/Homebrew/vendor/bundle/bundler/setup.rb
+++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb
@@ -30,7 +30,7 @@ end
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/public_suffix-5.0.4/lib")
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/addressable-2.8.6/lib")
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/ast-2.4.2/lib")
-$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/bindata-2.4.15/lib")
+$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/bindata-2.5.0/lib")
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/extensions/arm64-darwin-20/#{Gem.extension_api_version}/msgpack-1.7.2")
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/msgpack-1.7.2/lib")
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/extensions/arm64-darwin-20/#{Gem.extension_api_version}/bootsnap-1.18.3")
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/offset.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/offset.rb
deleted file mode 100644
index 7b9a61e658..0000000000
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/offset.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-module BinData
- # WARNING: THIS IS UNSUPPORTED!!
- #
- # This was a (failed) experimental feature that allowed seeking within the
- # input stream. It remains here for backwards compatability for the few
- # people that used it.
- #
- # The official way to skip around the stream is to use BinData::Skip with
- # the `:to_abs_offset` parameter.
- #
- # == Parameters
- #
- # Parameters may be provided at initialisation to control the behaviour of
- # an object. These parameters are:
- #
- # [:check_offset] Raise an error if the current IO offset doesn't
- # meet this criteria. A boolean return indicates
- # success or failure. Any other return is compared
- # to the current offset. The variable +offset+
- # is made available to any lambda assigned to
- # this parameter. This parameter is only checked
- # before reading.
- # [:adjust_offset] Ensures that the current IO offset is at this
- # position before reading. This is like
- # :check_offset, except that it will
- # adjust the IO offset instead of raising an error.
- module CheckOrAdjustOffsetPlugin
-
- def self.included(base) #:nodoc:
- base.optional_parameters :check_offset, :adjust_offset
- base.mutually_exclusive_parameters :check_offset, :adjust_offset
- end
-
- def initialize_shared_instance
- extend CheckOffsetMixin if has_parameter?(:check_offset)
- extend AdjustOffsetMixin if has_parameter?(:adjust_offset)
- super
- end
-
- module CheckOffsetMixin
- def do_read(io) #:nodoc:
- check_offset(io)
- super(io)
- end
-
- #---------------
- private
-
- def check_offset(io)
- actual_offset = io.offset
- expected = eval_parameter(:check_offset, offset: actual_offset)
-
- if !expected
- raise ValidityError, "offset not as expected for #{debug_name}"
- elsif actual_offset != expected && expected != true
- raise ValidityError,
- "offset is '#{actual_offset}' but " +
- "expected '#{expected}' for #{debug_name}"
- end
- end
- end
-
- module AdjustOffsetMixin
- def do_read(io) #:nodoc:
- adjust_offset(io)
- super(io)
- end
-
- #---------------
- private
-
- def adjust_offset(io)
- actual_offset = io.offset
- expected = eval_parameter(:adjust_offset)
- if actual_offset != expected
- begin
- seek = expected - actual_offset
- io.seekbytes(seek)
- warn "adjusting stream position by #{seek} bytes" if $VERBOSE
- rescue
- raise ValidityError,
- "offset is '#{actual_offset}' but couldn't seek to " +
- "expected '#{expected}' for #{debug_name}"
- end
- end
- end
- end
- end
-
- # Add these offset options to Base
- class Base
- include CheckOrAdjustOffsetPlugin
- end
-end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/skip.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/skip.rb
deleted file mode 100644
index 40d4fe940a..0000000000
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/skip.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-require "bindata/base_primitive"
-
-module BinData
- # Skip will skip over bytes from the input stream. If the stream is not
- # seekable, then the bytes are consumed and discarded.
- #
- # When writing, skip will write the appropriate number of zero bytes.
- #
- # require 'bindata'
- #
- # class A < BinData::Record
- # skip length: 5
- # string :a, read_length: 5
- # end
- #
- # obj = A.read("abcdefghij")
- # obj.a #=> "fghij"
- #
- #
- # class B < BinData::Record
- # skip until_valid: [:string, {read_length: 2, assert: "ef"} ]
- # string :b, read_length: 5
- # end
- #
- # obj = B.read("abcdefghij")
- # obj.b #=> "efghi"
- #
- #
- # == Parameters
- #
- # Skip objects accept all the params that BinData::BasePrimitive
- # does, as well as the following:
- #
- # :length:: The number of bytes to skip.
- # :to_abs_offset:: Skips to the given absolute offset.
- # :until_valid:: Skips untils a given byte pattern is matched.
- # This parameter contains a type that will raise
- # a BinData::ValidityError unless an acceptable byte
- # sequence is found. The type is represented by a
- # Symbol, or if the type is to have params #
- # passed to it, then it should be provided as #
- # [type_symbol, hash_params].
- #
- class Skip < BinData::BasePrimitive
- arg_processor :skip
-
- optional_parameters :length, :to_abs_offset, :until_valid
- mutually_exclusive_parameters :length, :to_abs_offset, :until_valid
-
- def initialize_shared_instance
- extend SkipLengthPlugin if has_parameter?(:length)
- extend SkipToAbsOffsetPlugin if has_parameter?(:to_abs_offset)
- extend SkipUntilValidPlugin if has_parameter?(:until_valid)
- super
- end
-
- #---------------
- private
-
- def value_to_binary_string(val)
- len = skip_length
- if len < 0
- raise ValidityError, "#{debug_name} attempted to seek backwards by #{len.abs} bytes"
- end
-
- "\000" * skip_length
- end
-
- def read_and_return_value(io)
- len = skip_length
- if len < 0
- raise ValidityError, "#{debug_name} attempted to seek backwards by #{len.abs} bytes"
- end
-
- io.seekbytes(len)
- ""
- end
-
- def sensible_default
- ""
- end
- end
-
- class SkipArgProcessor < BaseArgProcessor
- def sanitize_parameters!(obj_class, params)
- unless params.has_at_least_one_of?(:length, :to_abs_offset, :until_valid)
- raise ArgumentError,
- "#{obj_class} requires either :length, :to_abs_offset or :until_valid"
- end
- params.must_be_integer(:to_abs_offset, :length)
- params.sanitize_object_prototype(:until_valid)
- end
- end
-
- # Logic for the :length parameter
- module SkipLengthPlugin
- def skip_length
- eval_parameter(:length)
- end
- end
-
- # Logic for the :to_abs_offset parameter
- module SkipToAbsOffsetPlugin
- def skip_length
- eval_parameter(:to_abs_offset) - abs_offset
- end
- end
-
- # Logic for the :until_valid parameter
- module SkipUntilValidPlugin
- def skip_length
- # no skipping when writing
- 0
- end
-
- def read_and_return_value(io)
- prototype = get_parameter(:until_valid)
- validator = prototype.instantiate(nil, self)
-
- valid = false
- until valid
- begin
- io.with_readahead do
- validator.read(io)
- valid = true
- end
- rescue ValidityError
- io.readbytes(1)
- end
- end
- end
- end
-end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/version.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/version.rb
deleted file mode 100644
index a127d6cb11..0000000000
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/version.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-module BinData
- VERSION = "2.4.15"
-end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/LICENSE b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/LICENSE
similarity index 100%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/LICENSE
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/LICENSE
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata.rb
similarity index 97%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata.rb
index 02a8390443..9d3dcd339c 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata.rb
@@ -13,6 +13,7 @@ require 'bindata/int'
require 'bindata/primitive'
require 'bindata/record'
require 'bindata/rest'
+require 'bindata/section'
require 'bindata/skip'
require 'bindata/string'
require 'bindata/stringz'
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/alignment.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/alignment.rb
similarity index 74%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/alignment.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/alignment.rb
index baa517ac9c..92fa72e187 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/alignment.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/alignment.rb
@@ -19,11 +19,11 @@ module BinData
def do_num_bytes; 0; end
def do_read(io)
- io.reset_read_bits
+ io.readbytes(0)
end
def do_write(io)
- io.flushbits
+ io.writebytes("")
end
end
@@ -45,18 +45,26 @@ module BinData
def initialize(io)
@io = io
end
+
+ def binary_string(str)
+ str.to_s.dup.force_encoding(Encoding::BINARY)
+ end
+
def readbytes(n)
- n.times.inject("") do |bytes, _|
- bytes += @io.readbits(8, :big).chr
+ n.times.inject(binary_string("")) do |bytes, _|
+ bytes + @io.readbits(8, :big).chr
end
end
+ def writebytes(str)
+ str.each_byte { |v| @io.writebits(v, 8, :big) }
+ end
end
def bit_aligned?
true
end
- def read_and_return_value(io)
+ def do_read(io)
super(BitAlignedIO.new(io))
end
@@ -65,7 +73,7 @@ module BinData
end
def do_write(io)
- value_to_binary_string(_value).each_byte { |v| io.writebits(v, 8, :big) }
+ super(BitAlignedIO.new(io))
end
end
@@ -74,6 +82,6 @@ module BinData
end
def Primitive.bit_aligned
- fail "'bit_aligned' is not needed for BinData::Primitives"
+ fail "'bit_aligned' is not supported for BinData::Primitives"
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/array.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/array.rb
similarity index 86%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/array.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/array.rb
index 147a6110c5..6764b69f0c 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/array.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/array.rb
@@ -72,18 +72,18 @@ module BinData
end
def initialize_instance
- @element_list = nil
+ @elements = nil
end
def clear?
- @element_list.nil? || elements.all?(&:clear?)
+ @elements.nil? || elements.all?(&:clear?)
end
def assign(array)
return if self.equal?(array) # prevent self assignment
raise ArgumentError, "can't set a nil value for #{debug_name}" if array.nil?
- @element_list = []
+ @elements = []
concat(array)
end
@@ -220,23 +220,23 @@ module BinData
elements.each { |el| yield el }
end
- def debug_name_of(child) #:nodoc:
+ def debug_name_of(child) # :nodoc:
index = find_index_of(child)
"#{debug_name}[#{index}]"
end
- def offset_of(child) #:nodoc:
+ def offset_of(child) # :nodoc:
index = find_index_of(child)
sum = sum_num_bytes_below_index(index)
child.bit_aligned? ? sum.floor : sum.ceil
end
- def do_write(io) #:nodoc:
+ def do_write(io) # :nodoc:
elements.each { |el| el.do_write(io) }
end
- def do_num_bytes #:nodoc:
+ def do_num_bytes # :nodoc:
sum_num_bytes_for_all_elements
end
@@ -251,7 +251,7 @@ module BinData
end
def elements
- @element_list ||= []
+ @elements ||= []
end
def append_new_element
@@ -279,10 +279,55 @@ module BinData
end
end
end
+
+ # Logic for the :read_until parameter
+ module ReadUntilPlugin
+ def do_read(io)
+ loop do
+ element = append_new_element
+ element.do_read(io)
+ variables = { index: self.length - 1, element: self.last, array: self }
+ break if eval_parameter(:read_until, variables)
+ end
+ end
+ end
+
+ # Logic for the read_until: :eof parameter
+ module ReadUntilEOFPlugin
+ def do_read(io)
+ loop do
+ element = append_new_element
+ begin
+ element.do_read(io)
+ rescue EOFError, IOError
+ elements.pop
+ break
+ end
+ end
+ end
+ end
+
+ # Logic for the :initial_length parameter
+ module InitialLengthPlugin
+ def do_read(io)
+ elements.each { |el| el.do_read(io) }
+ end
+
+ def elements
+ if @elements.nil?
+ @elements = []
+ eval_parameter(:initial_length).times do
+ @elements << new_element
+ end
+ end
+
+ @elements
+ end
+ end
end
class ArrayArgProcessor < BaseArgProcessor
- def sanitize_parameters!(obj_class, params) #:nodoc:
+ def sanitize_parameters!(obj_class, params) # :nodoc:
# ensure one of :initial_length and :read_until exists
unless params.has_at_least_one_of?(:initial_length, :read_until)
params[:initial_length] = 0
@@ -296,49 +341,4 @@ module BinData
params.sanitize_object_prototype(:type)
end
end
-
- # Logic for the :read_until parameter
- module ReadUntilPlugin
- def do_read(io)
- loop do
- element = append_new_element
- element.do_read(io)
- variables = { index: self.length - 1, element: self.last, array: self }
- break if eval_parameter(:read_until, variables)
- end
- end
- end
-
- # Logic for the read_until: :eof parameter
- module ReadUntilEOFPlugin
- def do_read(io)
- loop do
- element = append_new_element
- begin
- element.do_read(io)
- rescue EOFError, IOError
- elements.pop
- break
- end
- end
- end
- end
-
- # Logic for the :initial_length parameter
- module InitialLengthPlugin
- def do_read(io)
- elements.each { |el| el.do_read(io) }
- end
-
- def elements
- if @element_list.nil?
- @element_list = []
- eval_parameter(:initial_length).times do
- @element_list << new_element
- end
- end
-
- @element_list
- end
- end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/base.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/base.rb
similarity index 92%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/base.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/base.rb
index 15fd398201..c5bbf3378a 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/base.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/base.rb
@@ -17,7 +17,7 @@ module BinData
# Instantiates this class and reads from +io+, returning the newly
# created data object. +args+ will be used when instantiating.
def read(io, *args, &block)
- obj = self.new(*args)
+ obj = new(*args)
obj.read(io, &block)
obj
end
@@ -48,7 +48,7 @@ module BinData
end
# Registers all subclasses of this class for use
- def register_subclasses #:nodoc:
+ def register_subclasses # :nodoc:
singleton_class.send(:undef_method, :inherited)
define_singleton_method(:inherited) do |subclass|
RegisteredClasses.register(subclass.name, subclass)
@@ -90,6 +90,8 @@ module BinData
# Creates a new data object based on this instance.
#
+ # This implements the prototype design pattern.
+ #
# All parameters will be be duplicated. Use this method
# when creating multiple objects with the same parameters.
def new(value = nil, parent = nil)
@@ -117,8 +119,8 @@ module BinData
end
# Returns a lazy evaluator for this object.
- def lazy_evaluator #:nodoc:
- @lazy ||= LazyEvaluator.new(self)
+ def lazy_evaluator # :nodoc:
+ @lazy_evaluator ||= LazyEvaluator.new(self)
end
# Returns the parameter referenced by +key+.
@@ -177,7 +179,7 @@ module BinData
# Returns the hexadecimal string representation of this data object.
def to_hex(&block)
- to_binary_s(&block).unpack('H*')[0]
+ to_binary_s(&block).unpack1('H*')
end
# Return a human readable representation of this data object.
@@ -191,7 +193,7 @@ module BinData
end
# Work with Ruby's pretty-printer library.
- def pretty_print(pp) #:nodoc:
+ def pretty_print(pp) # :nodoc:
pp.pp(snapshot)
end
@@ -202,40 +204,28 @@ module BinData
# Returns a user friendly name of this object for debugging purposes.
def debug_name
- if @parent
- @parent.debug_name_of(self)
- else
- "obj"
- end
+ @parent ? @parent.debug_name_of(self) : 'obj'
end
# Returns the offset (in bytes) of this object with respect to its most
# distant ancestor.
def abs_offset
- if @parent
- @parent.abs_offset + @parent.offset_of(self)
- else
- 0
- end
+ @parent ? @parent.abs_offset + @parent.offset_of(self) : 0
end
# Returns the offset (in bytes) of this object with respect to its parent.
def rel_offset
- if @parent
- @parent.offset_of(self)
- else
- 0
- end
+ @parent ? @parent.offset_of(self) : 0
end
- def ==(other) #:nodoc:
+ def ==(other) # :nodoc:
# double dispatch
other == snapshot
end
# A version of +respond_to?+ used by the lazy evaluator. It doesn't
# reinvoke the evaluator so as to avoid infinite evaluation loops.
- def safe_respond_to?(symbol, include_private = false) #:nodoc:
+ def safe_respond_to?(symbol, include_private = false) # :nodoc:
base_respond_to?(symbol, include_private)
end
@@ -329,7 +319,6 @@ module BinData
# Performs sanity checks on the given parameters.
# This method converts the parameters to the form expected
# by the data object.
- def sanitize_parameters!(obj_class, obj_params)
- end
+ def sanitize_parameters!(obj_class, obj_params); end
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/base_primitive.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/base_primitive.rb
similarity index 86%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/base_primitive.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/base_primitive.rb
index 3b2b4839e7..fc6f6b5df0 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/base_primitive.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/base_primitive.rb
@@ -65,7 +65,7 @@ module BinData
@value = nil
end
- def clear? #:nodoc:
+ def clear? # :nodoc:
@value.nil?
end
@@ -73,13 +73,7 @@ module BinData
raise ArgumentError, "can't set a nil value for #{debug_name}" if val.nil?
raw_val = val.respond_to?(:snapshot) ? val.snapshot : val
- @value =
- begin
- raw_val.dup
- rescue TypeError
- # can't dup Fixnums
- raw_val
- end
+ @value = raw_val.dup
end
def snapshot
@@ -94,18 +88,19 @@ module BinData
assign(val)
end
- def respond_to?(symbol, include_private = false) #:nodoc:
+ def respond_to_missing?(symbol, include_all = false) # :nodoc:
child = snapshot
- child.respond_to?(symbol, include_private) || super
+ child.respond_to?(symbol, include_all) || super
end
- def method_missing(symbol, *args, &block) #:nodoc:
+ def method_missing(symbol, *args, &block) # :nodoc:
child = snapshot
if child.respond_to?(symbol)
- self.class.class_eval \
- "def #{symbol}(*args, &block);" \
- " snapshot.#{symbol}(*args, &block);" \
- "end"
+ self.class.class_eval <<-END, __FILE__, __LINE__ + 1
+ def #{symbol}(*args, &block) # def clamp(*args, &block)
+ snapshot.#{symbol}(*args, &block) # snapshot.clamp(*args, &block)
+ end # end
+ END
child.__send__(symbol, *args, &block)
else
super
@@ -125,15 +120,15 @@ module BinData
snapshot.hash
end
- def do_read(io) #:nodoc:
+ def do_read(io) # :nodoc:
@value = read_and_return_value(io)
end
- def do_write(io) #:nodoc:
+ def do_write(io) # :nodoc:
io.writebytes(value_to_binary_string(_value))
end
- def do_num_bytes #:nodoc:
+ def do_num_bytes # :nodoc:
value_to_binary_string(_value).length
end
@@ -172,7 +167,7 @@ module BinData
assert!
end
- def do_read(io) #:nodoc:
+ def do_read(io) # :nodoc:
super(io)
assert!
end
@@ -205,7 +200,16 @@ module BinData
reading? ? @value : eval_parameter(:asserted_value)
end
- def do_read(io) #:nodoc:
+ # The asserted value as a binary string.
+ #
+ # Rationale: while reading, +#to_binary_s+ will use the
+ # value read in, rather than the +:asserted_value+.
+ # This feature is used by Skip.
+ def asserted_binary_s
+ value_to_binary_string(eval_parameter(:asserted_value))
+ end
+
+ def do_read(io) # :nodoc:
super(io)
assert!
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/bits.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/bits.rb
similarity index 96%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/bits.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/bits.rb
index a862f40ab1..d11b16547d 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/bits.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/bits.rb
@@ -5,7 +5,7 @@ module BinData
# Defines a number of classes that contain a bit based integer.
# The integer is defined by endian and number of bits.
- module BitField #:nodoc: all
+ module BitField # :nodoc: all
@@mutex = Mutex.new
class << self
@@ -156,10 +156,10 @@ module BinData
# Create classes for dynamic bitfields
{
- "Bit" => :big,
- "BitLe" => :little,
- "Sbit" => [:big, :signed],
- "SbitLe" => [:little, :signed],
+ 'Bit' => :big,
+ 'BitLe' => :little,
+ 'Sbit' => [:big, :signed],
+ 'SbitLe' => [:little, :signed]
}.each_pair { |name, args| BitField.define_class(name, :nbits, *args) }
# Create classes on demand
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/buffer.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/buffer.rb
similarity index 51%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/buffer.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/buffer.rb
index b504c6cdf3..17cd486bbe 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/buffer.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/buffer.rb
@@ -41,7 +41,7 @@ module BinData
# end
# end
# end
- #
+ #
#
# == Parameters
#
@@ -80,29 +80,107 @@ module BinData
@type.snapshot
end
- def respond_to?(symbol, include_private = false) #:nodoc:
- @type.respond_to?(symbol, include_private) || super
+ def respond_to_missing?(symbol, include_all = false) # :nodoc:
+ @type.respond_to?(symbol, include_all) || super
end
- def method_missing(symbol, *args, &block) #:nodoc:
+ def method_missing(symbol, *args, &block) # :nodoc:
@type.__send__(symbol, *args, &block)
end
- def do_read(io) #:nodoc:
- io.with_buffer(eval_parameter(:length)) do
- @type.do_read(io)
+ def do_read(io) # :nodoc:
+ buf_len = eval_parameter(:length)
+ io.transform(BufferIO.new(buf_len)) do |transformed_io, _|
+ @type.do_read(transformed_io)
end
end
- def do_write(io) #:nodoc:
- io.with_buffer(eval_parameter(:length)) do
- @type.do_write(io)
+ def do_write(io) # :nodoc:
+ buf_len = eval_parameter(:length)
+ io.transform(BufferIO.new(buf_len)) do |transformed_io, _|
+ @type.do_write(transformed_io)
end
end
- def do_num_bytes #:nodoc:
+ def do_num_bytes # :nodoc:
eval_parameter(:length)
end
+
+ # Transforms the IO stream to restrict access inside
+ # a buffer of specified length.
+ class BufferIO < IO::Transform
+ def initialize(length)
+ super()
+ @bytes_remaining = length
+ end
+
+ def before_transform
+ @buf_start = offset
+ @buf_end = @buf_start + @bytes_remaining
+ end
+
+ def num_bytes_remaining
+ [@bytes_remaining, super].min
+ rescue IOError
+ @bytes_remaining
+ end
+
+ def skip(n)
+ nbytes = buffer_limited_n(n)
+ @bytes_remaining -= nbytes
+
+ chain_skip(nbytes)
+ end
+
+ def seek_abs(n)
+ if n < @buf_start || n >= @buf_end
+ raise IOError, "can not seek to abs_offset outside of buffer"
+ end
+
+ @bytes_remaining -= (n - offset)
+ chain_seek_abs(n)
+ end
+
+ def read(n)
+ nbytes = buffer_limited_n(n)
+ @bytes_remaining -= nbytes
+
+ chain_read(nbytes)
+ end
+
+ def write(data)
+ nbytes = buffer_limited_n(data.size)
+ @bytes_remaining -= nbytes
+ if nbytes < data.size
+ data = data[0, nbytes]
+ end
+
+ chain_write(data)
+ end
+
+ def after_read_transform
+ read(nil)
+ end
+
+ def after_write_transform
+ write("\x00" * @bytes_remaining)
+ end
+
+ def buffer_limited_n(n)
+ if n.nil?
+ @bytes_remaining
+ elsif n.positive?
+ limit = @bytes_remaining
+ n > limit ? limit : n
+# uncomment if we decide to allow backwards skipping
+# elsif n.negative?
+# limit = @bytes_remaining + @buf_start - @buf_end
+# n < limit ? limit : n
+ else
+ 0
+ end
+ end
+ end
end
class BufferArgProcessor < BaseArgProcessor
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/choice.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/choice.rb
similarity index 92%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/choice.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/choice.rb
index a06f36e3cf..2e18205933 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/choice.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/choice.rb
@@ -82,18 +82,19 @@ module BinData
if selection.nil?
raise IndexError, ":selection returned nil for #{debug_name}"
end
+
selection
end
- def respond_to?(symbol, include_private = false) #:nodoc:
- current_choice.respond_to?(symbol, include_private) || super
+ def respond_to?(symbol, include_all = false) # :nodoc:
+ current_choice.respond_to?(symbol, include_all) || super
end
- def method_missing(symbol, *args, &block) #:nodoc:
+ def method_missing(symbol, *args, &block) # :nodoc:
current_choice.__send__(symbol, *args, &block)
end
- %w(clear? assign snapshot do_read do_write do_num_bytes).each do |m|
+ %w[clear? assign snapshot do_read do_write do_num_bytes].each do |m|
module_eval <<-END
def #{m}(*args)
current_choice.#{m}(*args)
@@ -112,14 +113,16 @@ module BinData
def instantiate_choice(selection)
prototype = get_parameter(:choices)[selection]
if prototype.nil?
- raise IndexError, "selection '#{selection}' does not exist in :choices for #{debug_name}"
+ msg = "selection '#{selection}' does not exist in :choices for #{debug_name}"
+ raise IndexError, msg
end
+
prototype.instantiate(nil, self)
end
end
class ChoiceArgProcessor < BaseArgProcessor
- def sanitize_parameters!(obj_class, params) #:nodoc:
+ def sanitize_parameters!(obj_class, params) # :nodoc:
params.merge!(obj_class.dsl_params)
params.sanitize_choices(:choices) do |choices|
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/count_bytes_remaining.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/count_bytes_remaining.rb
similarity index 95%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/count_bytes_remaining.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/count_bytes_remaining.rb
index c90b7ba268..843405f79b 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/count_bytes_remaining.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/count_bytes_remaining.rb
@@ -1,4 +1,4 @@
-require "bindata/base_primitive"
+require 'bindata/base_primitive'
module BinData
# Counts the number of bytes remaining in the input stream from the current
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/delayed_io.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/delayed_io.rb
similarity index 90%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/delayed_io.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/delayed_io.rb
index 451bb06c7e..c9d3d8d737 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/delayed_io.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/delayed_io.rb
@@ -83,11 +83,11 @@ module BinData
@type.num_bytes
end
- def respond_to?(symbol, include_private = false) #:nodoc:
- @type.respond_to?(symbol, include_private) || super
+ def respond_to_missing?(symbol, include_all = false) # :nodoc:
+ @type.respond_to?(symbol, include_all) || super
end
- def method_missing(symbol, *args, &block) #:nodoc:
+ def method_missing(symbol, *args, &block) # :nodoc:
@type.__send__(symbol, *args, &block)
end
@@ -104,20 +104,20 @@ module BinData
abs_offset
end
- def do_read(io) #:nodoc:
+ def do_read(io) # :nodoc:
@read_io = io
end
- def do_write(io) #:nodoc:
+ def do_write(io) # :nodoc:
@write_io = io
end
- def do_num_bytes #:nodoc:
+ def do_num_bytes # :nodoc:
0
end
def include_obj?
- ! has_parameter?(:onlyif) || eval_parameter(:onlyif)
+ !has_parameter?(:onlyif) || eval_parameter(:onlyif)
end
# DelayedIO objects aren't read when #read is called.
@@ -126,7 +126,7 @@ module BinData
return unless include_obj?
raise IOError, "read from where?" unless @read_io
- @read_io.seekbytes(abs_offset - @read_io.offset)
+ @read_io.seek_to_abs_offset(abs_offset)
start_read do
@type.do_read(@read_io)
end
@@ -138,7 +138,7 @@ module BinData
return unless include_obj?
raise IOError, "write to where?" unless @write_io
- @write_io.seekbytes(abs_offset - @write_io.offset)
+ @write_io.seek_to_abs_offset(abs_offset)
@type.do_write(@write_io)
end
end
@@ -153,8 +153,8 @@ module BinData
end
end
- # Add +auto_call_delayed_io+ keyword to BinData::Base.
class Base
+ # Add +auto_call_delayed_io+ keyword to BinData::Base.
class << self
# The +auto_call_delayed_io+ keyword sets a data object tree to perform
# multi pass I/O automatically.
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/dsl.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/dsl.rb
similarity index 88%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/dsl.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/dsl.rb
index 115fe0531d..d757a88d0b 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/dsl.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/dsl.rb
@@ -42,7 +42,7 @@ module BinData
end
end
- def method_missing(symbol, *args, &block) #:nodoc:
+ def method_missing(symbol, *args, &block) # :nodoc:
dsl_parser.__send__(symbol, *args, &block)
end
@@ -131,7 +131,8 @@ module BinData
choice: [:to_choice_params, :choices, [:multiple_fields, :all_or_none_fieldnames, :fieldnames_are_values]],
delayed_io: [:to_object_params, :type, [:multiple_fields, :optional_fieldnames, :hidden_fields]],
primitive: [:to_struct_params, :struct, [:multiple_fields, :optional_fieldnames]],
- skip: [:to_object_params, :until_valid, [:multiple_fields, :optional_fieldnames]],
+ section: [:to_object_params, :type, [:multiple_fields, :optional_fieldnames]],
+ skip: [:to_object_params, :until_valid, [:multiple_fields, :optional_fieldnames]]
}
end
@@ -182,21 +183,21 @@ module BinData
begin
@validator.validate_field(parser.name)
append_field(parser.type, parser.name, parser.params)
- rescue Exception => err
- dsl_raise err.class, err.message
+ rescue Exception => e
+ dsl_raise e.class, e.message
end
end
def append_field(type, name, params)
fields.add_field(type, name, params)
- rescue BinData::UnRegisteredTypeError => err
- raise TypeError, "unknown type '#{err.message}'"
+ rescue BinData::UnRegisteredTypeError => e
+ raise TypeError, "unknown type '#{e.message}'"
end
def parent_attribute(attr, default = nil)
parent = @the_class.superclass
parser = parent.respond_to?(:dsl_parser) ? parent.dsl_parser : nil
- if parser && parser.respond_to?(attr)
+ if parser&.respond_to?(attr)
parser.send(attr)
else
default
@@ -205,7 +206,7 @@ module BinData
def dsl_raise(exception, msg)
backtrace = caller
- backtrace.shift while %r{bindata/dsl.rb} =~ backtrace.first
+ backtrace.shift while %r{bindata/dsl.rb}.match?(backtrace.first)
raise exception, "#{msg} in #{@the_class}", backtrace
end
@@ -215,9 +216,9 @@ module BinData
when 0
{}
when 1
- {key => fields[0].prototype}
+ { key => fields[0].prototype }
else
- {key=> [:struct, to_struct_params]}
+ { key => [:struct, to_struct_params] }
end
end
@@ -225,16 +226,16 @@ module BinData
if fields.empty?
{}
elsif fields.all_field_names_blank?
- {key => fields.collect(&:prototype)}
+ { key => fields.collect(&:prototype) }
else
choices = {}
fields.each { |f| choices[f.name] = f.prototype }
- {key => choices}
+ { key => choices }
end
end
- def to_struct_params(*unused)
- result = {fields: fields}
+ def to_struct_params(*_)
+ result = { fields: fields }
if !endian.nil?
result[:endian] = endian
end
@@ -274,7 +275,7 @@ module BinData
def override_new_in_class(bnl_class)
endian_classes = {
big: class_with_endian(bnl_class, :big),
- little: class_with_endian(bnl_class, :little),
+ little: class_with_endian(bnl_class, :little)
}
bnl_class.define_singleton_method(:new) do |*args|
if self == bnl_class
@@ -290,7 +291,7 @@ module BinData
def delegate_field_creation(bnl_class)
endian_classes = {
big: class_with_endian(bnl_class, :big),
- little: class_with_endian(bnl_class, :little),
+ little: class_with_endian(bnl_class, :little)
}
parser = bnl_class.dsl_parser
@@ -302,28 +303,28 @@ module BinData
def fixup_subclass_hierarchy(bnl_class)
parent = bnl_class.superclass
- if obj_attribute(parent, :endian) == :big_and_little
- be_subclass = class_with_endian(bnl_class, :big)
- be_parent = class_with_endian(parent, :big)
- be_fields = obj_attribute(be_parent, :fields)
+ return if obj_attribute(parent, :endian) != :big_and_little
- le_subclass = class_with_endian(bnl_class, :little)
- le_parent = class_with_endian(parent, :little)
- le_fields = obj_attribute(le_parent, :fields)
+ be_subclass = class_with_endian(bnl_class, :big)
+ be_parent = class_with_endian(parent, :big)
+ be_fields = obj_attribute(be_parent, :fields)
- be_subclass.dsl_parser.define_singleton_method(:parent_fields) do
- be_fields
- end
- le_subclass.dsl_parser.define_singleton_method(:parent_fields) do
- le_fields
- end
+ le_subclass = class_with_endian(bnl_class, :little)
+ le_parent = class_with_endian(parent, :little)
+ le_fields = obj_attribute(le_parent, :fields)
+
+ be_subclass.dsl_parser.define_singleton_method(:parent_fields) do
+ be_fields
+ end
+ le_subclass.dsl_parser.define_singleton_method(:parent_fields) do
+ le_fields
end
end
def class_with_endian(class_name, endian)
hints = {
endian: endian,
- search_prefix: class_name.dsl_parser.search_prefix,
+ search_prefix: class_name.dsl_parser.search_prefix
}
RegisteredClasses.lookup(class_name, hints)
end
@@ -377,8 +378,9 @@ module BinData
buffer: BinData::Buffer,
choice: BinData::Choice,
delayed_io: BinData::DelayedIO,
+ section: BinData::Section,
skip: BinData::Skip,
- struct: BinData::Struct,
+ struct: BinData::Struct
}
if bindata_classes.include?(@type)
@@ -457,7 +459,7 @@ module BinData
end
def malformed_name?(name)
- /^[a-z_]\w*$/ !~ name.to_s
+ !/^[a-z_]\w*$/.match?(name.to_s)
end
def duplicate_name?(name)
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/float.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/float.rb
similarity index 93%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/float.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/float.rb
index 98a470817f..f22b7e3fd1 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/float.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/float.rb
@@ -4,7 +4,7 @@ module BinData
# Defines a number of classes that contain a floating point number.
# The float is defined by precision and endian.
- module FloatingPoint #:nodoc: all
+ module FloatingPoint # :nodoc: all
class << self
PRECISION = {
single: 4,
@@ -15,7 +15,7 @@ module BinData
[:single, :little] => 'e',
[:single, :big] => 'g',
[:double, :little] => 'E',
- [:double, :big] => 'G',
+ [:double, :big] => 'G'
}
def define_methods(float_class, precision, endian)
@@ -49,7 +49,7 @@ module BinData
nbytes = PRECISION[precision]
unpack = PACK_CODE[[precision, endian]]
- "io.readbytes(#{nbytes}).unpack('#{unpack}').at(0)"
+ "io.readbytes(#{nbytes}).unpack1('#{unpack}')"
end
def create_to_binary_s_code(precision, endian)
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/framework.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/framework.rb
similarity index 87%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/framework.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/framework.rb
index ab652c2de3..1a9d84c94e 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/framework.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/framework.rb
@@ -1,14 +1,13 @@
module BinData
# Error raised when unexpected results occur when reading data from IO.
- class ValidityError < StandardError ; end
+ class ValidityError < StandardError; end
# All methods provided by the framework are to be implemented or overridden
# by subclasses of BinData::Base.
module Framework
# Initializes the state of the object. All instance variables that
# are used by the object must be initialized here.
- def initialize_instance
- end
+ def initialize_instance; end
# Initialises state that is shared by objects with the same parameters.
#
@@ -16,8 +15,7 @@ module BinData
# variables set here, and changes to the singleton class will be shared
# between all objects that are initialized with the same parameters.
# This method is called only once for a particular set of parameters.
- def initialize_shared_instance
- end
+ def initialize_shared_instance; end
# Returns true if the object has not been changed since creation.
def clear?
@@ -37,13 +35,13 @@ module BinData
# Returns the debug name of +child+. This only needs to be implemented
# by objects that contain child objects.
- def debug_name_of(child) #:nodoc:
+ def debug_name_of(child) # :nodoc:
debug_name
end
# Returns the offset of +child+. This only needs to be implemented
# by objects that contain child objects.
- def offset_of(child) #:nodoc:
+ def offset_of(child) # :nodoc:
0
end
@@ -53,17 +51,17 @@ module BinData
end
# Reads the data for this data object from +io+.
- def do_read(io) #:nodoc:
+ def do_read(io) # :nodoc:
raise NotImplementedError
end
# Writes the value for this data to +io+.
- def do_write(io) #:nodoc:
+ def do_write(io) # :nodoc:
raise NotImplementedError
end
# Returns the number of bytes it will take to write this data.
- def do_num_bytes #:nodoc:
+ def do_num_bytes # :nodoc:
raise NotImplementedError
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/int.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/int.rb
similarity index 93%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/int.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/int.rb
index cfad2d6ff6..63418e7978 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/int.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/int.rb
@@ -5,7 +5,7 @@ module BinData
# Defines a number of classes that contain an integer. The integer
# is defined by endian, signedness and number of bytes.
- module Int #:nodoc: all
+ module Int # :nodoc: all
@@mutex = Mutex.new
class << self
@@ -85,7 +85,7 @@ module BinData
"io.readbytes(1).ord"
else
unpack_str = create_read_unpack_code(nbits, endian, signed)
- assemble_str = create_read_assemble_code(nbits, endian, signed)
+ assemble_str = create_read_assemble_code(nbits, endian)
"(#{unpack_str} ; #{assemble_str})"
end
@@ -98,7 +98,7 @@ module BinData
"ints = io.readbytes(#{nbytes}).unpack('#{pack_directive}')"
end
- def create_read_assemble_code(nbits, endian, signed)
+ def create_read_assemble_code(nbits, endian)
nwords = nbits / bits_per_word(nbits)
idx = (0...nwords).to_a
@@ -117,7 +117,7 @@ module BinData
return "(val & 0xff).chr" if nbits == 8
pack_directive = pack_directive(nbits, endian, signed)
- words = val_as_packed_words(nbits, endian, signed)
+ words = val_as_packed_words(nbits, endian)
pack_str = "[#{words}].pack('#{pack_directive}')"
if need_signed_conversion_code?(nbits, signed)
@@ -127,7 +127,7 @@ module BinData
end
end
- def val_as_packed_words(nbits, endian, signed)
+ def val_as_packed_words(nbits, endian)
nwords = nbits / bits_per_word(nbits)
mask = (1 << bits_per_word(nbits)) - 1
@@ -136,7 +136,7 @@ module BinData
vals.reverse! if (endian == :big)
vals = vals.collect { |val| "#{val} & #{mask}" } # TODO: "& mask" is needed to work around jruby bug. Remove this line when fixed.
- vals.join(",")
+ vals.join(',')
end
def create_int2uint_code(nbits)
@@ -157,10 +157,10 @@ module BinData
def pack_directive(nbits, endian, signed)
nwords = nbits / bits_per_word(nbits)
- directives = { 8 => "C", 16 => "S", 32 => "L", 64 => "Q" }
+ directives = { 8 => 'C', 16 => 'S', 32 => 'L', 64 => 'Q' }
d = directives[bits_per_word(nbits)]
- d += ((endian == :big) ? ">" : "<") unless d == "C"
+ d += ((endian == :big) ? '>' : '<') unless d == 'C'
if signed == :signed && directives.key?(nbits)
(d * nwords).downcase
@@ -193,7 +193,7 @@ module BinData
/^Uint(\d+)be$/ => [:big, :unsigned],
/^Uint(\d+)le$/ => [:little, :unsigned],
/^Int(\d+)be$/ => [:big, :signed],
- /^Int(\d+)le$/ => [:little, :signed],
+ /^Int(\d+)le$/ => [:little, :signed]
}
mappings.each_pair do |regex, args|
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/io.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/io.rb
similarity index 51%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/io.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/io.rb
index 22e0b19d40..a5600002a9 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/io.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/io.rb
@@ -5,217 +5,10 @@ module BinData
# interface for BinData objects to use when accessing the IO.
module IO
- # Common operations for both Read and Write.
- module Common
- def initialize(io)
- if self.class === io
- raise ArgumentError, "io must not be a #{self.class}"
- end
-
- # wrap strings in a StringIO
- if io.respond_to?(:to_str)
- io = BinData::IO.create_string_io(io.to_str)
- end
-
- @raw_io = io
- @buffer_end_points = nil
-
- extend seekable? ? SeekableStream : UnSeekableStream
- stream_init
- end
-
- #-------------
- private
-
- def seekable?
- @raw_io.pos
- rescue NoMethodError, Errno::ESPIPE, Errno::EPIPE, Errno::EINVAL
- nil
- end
-
- def seek(n)
- seek_raw(buffer_limited_n(n))
- end
-
- def buffer_limited_n(n)
- if @buffer_end_points
- if n.nil? || n > 0
- max = @buffer_end_points[1] - offset
- n = max if n.nil? || n > max
- else
- min = @buffer_end_points[0] - offset
- n = min if n < min
- end
- end
-
- n
- end
-
- def with_buffer_common(n)
- prev = @buffer_end_points
- if prev
- avail = prev[1] - offset
- n = avail if n > avail
- end
- @buffer_end_points = [offset, offset + n]
- begin
- yield(*@buffer_end_points)
- ensure
- @buffer_end_points = prev
- end
- end
-
- # Use #seek and #pos on seekable streams
- module SeekableStream
- # The number of bytes remaining in the input stream.
- def num_bytes_remaining
- start_mark = @raw_io.pos
- @raw_io.seek(0, ::IO::SEEK_END)
- end_mark = @raw_io.pos
-
- if @buffer_end_points
- if @buffer_end_points[1] < end_mark
- end_mark = @buffer_end_points[1]
- end
- end
-
- bytes_remaining = end_mark - start_mark
- @raw_io.seek(start_mark, ::IO::SEEK_SET)
-
- bytes_remaining
- end
-
- # All io calls in +block+ are rolled back after this
- # method completes.
- def with_readahead
- mark = @raw_io.pos
- begin
- yield
- ensure
- @raw_io.seek(mark, ::IO::SEEK_SET)
- end
- end
-
- #-----------
- private
-
- def stream_init
- @initial_pos = @raw_io.pos
- end
-
- def offset_raw
- @raw_io.pos - @initial_pos
- end
-
- def seek_raw(n)
- @raw_io.seek(n, ::IO::SEEK_CUR)
- end
-
- def read_raw(n)
- @raw_io.read(n)
- end
-
- def write_raw(data)
- @raw_io.write(data)
- end
- end
-
- # Manually keep track of offset for unseekable streams.
- module UnSeekableStream
- def offset_raw
- @offset
- end
-
- # The number of bytes remaining in the input stream.
- def num_bytes_remaining
- raise IOError, "stream is unseekable"
- end
-
- # All io calls in +block+ are rolled back after this
- # method completes.
- def with_readahead
- mark = @offset
- @read_data = ""
- @in_readahead = true
-
- class << self
- alias_method :read_raw_without_readahead, :read_raw
- alias_method :read_raw, :read_raw_with_readahead
- end
-
- begin
- yield
- ensure
- @offset = mark
- @in_readahead = false
- end
- end
-
- #-----------
- private
-
- def stream_init
- @offset = 0
- end
-
- def read_raw(n)
- data = @raw_io.read(n)
- @offset += data.size if data
- data
- end
-
- def read_raw_with_readahead(n)
- data = ""
-
- unless @read_data.empty? || @in_readahead
- bytes_to_consume = [n, @read_data.length].min
- data += @read_data.slice!(0, bytes_to_consume)
- n -= bytes_to_consume
-
- if @read_data.empty?
- class << self
- alias_method :read_raw, :read_raw_without_readahead
- end
- end
- end
-
- raw_data = @raw_io.read(n)
- data += raw_data if raw_data
-
- if @in_readahead
- @read_data += data
- end
-
- @offset += data.size
-
- data
- end
-
- def write_raw(data)
- @offset += data.size
- @raw_io.write(data)
- end
-
- def seek_raw(n)
- raise IOError, "stream is unseekable" if n < 0
-
- # NOTE: how do we seek on a writable stream?
-
- # skip over data in 8k blocks
- while n > 0
- bytes_to_read = [n, 8192].min
- read_raw(bytes_to_read)
- n -= bytes_to_read
- end
- end
- end
- end
-
# Creates a StringIO around +str+.
def self.create_string_io(str = "")
- s = StringIO.new(str.dup.force_encoding(Encoding::BINARY))
- s.binmode
- s
+ bin_str = str.dup.force_encoding(Encoding::BINARY)
+ StringIO.new(bin_str).tap(&:binmode)
end
# Create a new IO Read wrapper around +io+. +io+ must provide #read,
@@ -236,10 +29,17 @@ module BinData
# readbits(6), readbits(5) #=> [543210, a9876]
#
class Read
- include Common
-
def initialize(io)
- super(io)
+ if self.class === io
+ raise ArgumentError, "io must not be a #{self.class}"
+ end
+
+ # wrap strings in a StringIO
+ if io.respond_to?(:to_str)
+ io = BinData::IO.create_string_io(io.to_str)
+ end
+
+ @io = RawIO.new(io)
# bits when reading
@rnbits = 0
@@ -247,25 +47,38 @@ module BinData
@rendian = nil
end
- # Sets a buffer of +n+ bytes on the io stream. Any reading or seeking
- # calls inside the +block+ will be contained within this buffer.
- def with_buffer(n)
- with_buffer_common(n) do
- yield
- read
- end
+ # Allow transforming data in the input stream.
+ # See +BinData::Buffer+ as an example.
+ #
+ # +io+ must be an instance of +Transform+.
+ #
+ # yields +self+ and +io+ to the given block
+ def transform(io)
+ reset_read_bits
+
+ saved = @io
+ @io = io.prepend_to_chain(@io)
+ yield(self, io)
+ io.after_read_transform
+ ensure
+ @io = saved
end
- # Returns the current offset of the io stream. Offset will be rounded
- # up when reading bitfields.
- def offset
- offset_raw
+ # The number of bytes remaining in the io steam.
+ def num_bytes_remaining
+ @io.num_bytes_remaining
end
# Seek +n+ bytes from the current position in the io stream.
- def seekbytes(n)
+ def skipbytes(n)
reset_read_bits
- seek(n)
+ @io.skip(n)
+ end
+
+ # Seek to an absolute offset within the io stream.
+ def seek_to_abs_offset(n)
+ reset_read_bits
+ @io.seek_abs(n)
end
# Reads exactly +n+ bytes from +io+.
@@ -311,7 +124,7 @@ module BinData
private
def read(n = nil)
- str = read_raw(buffer_limited_n(n))
+ str = @io.read(n)
if n
raise EOFError, "End of file reached" if str.nil?
raise IOError, "data truncated" if str.size < n
@@ -332,7 +145,7 @@ module BinData
end
def accumulate_big_endian_bits
- byte = read(1).unpack('C').at(0) & 0xff
+ byte = read(1).unpack1('C') & 0xff
@rval = (@rval << 8) | byte
@rnbits += 8
end
@@ -350,7 +163,7 @@ module BinData
end
def accumulate_little_endian_bits
- byte = read(1).unpack('C').at(0) & 0xff
+ byte = read(1).unpack1('C') & 0xff
@rval = @rval | (byte << @rnbits)
@rnbits += 8
end
@@ -368,36 +181,46 @@ module BinData
#
# See IO::Read for more information.
class Write
- include Common
def initialize(io)
- super(io)
+ if self.class === io
+ raise ArgumentError, "io must not be a #{self.class}"
+ end
+
+ # wrap strings in a StringIO
+ if io.respond_to?(:to_str)
+ io = BinData::IO.create_string_io(io.to_str)
+ end
+
+ @io = RawIO.new(io)
@wnbits = 0
@wval = 0
@wendian = nil
end
- # Sets a buffer of +n+ bytes on the io stream. Any writes inside the
- # +block+ will be contained within this buffer. If less than +n+ bytes
- # are written inside the block, the remainder will be padded with '\0'
- # bytes.
- def with_buffer(n)
- with_buffer_common(n) do |_buf_start, buf_end|
- yield
- write("\0" * (buf_end - offset))
- end
- end
-
- # Returns the current offset of the io stream. Offset will be rounded
- # up when writing bitfields.
- def offset
- offset_raw + (@wnbits > 0 ? 1 : 0)
- end
-
- # Seek +n+ bytes from the current position in the io stream.
- def seekbytes(n)
+ # Allow transforming data in the output stream.
+ # See +BinData::Buffer+ as an example.
+ #
+ # +io+ must be an instance of +Transform+.
+ #
+ # yields +self+ and +io+ to the given block
+ def transform(io)
flushbits
- seek(n)
+
+ saved = @io
+ @io = io.prepend_to_chain(@io)
+ yield(self, io)
+ io.after_write_transform
+ ensure
+ @io = saved
+ end
+
+ # Seek to an absolute offset within the io stream.
+ def seek_to_abs_offset(n)
+ raise IOError, "stream is unseekable" unless @io.seekable?
+
+ flushbits
+ @io.seek_abs(n)
end
# Writes the given string of bytes to the io stream.
@@ -438,12 +261,7 @@ module BinData
private
def write(data)
- n = buffer_limited_n(data.size)
- if n < data.size
- data = data[0, n]
- end
-
- write_raw(data)
+ @io.write(data)
end
def write_big_endian_bits(val, nbits)
@@ -492,5 +310,210 @@ module BinData
(1 << nbits) - 1
end
end
+
+ # API used to access the raw data stream.
+ class RawIO
+ def initialize(io)
+ @io = io
+ @pos = 0
+
+ if is_seekable?(io)
+ @initial_pos = io.pos
+ else
+ singleton_class.prepend(UnSeekableIO)
+ end
+ end
+
+ def is_seekable?(io)
+ io.pos
+ rescue NoMethodError, Errno::ESPIPE, Errno::EPIPE, Errno::EINVAL
+ nil
+ end
+
+ def seekable?
+ true
+ end
+
+ def num_bytes_remaining
+ start_mark = @io.pos
+ @io.seek(0, ::IO::SEEK_END)
+ end_mark = @io.pos
+ @io.seek(start_mark, ::IO::SEEK_SET)
+
+ end_mark - start_mark
+ end
+
+ def offset
+ @pos
+ end
+
+ def skip(n)
+ raise IOError, "can not skip backwards" if n.negative?
+ @io.seek(n, ::IO::SEEK_CUR)
+ @pos += n
+ end
+
+ def seek_abs(n)
+ @io.seek(n + @initial_pos, ::IO::SEEK_SET)
+ @pos = n
+ end
+
+ def read(n)
+ @io.read(n).tap { |data| @pos += (data&.size || 0) }
+ end
+
+ def write(data)
+ @io.write(data)
+ end
+ end
+
+ # An IO stream may be transformed before processing.
+ # e.g. encoding, compression, buffered.
+ #
+ # Multiple transforms can be chained together.
+ #
+ # To create a new transform layer, subclass +Transform+.
+ # Override the public methods +#read+ and +#write+ at a minimum.
+ # Additionally the hook, +#before_transform+, +#after_read_transform+
+ # and +#after_write_transform+ are available as well.
+ #
+ # IMPORTANT! If your transform changes the size of the underlying
+ # data stream (e.g. compression), then call
+ # +::transform_changes_stream_length!+ in your subclass.
+ class Transform
+ class << self
+ # Indicates that this transform changes the length of the
+ # underlying data. e.g. performs compression or error correction
+ def transform_changes_stream_length!
+ prepend(UnSeekableIO)
+ end
+ end
+
+ def initialize
+ @chain_io = nil
+ end
+
+ # Initialises this transform.
+ #
+ # Called before any IO operations.
+ def before_transform; end
+
+ # Flushes the input stream.
+ #
+ # Called after the final read operation.
+ def after_read_transform; end
+
+ # Flushes the output stream.
+ #
+ # Called after the final write operation.
+ def after_write_transform; end
+
+ # Prepends this transform to the given +chain+.
+ #
+ # Returns self (the new head of chain).
+ def prepend_to_chain(chain)
+ @chain_io = chain
+ before_transform
+ self
+ end
+
+ # Is the IO seekable?
+ def seekable?
+ @chain_io.seekable?
+ end
+
+ # How many bytes are available for reading?
+ def num_bytes_remaining
+ chain_num_bytes_remaining
+ end
+
+ # The current offset within the stream.
+ def offset
+ chain_offset
+ end
+
+ # Skips forward +n+ bytes in the input stream.
+ def skip(n)
+ chain_skip(n)
+ end
+
+ # Seeks to the given absolute position.
+ def seek_abs(n)
+ chain_seek_abs(n)
+ end
+
+ # Reads +n+ bytes from the stream.
+ def read(n)
+ chain_read(n)
+ end
+
+ # Writes +data+ to the stream.
+ def write(data)
+ chain_write(data)
+ end
+
+ #-------------
+ private
+
+ def create_empty_binary_string
+ "".force_encoding(Encoding::BINARY)
+ end
+
+ def chain_seekable?
+ @chain_io.seekable?
+ end
+
+ def chain_num_bytes_remaining
+ @chain_io.num_bytes_remaining
+ end
+
+ def chain_offset
+ @chain_io.offset
+ end
+
+ def chain_skip(n)
+ @chain_io.skip(n)
+ end
+
+ def chain_seek_abs(n)
+ @chain_io.seek_abs(n)
+ end
+
+ def chain_read(n)
+ @chain_io.read(n)
+ end
+
+ def chain_write(data)
+ @chain_io.write(data)
+ end
+ end
+
+ # A module to be prepended to +RawIO+ or +Transform+ when the data
+ # stream is not seekable. This is either due to underlying stream
+ # being unseekable or the transform changes the number of bytes.
+ module UnSeekableIO
+ def seekable?
+ false
+ end
+
+ def num_bytes_remaining
+ raise IOError, "stream is unseekable"
+ end
+
+ def skip(n)
+ raise IOError, "can not skip backwards" if n.negative?
+
+ # skip over data in 8k blocks
+ while n > 0
+ bytes_to_read = [n, 8192].min
+ read(bytes_to_read)
+ n -= bytes_to_read
+ end
+ end
+
+ def seek_abs(n)
+ skip(n - offset)
+ end
+ end
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/lazy.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/lazy.rb
similarity index 100%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/lazy.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/lazy.rb
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/name.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/name.rb
similarity index 95%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/name.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/name.rb
index bd22b50312..1a0e6cc9b9 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/name.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/name.rb
@@ -13,7 +13,7 @@ module BinData
#
module RegisterNamePlugin
- def self.included(base) #:nodoc:
+ def self.included(base) # :nodoc:
# The registered name may be provided explicitly.
base.optional_parameter :name
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/params.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/params.rb
similarity index 89%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/params.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/params.rb
index cb34dff682..278f2e9591 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/params.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/params.rb
@@ -27,7 +27,7 @@ module BinData
alias optional_parameter optional_parameters
alias default_parameter default_parameters
- def accepted_parameters #:nodoc:
+ def accepted_parameters # :nodoc:
@accepted_parameters ||= begin
ancestor_params = superclass.respond_to?(:accepted_parameters) ?
superclass.accepted_parameters : nil
@@ -114,13 +114,15 @@ module BinData
end
end
- def self.invalid_parameter_names
- @invalid_names ||= begin
- all_names = LazyEvaluator.instance_methods(true)
- allowed_names = [:name, :type]
- invalid_names = (all_names - allowed_names).uniq
+ class << self
+ def invalid_parameter_names
+ @invalid_parameter_names ||= begin
+ all_names = LazyEvaluator.instance_methods(true)
+ allowed_names = [:name, :type]
+ invalid_names = (all_names - allowed_names).uniq
- Hash[*invalid_names.collect { |key| [key.to_sym, true] }.flatten]
+ Hash[*invalid_names.collect { |key| [key.to_sym, true] }.flatten]
+ end
end
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/primitive.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/primitive.rb
similarity index 95%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/primitive.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/primitive.rb
index 9b9bd8d41d..8dc7bb4690 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/primitive.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/primitive.rb
@@ -73,11 +73,11 @@ module BinData
@struct = BinData::Struct.new(get_parameter(:struct_params), self)
end
- def respond_to?(symbol, include_private = false) #:nodoc:
+ def respond_to?(symbol, include_private = false) # :nodoc:
@struct.respond_to?(symbol, include_private) || super
end
- def method_missing(symbol, *args, &block) #:nodoc:
+ def method_missing(symbol, *args, &block) # :nodoc:
if @struct.respond_to?(symbol)
@struct.__send__(symbol, *args, &block)
else
@@ -91,7 +91,7 @@ module BinData
@value = get
end
- def debug_name_of(child) #:nodoc:
+ def debug_name_of(child) # :nodoc:
debug_name + "-internal-"
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/record.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/record.rb
similarity index 100%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/record.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/record.rb
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/registry.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/registry.rb
similarity index 79%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/registry.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/registry.rb
index fc47740bd5..fa986658d3 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/registry.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/registry.rb
@@ -1,6 +1,6 @@
module BinData
-
- class UnRegisteredTypeError < StandardError ; end
+ # Raised when #lookup fails.
+ class UnRegisteredTypeError < StandardError; end
# This registry contains a register of name -> class mappings.
#
@@ -18,7 +18,6 @@ module BinData
#
# Names are stored in under_score_style, not camelCase.
class Registry
-
def initialize
@registry = {}
end
@@ -49,13 +48,13 @@ module BinData
# Convert CamelCase +name+ to underscore style.
def underscore_name(name)
- name.
- to_s.
- sub(/.*::/, "").
- gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
- gsub(/([a-z\d])([A-Z])/, '\1_\2').
- tr("-", "_").
- downcase
+ name
+ .to_s
+ .sub(/.*::/, "")
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
+ .tr('-', '_')
+ .downcase
end
#---------------
@@ -65,7 +64,7 @@ module BinData
name = underscore_name(name)
if !registered?(name)
- search_prefix = [""].concat(Array(hints[:search_prefix]))
+ search_prefix = [""] + Array(hints[:search_prefix])
search_prefix.each do |prefix|
nwp = name_with_prefix(name, prefix)
if registered?(nwp)
@@ -85,7 +84,7 @@ module BinData
end
def name_with_prefix(name, prefix)
- prefix = prefix.to_s.chomp("_")
+ prefix = prefix.to_s.chomp('_')
if prefix == ""
name
else
@@ -96,11 +95,11 @@ module BinData
def name_with_endian(name, endian)
return name if endian.nil?
- suffix = (endian == :little) ? "le" : "be"
- if /^u?int\d+$/ =~ name
+ suffix = (endian == :little) ? 'le' : 'be'
+ if /^u?int\d+$/.match?(name)
name + suffix
else
- name + "_" + suffix
+ name + '_' + suffix
end
end
@@ -111,9 +110,10 @@ module BinData
end
def register_dynamic_class(name)
- if /^u?int\d+(le|be)$/ =~ name || /^s?bit\d+(le)?$/ =~ name
+ if /^u?int\d+(le|be)$/.match?(name) || /^s?bit\d+(le)?$/.match?(name)
class_name = name.gsub(/(?:^|_)(.)/) { $1.upcase }
begin
+ # call const_get for side effects
BinData.const_get(class_name)
rescue NameError
end
@@ -122,8 +122,8 @@ module BinData
def warn_if_name_is_already_registered(name, class_to_register)
prev_class = @registry[name]
- if $VERBOSE && prev_class && prev_class != class_to_register
- warn "warning: replacing registered class #{prev_class} " \
+ if prev_class && prev_class != class_to_register
+ Kernel.warn "warning: replacing registered class #{prev_class} " \
"with #{class_to_register}"
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/rest.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/rest.rb
similarity index 95%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/rest.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/rest.rb
index cdc104459c..d6eaa245d7 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/rest.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/rest.rb
@@ -1,4 +1,4 @@
-require "bindata/base_primitive"
+require 'bindata/base_primitive'
module BinData
# Rest will consume the input stream from the current position to the end of
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/sanitize.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/sanitize.rb
similarity index 95%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/sanitize.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/sanitize.rb
index 7325b206b0..99ff206203 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/sanitize.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/sanitize.rb
@@ -49,14 +49,10 @@ module BinData
@prototype = SanitizedPrototype.new(field_type, field_params, hints)
end
- attr_reader :prototype
+ attr_reader :prototype, :name
def name_as_sym
- @name.nil? ? nil : @name.to_sym
- end
-
- def name
- @name
+ @name&.to_sym
end
def has_parameter?(param)
@@ -74,11 +70,7 @@ module BinData
def initialize(hints, base_fields = nil)
@hints = hints
- if base_fields
- @fields = base_fields.raw_fields
- else
- @fields = []
- end
+ @fields = base_fields ? base_fields.raw_fields : []
end
def add_field(type, name, params)
@@ -179,7 +171,6 @@ module BinData
# is to recursively sanitize the parameters of an entire BinData object chain
# at a single time.
class SanitizedParameters < Hash
-
# Memoized constants
BIG_ENDIAN = SanitizedBigEndian.new
LITTLE_ENDIAN = SanitizedLittleEndian.new
@@ -210,7 +201,7 @@ module BinData
sanitize!
end
- alias_method :has_parameter?, :key?
+ alias has_parameter? key?
def has_at_least_one_of?(*keys)
keys.each do |key|
@@ -257,7 +248,9 @@ module BinData
end
def sanitize_object_prototype(key)
- sanitize(key) { |obj_type, obj_params| create_sanitized_object_prototype(obj_type, obj_params) }
+ sanitize(key) do |obj_type, obj_params|
+ create_sanitized_object_prototype(obj_type, obj_params)
+ end
end
def sanitize_fields(key, &block)
@@ -306,7 +299,7 @@ module BinData
end
def needs_sanitizing?(key)
- has_key?(key) && ! self[key].is_a?(SanitizedParameter)
+ has_parameter?(key) && !self[key].is_a?(SanitizedParameter)
end
def ensure_no_nil_values
@@ -320,7 +313,7 @@ module BinData
def merge_default_parameters!
@the_class.default_parameters.each do |key, value|
- self[key] = value unless has_key?(key)
+ self[key] = value unless has_parameter?(key)
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/section.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/section.rb
new file mode 100644
index 0000000000..8194ea01cf
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/section.rb
@@ -0,0 +1,97 @@
+require 'bindata/base'
+require 'bindata/dsl'
+
+module BinData
+ # A Section is a layer on top of a stream that transforms the underlying
+ # data. This allows BinData to process a stream that has multiple
+ # encodings. e.g. Some data data is compressed or encrypted.
+ #
+ # require 'bindata'
+ #
+ # class XorTransform < BinData::IO::Transform
+ # def initialize(xor)
+ # super()
+ # @xor = xor
+ # end
+ #
+ # def read(n)
+ # chain_read(n).bytes.map { |byte| (byte ^ @xor).chr }.join
+ # end
+ #
+ # def write(data)
+ # chain_write(data.bytes.map { |byte| (byte ^ @xor).chr }.join)
+ # end
+ # end
+ #
+ # obj = BinData::Section.new(transform: -> { XorTransform.new(0xff) },
+ # type: [:string, read_length: 5])
+ #
+ # obj.read("\x97\x9A\x93\x93\x90") #=> "hello"
+ #
+ #
+ # == Parameters
+ #
+ # Parameters may be provided at initialisation to control the behaviour of
+ # an object. These params are:
+ #
+ # :transform:: A callable that returns a new BinData::IO::Transform.
+ # :type:: The single type inside the buffer. Use a struct if
+ # multiple fields are required.
+ class Section < BinData::Base
+ extend DSLMixin
+
+ dsl_parser :section
+ arg_processor :section
+
+ mandatory_parameters :transform, :type
+
+ def initialize_instance
+ @type = get_parameter(:type).instantiate(nil, self)
+ end
+
+ def clear?
+ @type.clear?
+ end
+
+ def assign(val)
+ @type.assign(val)
+ end
+
+ def snapshot
+ @type.snapshot
+ end
+
+ def respond_to_missing?(symbol, include_all = false) # :nodoc:
+ @type.respond_to?(symbol, include_all) || super
+ end
+
+ def method_missing(symbol, *args, &block) # :nodoc:
+ @type.__send__(symbol, *args, &block)
+ end
+
+ def do_read(io) # :nodoc:
+ io.transform(eval_parameter(:transform)) do |transformed_io, _raw_io|
+ @type.do_read(transformed_io)
+ end
+ end
+
+ def do_write(io) # :nodoc:
+ io.transform(eval_parameter(:transform)) do |transformed_io, _raw_io|
+ @type.do_write(transformed_io)
+ end
+ end
+
+ def do_num_bytes # :nodoc:
+ to_binary_s.size
+ end
+ end
+
+ class SectionArgProcessor < BaseArgProcessor
+ include MultiFieldArgSeparator
+
+ def sanitize_parameters!(obj_class, params)
+ params.merge!(obj_class.dsl_params)
+ params.sanitize_object_prototype(:type)
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/skip.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/skip.rb
new file mode 100644
index 0000000000..b64374d033
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/skip.rb
@@ -0,0 +1,222 @@
+require 'bindata/base_primitive'
+require 'bindata/dsl'
+
+module BinData
+ # Skip will skip over bytes from the input stream. If the stream is not
+ # seekable, then the bytes are consumed and discarded.
+ #
+ # When writing, skip will write the appropriate number of zero bytes.
+ #
+ # require 'bindata'
+ #
+ # class A < BinData::Record
+ # skip length: 5
+ # string :a, read_length: 5
+ # end
+ #
+ # obj = A.read("abcdefghij")
+ # obj.a #=> "fghij"
+ #
+ #
+ # class B < BinData::Record
+ # skip do
+ # string read_length: 2, assert: 'ef'
+ # end
+ # string :s, read_length: 5
+ # end
+ #
+ # obj = B.read("abcdefghij")
+ # obj.s #=> "efghi"
+ #
+ #
+ # == Parameters
+ #
+ # Skip objects accept all the params that BinData::BasePrimitive
+ # does, as well as the following:
+ #
+ # :length:: The number of bytes to skip.
+ # :to_abs_offset:: Skips to the given absolute offset.
+ # :until_valid:: Skips until a given byte pattern is matched.
+ # This parameter contains a type that will raise
+ # a BinData::ValidityError unless an acceptable byte
+ # sequence is found. The type is represented by a
+ # Symbol, or if the type is to have params
+ # passed to it, then it should be provided as
+ # [type_symbol, hash_params].
+ #
+ class Skip < BinData::BasePrimitive
+ extend DSLMixin
+
+ dsl_parser :skip
+ arg_processor :skip
+
+ optional_parameters :length, :to_abs_offset, :until_valid
+ mutually_exclusive_parameters :length, :to_abs_offset, :until_valid
+
+ def initialize_shared_instance
+ extend SkipLengthPlugin if has_parameter?(:length)
+ extend SkipToAbsOffsetPlugin if has_parameter?(:to_abs_offset)
+ extend SkipUntilValidPlugin if has_parameter?(:until_valid)
+ super
+ end
+
+ #---------------
+ private
+
+ def value_to_binary_string(_)
+ len = skip_length
+ if len.negative?
+ raise ArgumentError,
+ "#{debug_name} attempted to seek backwards by #{len.abs} bytes"
+ end
+
+ "\000" * skip_length
+ end
+
+ def read_and_return_value(io)
+ len = skip_length
+ if len.negative?
+ raise ArgumentError,
+ "#{debug_name} attempted to seek backwards by #{len.abs} bytes"
+ end
+
+ io.skipbytes(len)
+ ""
+ end
+
+ def sensible_default
+ ""
+ end
+
+ # Logic for the :length parameter
+ module SkipLengthPlugin
+ def skip_length
+ eval_parameter(:length)
+ end
+ end
+
+ # Logic for the :to_abs_offset parameter
+ module SkipToAbsOffsetPlugin
+ def skip_length
+ eval_parameter(:to_abs_offset) - abs_offset
+ end
+ end
+
+ # Logic for the :until_valid parameter
+ module SkipUntilValidPlugin
+ def skip_length
+ @skip_length ||= 0
+ end
+
+ def read_and_return_value(io)
+ prototype = get_parameter(:until_valid)
+ validator = prototype.instantiate(nil, self)
+ fs = fast_search_for_obj(validator)
+
+ io.transform(ReadaheadIO.new) do |transformed_io, raw_io|
+ pos = 0
+ loop do
+ seek_to_pos(pos, raw_io)
+ validator.clear
+ validator.do_read(transformed_io)
+ break
+ rescue ValidityError
+ pos += 1
+
+ if fs
+ seek_to_pos(pos, raw_io)
+ pos += next_search_index(raw_io, fs)
+ end
+ end
+
+ seek_to_pos(pos, raw_io)
+ @skip_length = pos
+ end
+ end
+
+ def seek_to_pos(pos, io)
+ io.rollback
+ io.skip(pos)
+ end
+
+ # A fast search has a pattern string at a specific offset.
+ FastSearch = ::Struct.new('FastSearch', :pattern, :offset)
+
+ def fast_search_for(obj)
+ if obj.respond_to?(:asserted_binary_s)
+ FastSearch.new(obj.asserted_binary_s, obj.rel_offset)
+ else
+ nil
+ end
+ end
+
+ # If a search object has an +asserted_value+ field then we
+ # perform a faster search for a valid object.
+ def fast_search_for_obj(obj)
+ if BinData::Struct === obj
+ obj.each_pair(true) do |_, field|
+ fs = fast_search_for(field)
+ return fs if fs
+ end
+ elsif BinData::BasePrimitive === obj
+ return fast_search_for(obj)
+ end
+
+ nil
+ end
+
+ SEARCH_SIZE = 100_000
+
+ def next_search_index(io, fs)
+ buffer = binary_string("")
+
+ # start searching at fast_search offset
+ pos = fs.offset
+ io.skip(fs.offset)
+
+ loop do
+ data = io.read(SEARCH_SIZE)
+ raise EOFError, "no match" if data.nil?
+
+ buffer << data
+ index = buffer.index(fs.pattern)
+ if index
+ return pos + index - fs.offset
+ end
+
+ # advance buffer
+ searched = buffer.slice!(0..-fs.pattern.size)
+ pos += searched.size
+ end
+ end
+
+ class ReadaheadIO < BinData::IO::Transform
+ def before_transform
+ if !seekable?
+ raise IOError, "readahead is not supported on unseekable streams"
+ end
+
+ @mark = offset
+ end
+
+ def rollback
+ seek_abs(@mark)
+ end
+ end
+ end
+ end
+
+ class SkipArgProcessor < BaseArgProcessor
+ def sanitize_parameters!(obj_class, params)
+ params.merge!(obj_class.dsl_params)
+
+ unless params.has_at_least_one_of?(:length, :to_abs_offset, :until_valid)
+ raise ArgumentError,
+ "#{obj_class} requires :length, :to_abs_offset or :until_valid"
+ end
+
+ params.must_be_integer(:to_abs_offset, :length)
+ params.sanitize_object_prototype(:until_valid)
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/string.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/string.rb
similarity index 93%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/string.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/string.rb
index cf744ae2df..0a4d50cfe8 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/string.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/string.rb
@@ -1,4 +1,4 @@
-require "bindata/base_primitive"
+require 'bindata/base_primitive'
module BinData
# A String is a sequence of bytes. This is the same as strings in Ruby 1.8.
@@ -121,6 +121,14 @@ module BinData
def sensible_default
""
end
+
+ # Warns when reading if :value && no :read_length
+ module WarnNoReadLengthPlugin
+ def read_and_return_value(io)
+ Kernel.warn "#{debug_name} does not have a :read_length parameter - returning empty string"
+ ""
+ end
+ end
end
class StringArgProcessor < BaseArgProcessor
@@ -142,12 +150,4 @@ module BinData
pad_byte
end
end
-
- # Warns when reading if :value && no :read_length
- module WarnNoReadLengthPlugin
- def read_and_return_value(io)
- warn "#{debug_name} does not have a :read_length parameter - returning empty string"
- ""
- end
- end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/stringz.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/stringz.rb
similarity index 82%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/stringz.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/stringz.rb
index ff047fca85..2351eca6a7 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/stringz.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/stringz.rb
@@ -1,4 +1,4 @@
-require "bindata/base_primitive"
+require 'bindata/base_primitive'
module BinData
# A BinData::Stringz object is a container for a zero ("\0") terminated
@@ -25,7 +25,6 @@ module BinData
# :max_length:: The maximum length of the string including the zero
# byte.
class Stringz < BinData::BasePrimitive
-
optional_parameters :max_length
def assign(val)
@@ -47,14 +46,14 @@ module BinData
def read_and_return_value(io)
max_length = eval_parameter(:max_length)
- str = ""
+ str = binary_string("")
i = 0
ch = nil
# read until zero byte or we have read in the max number of bytes
while ch != "\0" && i != max_length
ch = io.readbytes(1)
- str += ch
+ str << ch
i += 1
end
@@ -66,9 +65,15 @@ module BinData
end
def trim_and_zero_terminate(str)
+ max_length = eval_parameter(:max_length)
+ if max_length && max_length < 1
+ msg = "max_length must be >= 1 in #{debug_name} (got #{max_length})"
+ raise ArgumentError, msg
+ end
+
result = binary_string(str)
truncate_after_first_zero_byte!(result)
- trim_to!(result, eval_parameter(:max_length))
+ trim_to!(result, max_length)
append_zero_byte_if_needed!(result)
result
end
@@ -79,16 +84,13 @@ module BinData
def trim_to!(str, max_length = nil)
if max_length
- max_length = 1 if max_length < 1
str.slice!(max_length..-1)
- if str.length == max_length && str[-1, 1] != "\0"
- str[-1, 1] = "\0"
- end
+ str[-1, 1] = "\0" if str.length == max_length
end
end
def append_zero_byte_if_needed!(str)
- if str.length == 0 || str[-1, 1] != "\0"
+ if str.empty? || str[-1, 1] != "\0"
str << "\0"
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/struct.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/struct.rb
similarity index 78%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/struct.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/struct.rb
index f990036e1b..1b253d8d5a 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/struct.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/struct.rb
@@ -2,7 +2,6 @@ require 'bindata/base'
require 'bindata/delayed_io'
module BinData
-
class Base
optional_parameter :onlyif, :byte_align # Used by Struct
end
@@ -66,16 +65,18 @@ module BinData
RESERVED =
Hash[*
(Hash.instance_methods +
- %w{alias and begin break case class def defined do else elsif
+ %w[alias and begin break case class def defined do else elsif
end ensure false for if in module next nil not or redo
rescue retry return self super then true undef unless until
- when while yield} +
- %w{array element index value} +
- %w{type initial_length read_until} +
- %w{fields endian search_prefix hide only_if byte_align} +
- %w{choices selection copy_on_change} +
- %w{read_abs_offset struct_params}).collect(&:to_sym).
- uniq.collect { |key| [key, true] }.flatten
+ when while yield] +
+ %w[array element index value] +
+ %w[type initial_length read_until] +
+ %w[fields endian search_prefix hide onlyif byte_align] +
+ %w[choices selection copy_on_change] +
+ %w[read_abs_offset struct_params])
+ .collect(&:to_sym)
+ .uniq.collect { |key| [key, true] }
+ .flatten
]
def initialize_shared_instance
@@ -90,11 +91,11 @@ module BinData
@field_objs = []
end
- def clear #:nodoc:
- @field_objs.each { |f| f.clear unless f.nil? }
+ def clear # :nodoc:
+ @field_objs.each { |f| f.nil? || f.clear }
end
- def clear? #:nodoc:
+ def clear? # :nodoc:
@field_objs.all? { |f| f.nil? || f.clear? }
end
@@ -124,28 +125,28 @@ module BinData
end
end
- def debug_name_of(child) #:nodoc:
+ def debug_name_of(child) # :nodoc:
field_name = @field_names[find_index_of(child)]
"#{debug_name}.#{field_name}"
end
- def offset_of(child) #:nodoc:
+ def offset_of(child) # :nodoc:
instantiate_all_objs
sum = sum_num_bytes_below_index(find_index_of(child))
child.bit_aligned? ? sum.floor : sum.ceil
end
- def do_read(io) #:nodoc:
+ def do_read(io) # :nodoc:
instantiate_all_objs
@field_objs.each { |f| f.do_read(io) if include_obj_for_io?(f) }
end
- def do_write(io) #:nodoc
+ def do_write(io) # :nodoc:
instantiate_all_objs
@field_objs.each { |f| f.do_write(io) if include_obj_for_io?(f) }
end
- def do_num_bytes #:nodoc:
+ def do_num_bytes # :nodoc:
instantiate_all_objs
sum_num_bytes_for_all_fields
end
@@ -155,19 +156,28 @@ module BinData
end
def []=(key, value)
- obj = find_obj_for_name(key)
- if obj
- obj.assign(value)
- end
+ find_obj_for_name(key)&.assign(value)
end
def key?(key)
@field_names.index(base_field_name(key))
end
- def each_pair
- @field_names.compact.each do |name|
- yield [name, find_obj_for_name(name)]
+ # Calls the given block for each field_name-field_obj pair.
+ #
+ # Does not include anonymous or hidden fields unless
+ # +include_all+ is true.
+ def each_pair(include_all = false)
+ instantiate_all_objs
+
+ pairs = @field_names.zip(@field_objs).select do |name, _obj|
+ name || include_all
+ end
+
+ if block_given?
+ pairs.each { |el| yield(el) }
+ else
+ pairs.each
end
end
@@ -205,8 +215,6 @@ module BinData
if index
instantiate_obj_at(index)
@field_objs[index]
- else
- nil
end
end
@@ -243,7 +251,7 @@ module BinData
{}
else
hash = Snapshot.new
- val.each_pair { |k,v| hash[k] = v }
+ val.each_pair { |k, v| hash[k] = v }
hash
end
end
@@ -275,12 +283,12 @@ module BinData
end
# A hash that can be accessed via attributes.
- class Snapshot < ::Hash #:nodoc:
+ class Snapshot < ::Hash # :nodoc:
def []=(key, value)
super unless value.nil?
end
- def respond_to?(symbol, include_private = false)
+ def respond_to_missing?(symbol, include_all = false)
key?(symbol) || super
end
@@ -288,60 +296,71 @@ module BinData
key?(symbol) ? self[symbol] : super
end
end
- end
- # Align fields to a multiple of :byte_align
- module ByteAlignPlugin
- def do_read(io)
- initial_offset = io.offset
- instantiate_all_objs
- @field_objs.each do |f|
- if include_obj?(f)
+ # Align fields to a multiple of :byte_align
+ module ByteAlignPlugin
+ def do_read(io)
+ offset = 0
+ instantiate_all_objs
+ @field_objs.each do |f|
+ next unless include_obj?(f)
+
if align_obj?(f)
- io.seekbytes(bytes_to_align(f, io.offset - initial_offset))
+ nbytes = bytes_to_align(f, offset.ceil)
+ offset = offset.ceil + nbytes
+ io.readbytes(nbytes)
end
+
f.do_read(io)
+ nbytes = f.do_num_bytes
+ offset = (nbytes.is_a?(Integer) ? offset.ceil : offset) + nbytes
end
end
- end
- def do_write(io)
- initial_offset = io.offset
- instantiate_all_objs
- @field_objs.each do |f|
- if include_obj?(f)
+ def do_write(io)
+ offset = 0
+ instantiate_all_objs
+ @field_objs.each do |f|
+ next unless include_obj?(f)
+
if align_obj?(f)
- io.writebytes("\x00" * bytes_to_align(f, io.offset - initial_offset))
+ nbytes = bytes_to_align(f, offset.ceil)
+ offset = offset.ceil + nbytes
+ io.writebytes("\x00" * nbytes)
end
+
f.do_write(io)
+ nbytes = f.do_num_bytes
+ offset = (nbytes.is_a?(Integer) ? offset.ceil : offset) + nbytes
end
end
- end
- def sum_num_bytes_below_index(index)
- sum = 0
- (0...@field_objs.length).each do |i|
- obj = @field_objs[i]
- if include_obj?(obj)
- sum = sum.ceil + bytes_to_align(obj, sum.ceil) if align_obj?(obj)
+ def sum_num_bytes_below_index(index)
+ sum = 0
+ @field_objs.each_with_index do |obj, i|
+ next unless include_obj?(obj)
+
+ if align_obj?(obj)
+ sum = sum.ceil + bytes_to_align(obj, sum.ceil)
+ end
break if i >= index
nbytes = obj.do_num_bytes
sum = (nbytes.is_a?(Integer) ? sum.ceil : sum) + nbytes
end
+
+ sum
end
- sum
- end
+ def bytes_to_align(obj, rel_offset)
+ align = obj.eval_parameter(:byte_align)
+ (align - (rel_offset % align)) % align
+ end
- def bytes_to_align(obj, rel_offset)
- align = obj.eval_parameter(:byte_align)
- (align - (rel_offset % align)) % align
- end
-
- def align_obj?(obj)
- obj.has_parameter?(:byte_align)
+ def align_obj?(obj)
+ obj.has_parameter?(:byte_align)
+ end
end
end
@@ -362,13 +381,11 @@ module BinData
def sanitize_search_prefix(params)
params.sanitize(:search_prefix) do |sprefix|
- search_prefix = []
- Array(sprefix).each do |prefix|
- prefix = prefix.to_s.chomp("_")
- search_prefix << prefix if prefix != ""
+ search_prefix = Array(sprefix).collect do |prefix|
+ prefix.to_s.chomp("_")
end
- search_prefix
+ search_prefix - [""]
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/trace.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/trace.rb
similarity index 76%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/trace.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/trace.rb
index 4e4f9ba59c..d1dce92fe5 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/trace.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/trace.rb
@@ -1,24 +1,4 @@
module BinData
- # reference to the current tracer
- @tracer ||= nil
-
- class Tracer #:nodoc:
- def initialize(io)
- @trace_io = io
- end
-
- def trace(msg)
- @trace_io.puts(msg)
- end
-
- def trace_obj(obj_name, val)
- if val.length > 30
- val = val.slice(0..30) + "..."
- end
-
- trace "#{obj_name} => #{val}"
- end
- end
# Turn on trace information when reading a BinData object.
# If +block+ is given then the tracing only occurs for that block.
@@ -37,30 +17,55 @@ module BinData
end
end
- def trace_message #:nodoc:
- yield @tracer if @tracer
+ # reference to the current tracer
+ @tracer ||= nil
+
+ class Tracer # :nodoc:
+ def initialize(io)
+ @trace_io = io
+ end
+
+ def trace(msg)
+ @trace_io.puts(msg)
+ end
+
+ def trace_obj(obj_name, val)
+ if val.length > 30
+ val = val.slice(0..30) + "..."
+ end
+
+ trace "#{obj_name} => #{val}"
+ end
+ end
+
+ def trace_message # :nodoc:
+ yield @tracer
end
module_function :trace_reading, :trace_message
- class BasePrimitive < BinData::Base
- class << self
- def turn_on_tracing
+ module TraceHook
+ def turn_on_tracing
+ if !method_defined? :do_read_without_hook
alias_method :do_read_without_hook, :do_read
alias_method :do_read, :do_read_with_hook
end
+ end
- def turn_off_tracing
+ def turn_off_tracing
+ if method_defined? :do_read_without_hook
alias_method :do_read, :do_read_without_hook
+ remove_method :do_read_without_hook
end
end
+ end
+
+ class BasePrimitive < BinData::Base
+ extend TraceHook
def do_read_with_hook(io)
do_read_without_hook(io)
- trace_value
- end
- def trace_value
BinData.trace_message do |tracer|
value_string = _value.inspect
tracer.trace_obj(debug_name, value_string)
@@ -69,27 +74,15 @@ module BinData
end
class Choice < BinData::Base
- class << self
- def turn_on_tracing
- alias_method :do_read_without_hook, :do_read
- alias_method :do_read, :do_read_with_hook
- end
-
- def turn_off_tracing
- alias_method :do_read, :do_read_without_hook
- end
- end
+ extend TraceHook
def do_read_with_hook(io)
- trace_selection
- do_read_without_hook(io)
- end
-
- def trace_selection
BinData.trace_message do |tracer|
selection_string = eval_parameter(:selection).inspect
tracer.trace_obj("#{debug_name}-selection-", selection_string)
end
+
+ do_read_without_hook(io)
end
end
end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/brotli.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/brotli.rb
new file mode 100755
index 0000000000..9a9396fd68
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/brotli.rb
@@ -0,0 +1,35 @@
+require 'brotli'
+
+module BinData
+ module Transform
+ # Transforms a brotli compressed data stream.
+ #
+ # gem install brotli
+ class Brotli < BinData::IO::Transform
+ transform_changes_stream_length!
+
+ def initialize(read_length)
+ super()
+ @length = read_length
+ end
+
+ def read(n)
+ @read ||= ::Brotli::inflate(chain_read(@length))
+ @read.slice!(0...n)
+ end
+
+ def write(data)
+ @write ||= create_empty_binary_string
+ @write << data
+ end
+
+ def after_read_transform
+ raise IOError, "didn't read all data" unless @read.empty?
+ end
+
+ def after_write_transform
+ chain_write(::Brotli::deflate(@write))
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/lz4.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/lz4.rb
new file mode 100755
index 0000000000..227343e3d5
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/lz4.rb
@@ -0,0 +1,35 @@
+require 'extlz4'
+
+module BinData
+ module Transform
+ # Transforms a LZ4 compressed data stream.
+ #
+ # gem install extlz4
+ class LZ4 < BinData::IO::Transform
+ transform_changes_stream_length!
+
+ def initialize(read_length)
+ super()
+ @length = read_length
+ end
+
+ def read(n)
+ @read ||= ::LZ4::decode(chain_read(@length))
+ @read.slice!(0...n)
+ end
+
+ def write(data)
+ @write ||= create_empty_binary_string
+ @write << data
+ end
+
+ def after_read_transform
+ raise IOError, "didn't read all data" unless @read.empty?
+ end
+
+ def after_write_transform
+ chain_write(::LZ4::encode(@write))
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/lzma.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/lzma.rb
new file mode 100755
index 0000000000..332a4fe9ff
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/lzma.rb
@@ -0,0 +1,35 @@
+require 'xz'
+
+module BinData
+ module Transform
+ # Transforms a lzma compressed data stream.
+ #
+ # gem install ruby-xz
+ class Lzma < BinData::IO::Transform
+ transform_changes_stream_length!
+
+ def initialize(read_length)
+ super()
+ @length = read_length
+ end
+
+ def read(n)
+ @read ||= ::XZ::decompress(chain_read(@length))
+ @read.slice!(0...n)
+ end
+
+ def write(data)
+ @write ||= create_empty_binary_string
+ @write << data
+ end
+
+ def after_read_transform
+ raise IOError, "didn't read all data" unless @read.empty?
+ end
+
+ def after_write_transform
+ chain_write(::XZ::compress(@write))
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/xor.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/xor.rb
new file mode 100755
index 0000000000..c67d0465e2
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/xor.rb
@@ -0,0 +1,19 @@
+module BinData
+ module Transform
+ # Transforms the data stream by xoring each byte.
+ class Xor < BinData::IO::Transform
+ def initialize(xor)
+ super()
+ @xor = xor
+ end
+
+ def read(n)
+ chain_read(n).bytes.map { |byte| (byte ^ @xor).chr }.join
+ end
+
+ def write(data)
+ chain_write(data.bytes.map { |byte| (byte ^ @xor).chr }.join)
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/xz.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/xz.rb
new file mode 100755
index 0000000000..c828839732
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/xz.rb
@@ -0,0 +1,35 @@
+require 'xz'
+
+module BinData
+ module Transform
+ # Transforms a xz compressed data stream.
+ #
+ # gem install ruby-xz
+ class XZ < BinData::IO::Transform
+ transform_changes_stream_length!
+
+ def initialize(read_length)
+ super()
+ @length = read_length
+ end
+
+ def read(n)
+ @read ||= ::XZ::decompress(chain_read(@length))
+ @read.slice!(0...n)
+ end
+
+ def write(data)
+ @write ||= create_empty_binary_string
+ @write << data
+ end
+
+ def after_read_transform
+ raise IOError, "didn't read all data" unless @read.empty?
+ end
+
+ def after_write_transform
+ chain_write(::XZ::compress(@write))
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/zlib.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/zlib.rb
new file mode 100755
index 0000000000..4e724af1fd
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/zlib.rb
@@ -0,0 +1,33 @@
+require 'zlib'
+
+module BinData
+ module Transform
+ # Transforms a zlib compressed data stream.
+ class Zlib < BinData::IO::Transform
+ transform_changes_stream_length!
+
+ def initialize(read_length)
+ super()
+ @length = read_length
+ end
+
+ def read(n)
+ @read ||= ::Zlib::Inflate.inflate(chain_read(@length))
+ @read.slice!(0...n)
+ end
+
+ def write(data)
+ @write ||= create_empty_binary_string
+ @write << data
+ end
+
+ def after_read_transform
+ raise IOError, "didn't read all data" unless @read.empty?
+ end
+
+ def after_write_transform
+ chain_write(::Zlib::Deflate.deflate(@write))
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/zstd.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/zstd.rb
new file mode 100755
index 0000000000..58e3b126a5
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/transform/zstd.rb
@@ -0,0 +1,35 @@
+require 'zstd-ruby'
+
+module BinData
+ module Transform
+ # Transforms a zstd compressed data stream.
+ #
+ # gem install zstd-ruby
+ class Zstd < BinData::IO::Transform
+ transform_changes_stream_length!
+
+ def initialize(read_length)
+ super()
+ @length = read_length
+ end
+
+ def read(n)
+ @read ||= ::Zstd::decompress(chain_read(@length))
+ @read.slice!(0...n)
+ end
+
+ def write(data)
+ @write ||= create_empty_binary_string
+ @write << data
+ end
+
+ def after_read_transform
+ raise IOError, "didn't read all data" unless @read.empty?
+ end
+
+ def after_write_transform
+ chain_write(::Zstd::compress(@write))
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/uint8_array.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/uint8_array.rb
similarity index 95%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/uint8_array.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/uint8_array.rb
index 72816611e8..1507ab6ca1 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/uint8_array.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/uint8_array.rb
@@ -1,4 +1,4 @@
-require "bindata/base_primitive"
+require 'bindata/base_primitive'
module BinData
# Uint8Array is a specialised type of array that only contains
@@ -49,7 +49,7 @@ module BinData
end
class Uint8ArrayArgProcessor < BaseArgProcessor
- def sanitize_parameters!(obj_class, params) #:nodoc:
+ def sanitize_parameters!(obj_class, params) # :nodoc:
# ensure one of :initial_length and :read_until exists
unless params.has_at_least_one_of?(:initial_length, :read_until)
params[:initial_length] = 0
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/version.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/version.rb
new file mode 100644
index 0000000000..6856d5bdf3
--- /dev/null
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/version.rb
@@ -0,0 +1,3 @@
+module BinData
+ VERSION = '2.5.0'
+end
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/virtual.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/virtual.rb
similarity index 91%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/virtual.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/virtual.rb
index 1a7205f74b..93eb902d5b 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/virtual.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/virtual.rb
@@ -1,4 +1,4 @@
-require "bindata/base"
+require 'bindata/base'
module BinData
# A virtual field is one that is neither read, written nor occupies space in
@@ -15,7 +15,7 @@ module BinData
#
# obj = A.read("abcdeabcde")
# obj.a #=> "abcde"
- # obj.c.offset #=> 10
+ # obj.c.rel_offset #=> 10
#
# obj = A.read("abcdeABCDE") #=> BinData::ValidityError: assertion failed for obj.c
#
@@ -29,12 +29,9 @@ module BinData
# [:value] The virtual object will always have this value.
#
class Virtual < BinData::BasePrimitive
+ def do_read(io); end
- def do_read(io)
- end
-
- def do_write(io)
- end
+ def do_write(io); end
def do_num_bytes
0.0
diff --git a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/warnings.rb b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/warnings.rb
similarity index 94%
rename from Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/warnings.rb
rename to Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/warnings.rb
index 3d1cfe728b..71868bb96c 100644
--- a/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.4.15/lib/bindata/warnings.rb
+++ b/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/bindata-2.5.0/lib/bindata/warnings.rb
@@ -13,7 +13,7 @@ module BinData
owner = method(:initialize).owner
if owner != BinData::Base
msg = "Don't override #initialize on #{owner}."
- if %w(BinData::Base BinData::BasePrimitive).include? self.class.superclass.name
+ if %w[BinData::Base BinData::BasePrimitive].include? self.class.superclass.name
msg += "\nrename #initialize to #initialize_instance."
end
fail msg