shithub: mc

ref: ac7fed3ddfa3caf2e2c97f221e023b75ec9693ac
dir: /libstd/slcp.myr/

View raw version
use "die.use"
use "types.use"

pkg std =
	generic slcp : (a : @a[:], b : @a[:] -> void)
;;

generic slcp = {a : @a[:], b : @a[:]
	var i
	var addr_a, addr_b

	assert(a.len == b.len, "arguments to slcp() must be of equal length")

	addr_a = a castto(@a#) castto(intptr)
	addr_b = b castto(@a#) castto(intptr)
	if addr_a <= addr_b
		for i = 0; i < a.len; i++
			a[i] = b[i]
		;;
	else
		for i = a.len; i > 0; i--
			a[i - 1] = b[i - 1]
		;;
	;;
		
}