Property definitions

nitc $ PrimitiveInstance :: defaultinit
# Special instance to handle primitives values (int, bool, etc.)
# The trick is just to encapsulate the “real” value.
class PrimitiveInstance[E]
	super Instance

	# The real value encapsulated
	redef var val: E

	redef fun is_true
	do
		if val == true then return true
		if val == false then return false
		abort
	end

	redef fun ==(o)
	do
		if not o isa PrimitiveInstance[nullable Object] then return false
		return self.val == o.val
	end

	redef fun eq_is(o)
	do
		if not o isa PrimitiveInstance[nullable Object] then return false
		return self.val.is_same_instance(o.val)
	end

	redef fun to_s do return "{mtype}#{val.object_id}({val or else "null"})"

	redef fun to_i do return val.as(Int)

	redef fun to_f do return val.as(Float)

	redef fun to_b do return val.as(Byte)

	redef fun to_i8 do return val.as(Int8)

	redef fun to_i16 do return val.as(Int16)

	redef fun to_u16 do return val.as(UInt16)

	redef fun to_i32 do return val.as(Int32)

	redef fun to_u32 do return val.as(UInt32)
end
src/interpreter/naive_interpreter.nit:799,1--843,3