60#define X_TYPE_NO_CVT_TEXT "no declared promotion; declare the cvt relation for"
65#define x_mktype(B,T,X) x_obj_make((B), (T), 0, 1, (X))
68#define x_type_types(B) (x_firstobj((B)))
71#define x_type_settypes(B,X) (x_type_types((B)) = (X))
86#define x_type_field_name_stack(X) x_firstobj(X)
87#define x_type_field_name(X) x_firstobj(x_type_field_name_stack((X)))
89#define x_type_field_data_stack(X) x_firstobj(x_restobj(X))
90#define x_type_field_data(X) x_firstobj(x_type_field_data_stack((X)))
96#define x_type_field_heap(X) x_firstobj(x_restobj(x_restobj(X)))
97#define x_type_field_mark_stack(X) x_firstobj(x_type_field_heap((X)))
98#define x_type_field_mark(X) x_firstobj(x_type_field_mark_stack((X)))
99#define x_type_field_make_stack(X) x_firstobj(x_restobj(x_type_field_heap((X))))
100#define x_type_field_make(X) x_firstobj(x_type_field_make_stack((X)))
101#define x_type_field_free_stack(X) x_firstobj(x_restobj(x_restobj(x_type_field_heap((X)))))
102#define x_type_field_free(X) x_firstobj(x_type_field_free_stack((X)))
103#define x_type_field_clone_stack(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X))))))
104#define x_type_field_clone(X) x_firstobj(x_type_field_clone_stack((X)))
105#define x_type_field_units_stack(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X)))))))
106#define x_type_field_units(X) x_firstobj(x_type_field_units_stack((X)))
107#define x_type_field_length_stack(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X))))))))
108#define x_type_field_length(X) x_firstobj(x_type_field_length_stack((X)))
114#define x_type_field_proc(X) x_firstobj(x_restobj(x_restobj(x_restobj(X))))
115#define x_type_field_call_stack(X) x_firstobj(x_type_field_proc((X)))
116#define x_type_field_call(X) x_firstobj(x_type_field_call_stack((X)))
117#define x_type_field_eval_stack(X) x_firstobj(x_restobj(x_type_field_proc((X))))
118#define x_type_field_eval(X) x_firstobj(x_type_field_eval_stack((X)))
124#define x_type_field_cvt(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(X)))))
125#define x_type_field_from_stack(X) x_firstobj(x_type_field_cvt((X)))
126#define x_type_field_from(X) x_firstobj(x_type_field_from_stack((X)))
127#define x_type_field_to_stack(X) x_firstobj(x_restobj(x_type_field_cvt((X))))
128#define x_type_field_to(X) x_firstobj(x_type_field_to_stack((X)))
134#define x_type_field_io(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X))))))
135#define x_type_field_analyse_stack(X) x_firstobj(x_type_field_io((X)))
136#define x_type_field_analyse(X) x_firstobj(x_type_field_analyse_stack((X)))
137#define x_type_field_delimit_stack(X) x_firstobj(x_restobj(x_type_field_io((X))))
138#define x_type_field_delimit(X) x_firstobj(x_type_field_delimit_stack((X)))
139#define x_type_field_read_stack(X) x_firstobj(x_restobj(x_restobj(x_type_field_io((X)))))
140#define x_type_field_read(X) x_firstobj(x_type_field_read_stack((X)))
141#define x_type_field_write_stack(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_type_field_io((X))))))
142#define x_type_field_write(X) x_firstobj(x_type_field_write_stack((X)))
143#define x_type_field_display_stack(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_io((X)))))))
144#define x_type_field_display(X) x_firstobj(x_type_field_display_stack((X)))
150#define x_type_field_iter_group(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X)))))))
151#define x_type_field_iter_stack(X) x_firstobj(x_type_field_iter_group((X)))
152#define x_type_field_iter(X) x_firstobj(x_type_field_iter_stack((X)))
160#define x_type_field_ops_group(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X))))))))
161#define x_type_field_ops_stack(X) x_firstobj(x_type_field_ops_group((X)))
162#define x_type_field_ops(X) x_firstobj(x_type_field_ops_stack((X)))
165#define x_type_field_image_group(X) x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X)))))))))
166#define x_type_field_save_stack(X) x_firstobj(x_type_field_image_group((X)))
167#define x_type_field_save(X) x_firstobj(x_type_field_save_stack((X)))
168#define x_type_field_load_stack(X) x_firstobj(x_restobj(x_type_field_image_group((X))))
169#define x_type_field_load(X) x_firstobj(x_type_field_load_stack((X)))
174#define x_type_arg_type(X) x_firstobj((X))
277#define X_TYPE_UNIT_REF 0
278#define X_TYPE_UNIT_WORD 1
279#define X_TYPE_UNIT_BYTES 2
280#define X_TYPE_UNIT_FOREIGN 3
281#define X_TYPE_UNIT_BITS 2
282#define X_TYPE_UNIT_KIND_MASK 3
284#define X_TYPE_UNIT_DESCRIBED_MAX \
285 ((x_int_t)(sizeof(x_int_t) * 8 / X_TYPE_UNIT_BITS))
static void x_obj_t int int i
Definition x-prim.h:60
static void x_obj_t * p_args
Definition x-prim.h:56
C-side mirror of a type descriptor's fields.
Definition x-type.h:185
x_obj_t * p_data
Definition x-type.h:187
x_obj_t * p_length
Definition x-type.h:200
x_obj_t * p_analyse
Definition x-type.h:205
x_obj_t * p_free
Definition x-type.h:190
x_obj_t * p_to
Definition x-type.h:204
x_obj_t * p_load
Definition x-type.h:219
x_obj_t * p_make
Definition x-type.h:189
x_obj_t * p_clone
Definition x-type.h:191
x_obj_t * p_eval
Definition x-type.h:202
x_obj_t * p_display
Definition x-type.h:209
x_obj_t * p_read
Definition x-type.h:207
x_obj_t * p_from
Definition x-type.h:203
x_obj_t * p_name
Definition x-type.h:186
x_obj_t * p_mark
Definition x-type.h:188
x_obj_t * p_delimit
Definition x-type.h:206
x_obj_t * p_call
Definition x-type.h:201
x_obj_t * p_ops
Definition x-type.h:211
x_obj_t * p_save
Definition x-type.h:212
x_obj_t * p_iter
Definition x-type.h:210
x_obj_t * p_units
Definition x-type.h:192
x_obj_t * p_write
Definition x-type.h:208
Evaluator object and interface – x-expr's base object plus the environment, control-flow,...
enum x_obj_flag_enum x_obj_flag_t
x_obj_t x_satom_t[X_OBJ_META_LEN+X_OBJ_UNITS_ATOM]
Definition x-obj.h:283
x_int_t x_type_units_mask(x_obj_t *p_units)
Definition x-type.c:362
x_obj_t * x_type_struct_make(x_obj_t *p_base, struct x_type_t type)
Definition x-type.c:41
int x_type_op_try(x_obj_t *p_base, x_char_t *op, x_obj_t *p_a, x_obj_t *p_b, x_obj_t **pp_result)
Definition x-type.c:199
x_obj_t * x_type_save_units(x_obj_t *p_obj, x_int_t *buf, x_int_t n, const int *kinds, int nkinds)
Definition x-type.c:90
x_obj_t * x_type_heap_mark(x_obj_t *p_base, x_obj_t *p_obj, x_obj_flag_t flags)
Definition x-type.c:531
x_obj_t * x_type_prim_units(x_obj_t *p_base, x_obj_t *p_args)
Definition x-type.c:430
x_obj_t * x_type_save_default(x_obj_t *p_base, x_obj_t *p_args)
The default save: the units the type's shape declares, each with the kind the shape's mask gives it (...
Definition x-type.c:108
void x_type_heap_free(x_obj_t *p_base, x_obj_t *p_obj)
Definition x-type.c:627
x_obj_t * x_type_prim_type_name(x_obj_t *p_base, x_obj_t *p_args)
Definition x-type.c:303
int x_type_unit_kind(x_int_t mask, x_int_t i, x_int_t described)
Definition x-type.c:407
x_int_t x_type_units_described(x_obj_t *p_units)
Definition x-type.c:386
x_obj_t * x_type_prim_length(x_obj_t *p_base, x_obj_t *p_args)
Definition x-type.c:490
x_int_t x_type_units_count(x_obj_t *p_units)
Definition x-type.c:339
x_obj_t * x_type_struct_get(x_obj_t *p_base, x_obj_t *p_args)
Definition x-type.c:272
x_satom_t x_type_save_default_prim
Definition x-type.c:136
long x_int_t
Definition x.h:129
char x_char_t
Definition x.h:138