Example #1
0
static void
check_scalar(tnf_datum_t datum)
{
	CHECK_DATUM(datum);
	if (!INFO_SCALAR(DATUM_INFO(datum)))
		_tnf_error(DATUM_TNF(datum), TNF_ERR_TYPEMISMATCH);
	/* XXX Need to check for exact scalar type match as well */
}
Example #2
0
void
_tnf_check_record(tnf_datum_t datum)
{
	CHECK_DATUM(datum);

	/* All records must be tagged */
	if (!INFO_TAGGED(DATUM_INFO(datum)))
		_tnf_error(DATUM_TNF(datum), TNF_ERR_TYPEMISMATCH);
}
Example #3
0
void
_tnf_check_slots(tnf_datum_t datum)
{
	struct taginfo	*info;

	CHECK_DATUM(datum);

	info = DATUM_INFO(datum);

	/* Must be an aggregate */
	if (!(INFO_STRUCT(info) || INFO_ARRAY(info)))
		_tnf_error(DATUM_TNF(datum), TNF_ERR_TYPEMISMATCH);
}
Example #4
0
static struct slotinfo *
get_slotinfo(tnf_datum_t datum)
{
	struct taginfo	*info, *base_info;

	info 		= DATUM_INFO(datum);
	base_info	= INFO_DERIVED(info)? info->base: info;

	/* XXX base must not be a scalar tag */
	if (INFO_SCALAR(base_info))
		_tnf_error(DATUM_TNF(datum), TNF_ERR_BADTNF);

	return (base_info->slotinfo);
}