zt_value(3)

is a variant-like type that is used to pass values around libzt internals.

Section 3 libzt-doc bookworm source

Description

UNTITLED() LOCAL UNTITLED()

NAME

zt_value, zt_value_kind, — variant type for passing data into claim verifiers

SYNOPSIS

#include <zt.h>

typedef struct zt_value { ... } zt_value;

Type

Entry

Description

zt_value_kind

kind

Discriminator for the union

const char *

source

Source code used to compute the value

union { ... }

as

Union containing the actual value

bool

as.boolean

Value when used as ZT_BOOLEAN

int

as.integer

Value when used as ZT_INTEGER

unsigned

as.unsigned_integer

Value when used as ZT_UNSIGNED

int

as.rune

Value when used as ZT_RUNE

const char *

as.string

Value when used as ZT_STRING

const void *

as.pointer

Value when used as ZT_POINTER

intmax_t

as.intmax

Value when used as ZT_INTMAX

uintmax_t

as.uintmax

Value when used as ZT_UINTMAX

typedef enum zt_value_kind { ... } zt_value_kind;

Kind

Description

ZT_NOTHING

Placeholder for unused values

ZT_BOOLEAN

zt_value.as.boolean is valid

ZT_INTEGER

zt_value.as.integer is valid (deprecated)

ZT_UNSIGNED

zt_value.as.unsigned_integer is valid (deprecated)

ZT_RUNE

zt_value.as.rune is valid

ZT_STRING

zt_value.as.string is valid

ZT_POINTER

zt_value.as.pointer is valid

ZT_INTMAX

zt_value.as.intmax is valid

ZT_UINTMAX

zt_value.as.uintmax is valid

DESCRIPTION

zt_value is a variant-like type that is used to pass values around libzt internals. It is comprised of the kind enumeration, the as union as well as the source string.

zt_value_kind describes type of verification function arguments.

IMPLEMENTATION NOTES

zt_value exists to pass packed values of several types from the test source code, through the zt_claim type and into private verification functions that determine test outcome.

Tests using binary relations encode the operator as an argument of kind ZT_STRING.

BUGS

On some architectures ZT_INTEGER and ZT_UNSIGNED are too short to handle size_t and ssize_t values correctly. They are now deprecated and automatically promoted to ZT_INTMAX and ZT_UINTMAX respectively.

SEE ALSO

zt_visit_test_case(3), zt_visit_test_suite(3)

HISTORY

zt_value and zt_value_kind first appeared in libzt 0.1

ZT_INTMAX, ZT_UINTMAX and the corresponding union members first appeared in libzt 0.3.

AUTHORS

Zygmunt Krynicki <me@zygoon.pl> libzt 0.3.1 January 12, 2020 zt_value(3)