x-engine-c v0.2.13
The C engine for x-lang
Loading...
Searching...
No Matches
Type Field Accessor Macros

Navigate the pair-tree structure of a type descriptor. More...

Name and Data Fields

#define x_type_field_name_stack(X)   x_firstobj(X)
 
#define x_type_field_name(X)   x_firstobj(x_type_field_name_stack((X)))
 
#define x_type_field_data_stack(X)   x_firstobj(x_restobj(X))
 
#define x_type_field_data(X)   x_firstobj(x_type_field_data_stack((X)))
 

Heap Group – Memory Management Handlers

(mark make free clone units length)

#define x_type_field_heap(X)   x_firstobj(x_restobj(x_restobj(X)))
 
#define x_type_field_mark_stack(X)   x_firstobj(x_type_field_heap((X)))
 
#define x_type_field_mark(X)   x_firstobj(x_type_field_mark_stack((X)))
 
#define x_type_field_make_stack(X)   x_firstobj(x_restobj(x_type_field_heap((X))))
 
#define x_type_field_make(X)   x_firstobj(x_type_field_make_stack((X)))
 
#define x_type_field_free_stack(X)   x_firstobj(x_restobj(x_restobj(x_type_field_heap((X)))))
 
#define x_type_field_free(X)   x_firstobj(x_type_field_free_stack((X)))
 
#define x_type_field_clone_stack(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X))))))
 
#define x_type_field_clone(X)   x_firstobj(x_type_field_clone_stack((X)))
 
#define x_type_field_units_stack(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X)))))))
 
#define x_type_field_units(X)   x_firstobj(x_type_field_units_stack((X)))
 
#define x_type_field_length_stack(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X))))))))
 
#define x_type_field_length(X)   x_firstobj(x_type_field_length_stack((X)))
 

Proc Group – Call and Eval Handlers

(call eval)

#define x_type_field_proc(X)   x_firstobj(x_restobj(x_restobj(x_restobj(X))))
 
#define x_type_field_call_stack(X)   x_firstobj(x_type_field_proc((X)))
 
#define x_type_field_call(X)   x_firstobj(x_type_field_call_stack((X)))
 
#define x_type_field_eval_stack(X)   x_firstobj(x_restobj(x_type_field_proc((X))))
 
#define x_type_field_eval(X)   x_firstobj(x_type_field_eval_stack((X)))
 

Cvt Group – Conversion Handlers

(from to)

#define x_type_field_cvt(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(X)))))
 
#define x_type_field_from_stack(X)   x_firstobj(x_type_field_cvt((X)))
 
#define x_type_field_from(X)   x_firstobj(x_type_field_from_stack((X)))
 
#define x_type_field_to_stack(X)   x_firstobj(x_restobj(x_type_field_cvt((X))))
 
#define x_type_field_to(X)   x_firstobj(x_type_field_to_stack((X)))
 

I/O Group – Read, Write, and Display Handlers

(analyse delimit read write display)

#define x_type_field_io(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X))))))
 
#define x_type_field_analyse_stack(X)   x_firstobj(x_type_field_io((X)))
 
#define x_type_field_analyse(X)   x_firstobj(x_type_field_analyse_stack((X)))
 
#define x_type_field_delimit_stack(X)   x_firstobj(x_restobj(x_type_field_io((X))))
 
#define x_type_field_delimit(X)   x_firstobj(x_type_field_delimit_stack((X)))
 
#define x_type_field_read_stack(X)   x_firstobj(x_restobj(x_restobj(x_type_field_io((X)))))
 
#define x_type_field_read(X)   x_firstobj(x_type_field_read_stack((X)))
 
#define x_type_field_write_stack(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_type_field_io((X))))))
 
#define x_type_field_write(X)   x_firstobj(x_type_field_write_stack((X)))
 
#define x_type_field_display_stack(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_io((X)))))))
 
#define x_type_field_display(X)   x_firstobj(x_type_field_display_stack((X)))
 

Iter Group – Iterator Handler

(iter)

#define x_type_field_iter_group(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X)))))))
 
#define x_type_field_iter_stack(X)   x_firstobj(x_type_field_iter_group((X)))
 
