shithub: mc

ref: 82b14a44660222bab4c91275faa409bd224718fd
dir: /libstd/strjoin.myr/

View raw version
use "alloc.use"
use "die.use"
use "slcp.use"

pkg std =
	const strcat	: (a : byte[:], b : byte[:] -> byte[:])
	const strjoin	: (strings : byte[:][:] -> byte[:])
;;

const strcat = {a, b
	-> strjoin([a, b][:])
}

const strjoin = {strings
	var len, off
	var i
	var s

	len = 0
	for i = 0; i < strings.len; i++
		len += strings[i].len
	;;

	s = slalloc(len)
	off = 0
	for i = 0; i < strings.len; i++
		slcp(s[off:off + strings[i].len], strings[i])
		off += strings[i].len
	;;
	-> s
}