Sha256: adc7567cf4a45affc22e6e0a6fb2a5725fb5022a44130ad9b86494434058e521

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

module BinData
  class Base

    # Don't override initialize.  If you are defining a new kind of datatype
    # (list, array, choice etc) then put your initialization code in
    # #initialize_instance.  BinData objects might be initialized as prototypes
    # and your initialization code may not be called.
    #
    # If you're subclassing BinData::Record, you are definitely doing the wrong
    # thing.  Read the documentation on how to use BinData.
    # http://github.com/dmendel/bindata/wiki/Records
    alias_method :initialize_without_warning, :initialize
    def initialize_with_warning(*args)
      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
          msg += "\nrename #initialize to #initialize_instance."
        end
        fail msg
      end
      initialize_without_warning(*args)
    end
    alias_method :initialize, :initialize_with_warning

    def initialize_instance(*args)
      unless args.empty?
        fail "#{caller[0]} remove the call to super in #initialize_instance"
      end
    end

    # #offset has been renamed to #abs_offset.
    # Eventually #rel_offset will be renamed to #offset.
    def offset
      warn "#offset is deprecated in #{debug_name}. Use #abs_offset instead"
      abs_offset
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bindata-2.2.0 lib/bindata/warnings.rb
bindata-2.1.0 lib/bindata/warnings.rb