#define x_type_field_iter(X)   x_firstobj(x_type_field_iter_stack((X)))
 

Ops Group – Generic-Operator Dispatch

(ops) – the per-type generic-operator alist. A typed operand dispatches + - * / % = < to its type's registered handler; a type with a nil ops alist never dispatches (ints keep the pure-C fast path).

#define x_type_field_ops_group(X)   x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X))))))))
 
#define x_type_field_ops_stack(X)   x_firstobj(x_type_field_ops_group((X)))
 
#define x_type_field_ops(X)   x_firstobj(x_type_field_ops_stack((X)))
 

Image group: '(save-stack load-stack) – docs/state-image-format.md

#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)))))))))
 
#define x_type_field_save_stack(X)   x_firstobj(x_type_field_image_group((X)))
 
#define x_type_field_save(X)   x_firstobj(x_type_field_save_stack((X)))
 
#define x_type_field_load_stack(X)   x_firstobj(x_restobj(x_type_field_image_group((X))))
 
#define x_type_field_load(X)   x_firstobj(x_type_field_load_stack((X)))
 

Detailed Description

Navigate the pair-tree structure of a type descriptor.

Macros named x_type_field_*_stack return the stack cell (current . saved). The bare x_type_field_* variants return the current value via x_firstobj.

Macro Definition Documentation

◆ x_type_field_analyse

#define x_type_field_analyse (   X)    x_firstobj(x_type_field_analyse_stack((X)))

Current analyse handler.

◆ x_type_field_analyse_stack

#define x_type_field_analyse_stack (   X)    x_firstobj(x_type_field_io((X)))

Tokenizer analyse stack cell.

◆ x_type_field_call

#define x_type_field_call (   X)    x_firstobj(x_type_field_call_stack((X)))

Current call handler.

◆ x_type_field_call_stack

#define x_type_field_call_stack (   X)    x_firstobj(x_type_field_proc((X)))

Call stack cell.

◆ x_type_field_clone

#define x_type_field_clone (   X)    x_firstobj(x_type_field_clone_stack((X)))

Current clone handler.

◆ x_type_field_clone_stack

#define x_type_field_clone_stack (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X))))))

Clone stack cell.

◆ x_type_field_cvt

#define x_type_field_cvt (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(X)))))

Conversion handler group.

◆ x_type_field_data

#define x_type_field_data (   X)    x_firstobj(x_type_field_data_stack((X)))

Current data.

◆ x_type_field_data_stack

#define x_type_field_data_stack (   X)    x_firstobj(x_restobj(X))

Data stack cell.

◆ x_type_field_delimit

#define x_type_field_delimit (   X)    x_firstobj(x_type_field_delimit_stack((X)))

Current delimiter handler.

◆ x_type_field_delimit_stack

#define x_type_field_delimit_stack (   X)    x_firstobj(x_restobj(x_type_field_io((X))))

Delimiter stack cell.

◆ x_type_field_display

#define x_type_field_display (   X)    x_firstobj(x_type_field_display_stack((X)))

Current display handler.

◆ x_type_field_display_stack

#define x_type_field_display_stack (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_io((X)))))))

Display stack cell.

◆ x_type_field_eval

#define x_type_field_eval (   X)    x_firstobj(x_type_field_eval_stack((X)))

Current eval handler.

◆ x_type_field_eval_stack

#define x_type_field_eval_stack (   X)    x_firstobj(x_restobj(x_type_field_proc((X))))

Eval stack cell.

◆ x_type_field_free

#define x_type_field_free (   X)    x_firstobj(x_type_field_free_stack((X)))

Current destructor.

◆ x_type_field_free_stack

#define x_type_field_free_stack (   X)    x_firstobj(x_restobj(x_restobj(x_type_field_heap((X)))))

Destructor stack cell.

◆ x_type_field_from

#define x_type_field_from (   X)    x_firstobj(x_type_field_from_stack((X)))

Current from-conversion handler.

◆ x_type_field_from_stack

#define x_type_field_from_stack (   X)    x_firstobj(x_type_field_cvt((X)))

From-conversion stack cell.

◆ x_type_field_heap

