ref: 4ea0da6b6c5c6b8c7c3ba3f70b210b647f612ed2
dir: /lib/inifile/access.myr/
use std
use bio
use "types.use"
pkg inifile =
	/* key getting/setting */
	const get	: (ini : inifile#, sect : byte[:], key : byte[:]	-> std.option(byte[:]))
	const getv	: (ini : inifile#, sect : byte[:], key : byte[:], val : byte[:]	-> byte[:])
	const has	: (ini : inifile#, sect : byte[:], key : byte[:] -> bool)
	const put	: (ini : inifile#, sect : byte[:], key : byte[:], val : byte[:]	-> void)
;;
const get = {ini, sect, key
	-> std.htget(ini.elts, (sect, key))
}
const getv = {ini, sect, key, val
	-> std.htgetv(ini.elts, (sect, key), val)
}
const has = {ini, sect, key
	-> std.hthas(ini.elts, (sect, key))
}
const put = {ini, sect, key, val
	if std.hthas(ini.elts, (sect, key))
		std.slfree(std.htgetv(ini.elts, (sect, key), ""))
	else
		sect = std.sldup(sect)
		key = std.sldup(key)
	;;
	std.htput(ini.elts, (sect, key), std.sldup(val))
}