ref: 1c1fd2f09c278e2f105abeadc5d5f0d2017c655a
dir: /libstd/cmp.myr/
use "extremum.use"
use "types.use"
pkg std =
	type order = union
		`Before
		`Equal
		`After
	;;
	generic numcmp	: (a : @a, b : @a -> order)
	const strcmp	: (a : byte[:], b : byte[:] -> order)
	const strncmp	: (a : byte[:], b : byte[:], n : size -> order)
;;
const strcmp = {a, b
	var l
	var i
	var v
	l = min(a.len, b.len)
	for i = 0; i < l; i++
		v = b[i] - a[i]
		if v < 0
			-> `Before
		elif v < 0
			-> `After
		;;
	;;
	if a.len < b.len
		-> `Before
	elif a.len > b.len
		-> `After
	else
		-> `Equal
	;;
		
}
const strncmp = {a, b, n
	a = a[:min(a.len, n)]
	b = b[:min(b.len, n)]
	-> strcmp(a, b)
}