#define x_type_field_heap (   X)    x_firstobj(x_restobj(x_restobj(X)))

Heap handler group.

◆ x_type_field_image_group

#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)))))))))

Image handler group.

◆ x_type_field_io

#define x_type_field_io (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X))))))

I/O handler group.

◆ x_type_field_iter

#define x_type_field_iter (   X)    x_firstobj(x_type_field_iter_stack((X)))

Current iterator handler.

◆ x_type_field_iter_group

#define x_type_field_iter_group (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X)))))))

Iterator handler group.

◆ x_type_field_iter_stack

#define x_type_field_iter_stack (   X)    x_firstobj(x_type_field_iter_group((X)))

Iterator stack cell.

◆ x_type_field_length

#define x_type_field_length (   X)    x_firstobj(x_type_field_length_stack((X)))

Current length handler.

◆ x_type_field_length_stack

#define x_type_field_length_stack (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X))))))))

Length stack cell.

◆ x_type_field_load

#define x_type_field_load (   X)    x_firstobj(x_type_field_load_stack((X)))

Current load handler.

◆ x_type_field_load_stack

#define x_type_field_load_stack (   X)    x_firstobj(x_restobj(x_type_field_image_group((X))))

Load stack cell.

◆ x_type_field_make

#define x_type_field_make (   X)    x_firstobj(x_type_field_make_stack((X)))

Current constructor.

◆ x_type_field_make_stack

#define x_type_field_make_stack (   X)    x_firstobj(x_restobj(x_type_field_heap((X))))

Constructor stack cell.

◆ x_type_field_mark

#define x_type_field_mark (   X)    x_firstobj(x_type_field_mark_stack((X)))

Current GC mark handler.

◆ x_type_field_mark_stack

#define x_type_field_mark_stack (   X)    x_firstobj(x_type_field_heap((X)))

GC mark stack cell.

◆ x_type_field_name

#define x_type_field_name (   X)    x_firstobj(x_type_field_name_stack((X)))

Current name.

◆ x_type_field_name_stack

#define x_type_field_name_stack (   X)    x_firstobj(X)

Name stack cell.

◆ x_type_field_ops

#define x_type_field_ops (   X)    x_firstobj(x_type_field_ops_stack((X)))

Current ops alist.

◆ x_type_field_ops_group

#define x_type_field_ops_group (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(x_restobj(X))))))))

Ops handler group.

◆ x_type_field_ops_stack

#define x_type_field_ops_stack (   X)    x_firstobj(x_type_field_ops_group((X)))

Ops alist stack cell.

◆ x_type_field_proc

#define x_type_field_proc (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(X))))

Proc handler group.

◆ x_type_field_read

#define x_type_field_read (   X)    x_firstobj(x_type_field_read_stack((X)))

Current reader handler.

◆ x_type_field_read_stack

#define x_type_field_read_stack (   X)    x_firstobj(x_restobj(x_restobj(x_type_field_io((X)))))

Reader stack cell.

◆ x_type_field_save

#define x_type_field_save (   X)    x_firstobj(x_type_field_save_stack((X)))

Current save handler.

◆ x_type_field_save_stack

#define x_type_field_save_stack (   X)    x_firstobj(x_type_field_image_group((X)))

Save stack cell.

◆ x_type_field_to

#define x_type_field_to (   X)    x_firstobj(x_type_field_to_stack((X)))

Current to-conversion handler.

◆ x_type_field_to_stack

#define x_type_field_to_stack (   X)    x_firstobj(x_restobj(x_type_field_cvt((X))))

To-conversion stack cell.

◆ x_type_field_units

#define x_type_field_units (   X)    x_firstobj(x_type_field_units_stack((X)))

Current units handler.

◆ x_type_field_units_stack

#define x_type_field_units_stack (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_restobj(x_type_field_heap((X)))))))

Units stack cell.

◆ x_type_field_write

#define x_type_field_write (   X)    x_firstobj(x_type_field_write_stack((X)))

Current write handler.

◆ x_type_field_write_stack

#define x_type_field_write_stack (   X)    x_firstobj(x_restobj(x_restobj(x_restobj(x_type_field_io((X))))))

Writer stack cell.