Sha256: e040b3d11838b11184c5fe1955288f78bcdb8830c2ec442fb09e73d3153bff50

Contents?: true

Size: 915 Bytes

Versions: 43

Compression:

Stored size: 915 Bytes

Contents

#!/usr/bin/env ruby

# Rex::Struct2
module Rex
module Struct2

module Element

	# elements should have to_s, but we don't define it here because
	# it will just overlap with inheritence and cause issues

	attr_reader  :value, :restraint, :container
	attr_writer  :restraint, :container

	# update the restraints on any value change
	def value=(newval)
		@value = newval
		self.update_restraint
	end

	# avoid conflicting with normal namespace length()
	def slength
		to_s().length()
	end

	def update_restraint
		if self.restraint
			# Sort of a hack, but remove the restraint before we update, so we aren't using
			# the old restraint during calculating the restraint update value
			old_restraint, self.restraint = self.restraint, nil
			old_restraint.update(self.slength)
			self.restraint = old_restraint
		end

		if self.container
			self.container.update_restraint
		end
	end

end

# end Rex::Struct2
end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
librex-0.0.35 lib/rex/struct2/element.rb
librex-0.0.34 lib/rex/struct2/element.rb
librex-0.0.33 lib/rex/struct2/element.rb
librex-0.0.32 lib/rex/struct2/element.rb
librex-0.0.31 lib/rex/struct2/element.rb
librex-0.0.30 lib/rex/struct2/element.rb
librex-0.0.29 lib/rex/struct2/element.rb
librex-0.0.28 lib/rex/struct2/element.rb
librex-0.0.27 lib/rex/struct2/element.rb
librex-0.0.26 lib/rex/struct2/element.rb
librex-0.0.25 lib/rex/struct2/element.rb
librex-0.0.23 lib/rex/struct2/element.rb
librex-0.0.21 lib/rex/struct2/element.rb
librex-0.0.19 lib/rex/struct2/element.rb
librex-0.0.17 lib/rex/struct2/element.rb
librex-0.0.13 lib/rex/struct2/element.rb
librex-0.0.12 lib/rex/struct2/element.rb
librex-0.0.7 lib/rex/struct2/element.rb
librex-0.0.6 lib/rex/struct2/element.rb
librex-0.0.5 lib/rex/struct2/element.rb