TO_TYPE_SPECIFIC_IO
Description
Build a TypeSpecificIO value for type T over data pointer d. Token-pastes _write_T and _read_T to pick the right callback pair from the per-type writer/reader symbols.
Parameters
| Name | Direction | Description |
|---|---|---|
T |
in | Type identifier (must match _write_T / _read_T symbols). |
d |
in | Pointer to the value being read/written. |
Success
Returns an initialised TypeSpecificIO.
Failure
Compile-time error if _write_T / _read_T are undeclared for the given T.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Io.h:203:
#ifdef __cplusplus
# define ZstrIO(zstr, alloc_ptr) \
TO_TYPE_SPECIFIC_IO(ZstrAlloc, &LVAL(((ZstrIOArg) {.value = (void *)&(zstr), .allocator = (alloc_ptr)})))
#else
# define ZstrIO(zstr, alloc_ptr) \- In
Io.h:219:
# define IOFMT_BITVEC_CASE_(x, addr) \
BitVec: \
TO_TYPE_SPECIFIC_IO(BitVec, addr),
#else
# define IOFMT_BITVEC_CASE_(x, addr)- In
Io.h:227:
# define IOFMT_INT_CASE_(x, addr) \
Int: \
TO_TYPE_SPECIFIC_IO(Int, addr),
#else
# define IOFMT_INT_CASE_(x, addr)- In
Io.h:235:
# define IOFMT_FLOAT_CASE_(x, addr) \
Float: \
TO_TYPE_SPECIFIC_IO(Float, addr),
#else
# define IOFMT_FLOAT_CASE_(x, addr)- In
Io.h:261:
(x), \
TypeSpecificIO: (x), \
Str: TO_TYPE_SPECIFIC_IO(Str, &(x)), \
IOFMT_FLOAT_CASE_(x, &(x)) IOFMT_INT_CASE_(x, &(x)) IOFMT_BITVEC_CASE_(x, &(x)) \
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
- In
Io.h:263:
Str: TO_TYPE_SPECIFIC_IO(Str, &(x)), \
IOFMT_FLOAT_CASE_(x, &(x)) IOFMT_INT_CASE_(x, &(x)) IOFMT_BITVEC_CASE_(x, &(x)) \
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
char *: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, &(x)), \
- In
Io.h:264:
IOFMT_FLOAT_CASE_(x, &(x)) IOFMT_INT_CASE_(x, &(x)) IOFMT_BITVEC_CASE_(x, &(x)) \
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
char *: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, &(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, &(x)), \
- In
Io.h:265:
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
char *: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, &(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, &(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, &(x)), \
- In
Io.h:266:
char *: TO_TYPE_SPECIFIC_IO(Zstr, &(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, &(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, &(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, &(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, &(x)) : \
- In
Io.h:267:
unsigned char: TO_TYPE_SPECIFIC_IO(u8, &(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, &(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, &(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, &(x)) : \
TO_TYPE_SPECIFIC_IO(u64, &(x)), \
- In
Io.h:268:
unsigned short: TO_TYPE_SPECIFIC_IO(u16, &(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, &(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, &(x)) : \
TO_TYPE_SPECIFIC_IO(u64, &(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, &(x)), \
- In
Io.h:269:
unsigned int: TO_TYPE_SPECIFIC_IO(u32, &(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, &(x)) : \
TO_TYPE_SPECIFIC_IO(u64, &(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, &(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, &(x)), \
- In
Io.h:270:
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, &(x)) : \
TO_TYPE_SPECIFIC_IO(u64, &(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, &(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, &(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, &(x)), \
- In
Io.h:271:
TO_TYPE_SPECIFIC_IO(u64, &(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, &(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, &(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, &(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, &(x)), \
- In
Io.h:272:
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, &(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, &(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, &(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, &(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, &(x)) : TO_TYPE_SPECIFIC_IO(i64, &(x)), \
- In
Io.h:273:
signed char: TO_TYPE_SPECIFIC_IO(i8, &(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, &(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, &(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, &(x)) : TO_TYPE_SPECIFIC_IO(i64, &(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, &(x)), \
- In
Io.h:274:
signed short: TO_TYPE_SPECIFIC_IO(i16, &(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, &(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, &(x)) : TO_TYPE_SPECIFIC_IO(i64, &(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, &(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, &(x)), \
- In
Io.h:275:
signed int: TO_TYPE_SPECIFIC_IO(i32, &(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, &(x)) : TO_TYPE_SPECIFIC_IO(i64, &(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, &(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, &(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, &(x)), \
- In
Io.h:276:
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, &(x)) : TO_TYPE_SPECIFIC_IO(i64, &(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, &(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, &(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, &(x)), \
char: TO_TYPE_SPECIFIC_IO(i8, &(x)) \
- In
Io.h:277:
signed long long: TO_TYPE_SPECIFIC_IO(i64, &(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, &(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, &(x)), \
char: TO_TYPE_SPECIFIC_IO(i8, &(x)) \
)- In
Io.h:278:
f32: TO_TYPE_SPECIFIC_IO(f32, &(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, &(x)), \
char: TO_TYPE_SPECIFIC_IO(i8, &(x)) \
)
#else- In
Io.h:285:
(x), \
TypeSpecificIO: (x), \
Str: TO_TYPE_SPECIFIC_IO(Str, (void *)&(x)), \
IOFMT_FLOAT_CASE_(x, (void *)&(x)) IOFMT_INT_CASE_(x, (void *)&(x)) IOFMT_BITVEC_CASE_(x, (void *)&(x)) \
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
- In
Io.h:287:
Str: TO_TYPE_SPECIFIC_IO(Str, (void *)&(x)), \
IOFMT_FLOAT_CASE_(x, (void *)&(x)) IOFMT_INT_CASE_(x, (void *)&(x)) IOFMT_BITVEC_CASE_(x, (void *)&(x)) \
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
char *: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, (void *)&(x)), \
- In
Io.h:288:
IOFMT_FLOAT_CASE_(x, (void *)&(x)) IOFMT_INT_CASE_(x, (void *)&(x)) IOFMT_BITVEC_CASE_(x, (void *)&(x)) \
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
char *: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, (void *)&(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, (void *)&(x)), \
- In
Io.h:289:
Zstr: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
char *: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, (void *)&(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, (void *)&(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)), \
- In
Io.h:290:
char *: TO_TYPE_SPECIFIC_IO(Zstr, (void *)&(x)), \
unsigned char: TO_TYPE_SPECIFIC_IO(u8, (void *)&(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, (void *)&(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)) : \
- In
Io.h:291:
unsigned char: TO_TYPE_SPECIFIC_IO(u8, (void *)&(x)), \
unsigned short: TO_TYPE_SPECIFIC_IO(u16, (void *)&(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
- In
Io.h:292:
unsigned short: TO_TYPE_SPECIFIC_IO(u16, (void *)&(x)), \
unsigned int: TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
- In
Io.h:293:
unsigned int: TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)), \
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)), \
- In
Io.h:294:
unsigned long: sizeof(unsigned long) == 4 ? TO_TYPE_SPECIFIC_IO(u32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, (void *)&(x)), \
- In
Io.h:295:
TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, (void *)&(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)), \
- In
Io.h:296:
unsigned long long: TO_TYPE_SPECIFIC_IO(u64, (void *)&(x)), \
signed char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, (void *)&(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)) : \
- In
Io.h:297:
signed char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)), \
signed short: TO_TYPE_SPECIFIC_IO(i16, (void *)&(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
- In
Io.h:298:
signed short: TO_TYPE_SPECIFIC_IO(i16, (void *)&(x)), \
signed int: TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
- In
Io.h:299:
signed int: TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)), \
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, (void *)&(x)), \
- In
Io.h:300:
signed long: sizeof(signed long) == 4 ? TO_TYPE_SPECIFIC_IO(i32, (void *)&(x)) : \
TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, (void *)&(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, (void *)&(x)), \
- In
Io.h:301:
TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
signed long long: TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, (void *)&(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, (void *)&(x)), \
char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)) \
- In
Io.h:302:
signed long long: TO_TYPE_SPECIFIC_IO(i64, (void *)&(x)), \
f32: TO_TYPE_SPECIFIC_IO(f32, (void *)&(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, (void *)&(x)), \
char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)) \
)- In
Io.h:303:
f32: TO_TYPE_SPECIFIC_IO(f32, (void *)&(x)), \
f64: TO_TYPE_SPECIFIC_IO(f64, (void *)&(x)), \
char: TO_TYPE_SPECIFIC_IO(i8, (void *)&(x)) \
)
#endif
Last updated on