shithub: mc

ref: eeb8989f663c7c2f7ed7e5f92e38bced908cf805
dir: /lib/inifile/types.myr/

View raw version
use std

pkg inifile =
	type error = union
		`Fileerr
		`Parseerr int
		`Dupkey int
	;;

	type inifile = struct
		sects	: byte[:][:]
		elts	: std.htab((byte[:], byte[:]), byte[:])#
	;;

	impl std.hashable (byte[:], byte[:])
	impl std.equatable (byte[:], byte[:])
;;

impl std.hashable (byte[:], byte[:]) =
	hash = {k
		var sect, key

		(sect, key) = k
		-> std.hash(sect) ^ std.hash(key)
	}
;;

impl std.equatable (byte[:], byte[:]) =
	eq = {a, b
		var s1, k1
		var s2, k2

		(s1, k1) = a
		(s2, k2) = a
		-> std.eq(s1, s2) && std.eq(k1, k2)
	}
;;