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