Data Structures | |
| struct | cuoo_type |
Types | |
|
| |
| cuoo_type_t | cuooP_type_type |
| cuoo_type_t | cuoo_type_type () |
| cu_bool_t | cuex_meta_is_type (cuex_meta_t meta) |
| cu_bool_t | cuoo_is_type (cuex_t e) |
| cuoo_type_t | cuoo_type_from_ex (cuex_t e) |
| cuex_t | cuoo_type_as_expr (cuoo_type_t t) |
| cuoo_shape_t | cuoo_type_shape (cuoo_type_t type) |
| cu_bool_t | cuoo_type_is_hctype (cuoo_type_t type) |
| cu_bool_t | cuoo_type_is_metatype (cuoo_type_t type) |
| cu_bool_t | cuoo_type_is_inltype (cuoo_type_t type) |
| cu_bool_t | cuoo_type_is_nonptr_inltype (cuoo_type_t type) |
| cu_bool_t | cuoo_type_is_proto (cuoo_type_t type) |
| void | cuoo_type_init_general (cuoo_type_t type, cuoo_shape_t shape, cuoo_impl_t impl, cuex_t atype) |
| void | cuoo_type_init_general_hcs (cuoo_type_t type, cuoo_shape_t shape, cuoo_impl_t impl, cuex_t atype, size_t key_size) |
| void | cuoo_type_init_general_hcv (cuoo_type_t type, cuoo_shape_t shape, cuoo_impl_t impl, cuex_t atype) |
| void | cuoo_type_init_opaque (cuoo_type_t type, cuoo_impl_t impl) |
| void | cuoo_type_init_opaque_hcs (cuoo_type_t type, cuoo_impl_t impl, size_t key_size) |
| void | cuoo_type_init_opaque_hcv (cuoo_type_t type, cuoo_impl_t impl) |
| cuoo_type_t | cuoo_type_new_opaque (cuoo_impl_t impl) |
| cuoo_type_t | cuoo_type_new_opaque_hcs (cuoo_impl_t impl, size_t key_size) |
| cuoo_type_t | cuoo_type_new_opaque_hcv (cuoo_impl_t impl) |
| cuoo_type_t | cuoo_type_new_metatype (cuoo_impl_t impl) |
| cuoo_type_t | cuoo_type_new_metatype_hce (cuoo_impl_t impl) |
| cuoo_type_t | cuoo_type_new_metatype_hcs (cuoo_impl_t impl, size_t key_size) |
| cu_str_t | cuoo_type_to_str_default (cuex_t type) |
| #define | cuoo_type_impl(type,...) ((type)->impl(__VA_ARGS__)) |
| #define | cuoo_type_impl_ptr(type,...) cu_unbox_ptr(void *, (type)->impl(__VA_ARGS__)) |
| #define | cuoo_type_impl_fptr(T, type,...) cu_unbox_fptr(T, (type)->impl(__VA_ARGS__)) |
Type Shapes | |
The shape of a type is the major classification to determine the representation of objects of that type. | |
| char const * | cuoo_shape_name (cuoo_shape_t shape) |
| size_t | cuoo_shape_valsize (cuoo_shape_t shape) |
| cu_bool_t | cuoo_shape_is_opaque (cuoo_shape_t shape) |
| cu_bool_t | cuoo_shape_is_scalar (cuoo_shape_t shape) |
| cu_bool_t | cuoo_shape_is_scalar_int (cuoo_shape_t shape) |
| cu_bool_t | cuoo_shape_is_scalar_fp (cuoo_shape_t shape) |
| cu_bool_t | cuoo_shape_is_singleton (cuoo_shape_t shape) |
| #define | CUOO_SHAPEFLAG_HCV UINT16_C(0x8000) |
| #define | CUOO_SHAPEFLAG_FIN UINT16_C(0x4000) |
| #define | CUOO_SHAPEFLAG_MASK UINT16_C(0xc000) |
| #define | CUOO_SHAPE_NONE 0x00 |
| #define | CUOO_SHAPE_OPAQUE 0x01 |
| #define | CUOO_SHAPE_OPAQUE_HCV (CUOO_SHAPE_OPAQUE|CUOO_SHAPEFLAG_HCV) |
| #define | CUOO_SHAPE_METATYPE 0x02 |
| #define | CUOO_SHAPE_TVAR 0x03 |
| #define | CUOO_SHAPE_PROTO 0x04 |
| #define | CUOO_SHAPE_CTORTYPE 0x05 |
| #define | CUOO_SHAPE_BY_EXPR 0x06 |
| #define | CUOO_SHAPE_PTRTYPE 0x08 |
| #define | CUOO_SHAPE_ARRTYPE 0x09 |
| #define | CUOO_SHAPE_TUPTYPE 0x0a |
| #define | CUOO_SHAPE_UNIT 0x0f |
| #define | CUOO_SHAPE_SCALAR_BOOL 0x10 |
| #define | CUOO_SHAPE_SCALAR_CHAR 0x11 |
| #define | CUOO_SHAPE_SCALAR_METAINT 0x12 |
| #define | CUOO_SHAPE_SCALAR_UINT8 0x16 |
| #define | CUOO_SHAPE_SCALAR_INT8 0x17 |
| #define | CUOO_SHAPE_SCALAR_UINT16 0x18 |
| #define | CUOO_SHAPE_SCALAR_INT16 0x19 |
| #define | CUOO_SHAPE_SCALAR_UINT32 0x1a |
| #define | CUOO_SHAPE_SCALAR_INT32 0x1b |
| #define | CUOO_SHAPE_SCALAR_UINT64 0x1c |
| #define | CUOO_SHAPE_SCALAR_INT64 0x1d |
| #define | CUOO_SHAPE_SCALAR_FLOAT 0x1e |
| #define | CUOO_SHAPE_SCALAR_DOUBLE 0x1f |
| #define | CUOO_SHAPE_MIN_SCALAR_INT CUOO_SHAPE_SCALAR_UINT8 |
| #define | CUOO_SHAPE_MAX_SCALAR_INT CUOO_SHAPE_SCALAR_INT64 |
| #define | CUOO_SHAPE_MIN_SCALAR_FP CUOO_SHAPE_SCALAR_FLOAT |
| #define | CUOO_SHAPE_MAX_SCALAR_FP CUOO_SHAPE_SCALAR_DOUBLE |
| #define | CUOO_SHAPE_MIN_SCALAR CUOO_SHAPE_SCALAR_BOOL |
| #define | CUOO_SHAPE_MAX_SCALAR CUOO_SHAPE_MAX_SCALAR_FP |
| #define | CUOO_SHAPE_CULIBS_END 0x100 |
Type-Related Functions on Objects | |
|
| |
| void * | cuoo_impl_ptr (cuex_t obj, cu_word_t intf) |
| cu_hash_t | cuex_key_hash (void *obj) |
| #define CUOO_SHAPEFLAG_FIN UINT16_C(0x4000) |
Or-ed into shapes of types which may define finalisers.
| #define CUOO_SHAPEFLAG_HCV UINT16_C(0x8000) |
To be or-ed into shapes for types which use a custom hash function in place of a fixed size.
| #define CUOO_SHAPEFLAG_MASK UINT16_C(0xc000) |
Mask of all the above flags.
| cu_bool_t cuex_meta_is_type | ( | cuex_meta_t | meta | ) |
If true then meta is a type and can be converted with cuoo_type_from_meta.
| cu_bool_t cuoo_shape_is_opaque | ( | cuoo_shape_t | shape | ) |
True if shape indicates an opaque struct.
| cu_bool_t cuoo_shape_is_scalar | ( | cuoo_shape_t | shape | ) |
True if shape indicates a scalar type.
| cu_bool_t cuoo_shape_is_scalar_fp | ( | cuoo_shape_t | shape | ) |
True if shape indicates a floating point type.
| cu_bool_t cuoo_shape_is_scalar_int | ( | cuoo_shape_t | shape | ) |
True if shape indicates an integer type, excluding bool and char.
| cu_bool_t cuoo_shape_is_singleton | ( | cuoo_shape_t | shape | ) |
True iff there is exactly one type for this shape.
| char const* cuoo_shape_name | ( | cuoo_shape_t | shape | ) |
A textual name for shape, or NULL if unimplemented. Mainly useful for the scalar types where the returned string corresponds with the C type name, other cases may be unimplemented.
| size_t cuoo_shape_valsize | ( | cuoo_shape_t | shape | ) |
The size of values of types with shape shape, or (size_t)-1 if unknown. This is defined for scalar shapes.
| cuex_t cuoo_type_as_expr | ( | cuoo_type_t | t | ) |
The analytic type of t. For elementary and opaque types, the type itself.
| cuoo_type_t cuoo_type_from_ex | ( | cuex_t | e | ) |
Cast e to a cuoo_type_t, assuming cuoo_is_type(e) is true.
| void cuoo_type_init_general | ( | cuoo_type_t | type, | |
| cuoo_shape_t | shape, | |||
| cuoo_impl_t | impl, | |||
| cuex_t | atype | |||
| ) |
Initialise type to be used for non-hash-consed objects. shape is a tag indicating the encoding of objects of this type. atype is an optional analytic type of the stored objects.
| void cuoo_type_init_general_hcs | ( | cuoo_type_t | type, | |
| cuoo_shape_t | shape, | |||
| cuoo_impl_t | impl, | |||
| cuex_t | atype, | |||
| size_t | key_size | |||
| ) |
Initialise type to be used for hash-consed objects of size key_size, excluding the CU_HCOBJ header.
| void cuoo_type_init_general_hcv | ( | cuoo_type_t | type, | |
| cuoo_shape_t | shape, | |||
| cuoo_impl_t | impl, | |||
| cuex_t | atype | |||
| ) |
Initialise type to be used for hash-consed objects with hash function key_hash_fn.
| void cuoo_type_init_opaque | ( | cuoo_type_t | type, | |
| cuoo_impl_t | impl | |||
| ) |
Construct type as an opaque type for non-hash-consed objects.
| void cuoo_type_init_opaque_hcs | ( | cuoo_type_t | type, | |
| cuoo_impl_t | impl, | |||
| size_t | key_size | |||
| ) |
Construct type as an opaque type for hash-consed objects of key size key_size.
| void cuoo_type_init_opaque_hcv | ( | cuoo_type_t | type, | |
| cuoo_impl_t | impl | |||
| ) |
Construct type as an opaque type for hash-consed object with hash function key_hash_fn.
| cuoo_type_t cuoo_type_new_metatype | ( | cuoo_impl_t | impl | ) |
A new type of non-hash-consed types.
| cuoo_type_t cuoo_type_new_metatype_hce | ( | cuoo_impl_t | impl | ) |
A new type of types which are hash-consed based on the analytic expression of the type.
| cuoo_type_t cuoo_type_new_metatype_hcs | ( | cuoo_impl_t | impl, | |
| size_t | key_size | |||
| ) |
A new type of types which are hash-consed with key size key_size.
| cuoo_type_t cuoo_type_new_opaque | ( | cuoo_impl_t | impl | ) |
Creates a type for non-hash-consed objects.
| cuoo_type_t cuoo_type_new_opaque_hcs | ( | cuoo_impl_t | impl, | |
| size_t | key_size | |||
| ) |
Creates a type for hash-consed objects of size key_size, excluding the CU_HCOBJ header.
| cuoo_type_t cuoo_type_new_opaque_hcv | ( | cuoo_impl_t | impl | ) |
Creates a type for hash-consed objects of with hash function key_hash_fn.
| cuoo_shape_t cuoo_type_shape | ( | cuoo_type_t | type | ) |
Returns the shape of type.
A default implementation of CUOO_INTF_TO_STR_FN for types.
| cuoo_type_t cuoo_type_type | ( | ) |
The type of types.