x-engine-c v0.2.13
The C engine for x-lang
Loading...
Searching...
No Matches
pair.c File Reference

Pair type implementation. More...

#include "x-type/pair.h"
#include "x-token/sexp/pair.h"

Functions

x_obj_tx_make_pair (x_obj_t *p_base, x_obj_flag_t flags, void *p1, void *p2)
 
x_obj_tx_type_pair_length (x_obj_t *p_base, x_obj_t *p_args)
 
x_obj_tx_type_pair_struct (x_obj_t *p_base, x_obj_t *p_args)
 
x_obj_tx_type_pair_register (x_obj_t *p_base, x_obj_t *p_args)
 
x_obj_tx_type_pair_make (x_obj_t *p_base, x_obj_t *p_args)
 

Variables

x_satom_t x_type_pair_name = x_obj_set(x_type_atom_obj, X_OBJ_FLAG_NONE, { .s = (x_char_t *)X_TYPE_PAIR_NAME })
 
x_satom_t x_type_pair_length_prim = x_obj_set(x_type_atom_obj, X_OBJ_FLAG_NONE, { (x_obj_t *)&x_type_pair_length })
 
x_satom_t x_type_pair_make_prim = x_obj_set(x_type_atom_obj, X_OBJ_FLAG_NONE, { (x_obj_t *)&x_type_pair_make })
 
x_satom_t x_type_pair_struct_prim = x_obj_set(x_type_atom_obj, X_OBJ_FLAG_NONE, { (x_obj_t *)&x_type_pair_struct })
 

Detailed Description

Pair type implementation.

Author
Jon Ruttan (jonru.nosp@m.ttan.nosp@m.@gmai.nosp@m.l.co.nosp@m.m)

Function Documentation

◆ x_make_pair()

x_obj_t * x_make_pair ( x_obj_t p_base,
x_obj_flag_t  flags,
void *  p1,
void *  p2 
)

Allocate a heap pair from first/rest pointers.

Wraps p1 and p2 in stack-allocated objects, builds a stack arg list, and delegates to x_type_pair_make.

Parameters
p_basex_obj_t* – Base (execution context)
flagsx_obj_flag_t – Object flags
p1void* – First element
p2void* – Rest element
Returns
x_obj_t* – New heap-allocated pair

◆ x_type_pair_length()

x_obj_t * x_type_pair_length ( x_obj_t p_base,
x_obj_t p_args 
)

Compute the length of a pair list by walking rest pointers.

Parameters
p_basex_obj_t* – Base (execution context)
p_argsx_obj_t* – (pair-object . ...)
Returns
x_obj_t* – Integer object with list length

◆ x_type_pair_make()

x_obj_t * x_type_pair_make ( x_obj_t p_base,
x_obj_t p_args 
)

Type-system make callback for pair objects.

Extracts first/rest from the pair arg and optional flags, then allocates a heap pair via x_obj_make.

Parameters
p_basex_obj_t* – Base (execution context)
p_argsx_obj_t* – (pair-value . (flags | nil))
Returns
x_obj_t* – New heap-allocated pair object

◆ x_type_pair_register()

x_obj_t * x_type_pair_register ( x_obj_t p_base,
x_obj_t p_args 
)

Register or retrieve the pair type on the base context.

Parameters
p_basex_obj_t* – Base (execution context)
p_argsx_obj_t* – Unused
Returns
x_obj_t* – Registered type object

◆ x_type_pair_struct()

x_obj_t * x_type_pair_struct ( x_obj_t p_base,
x_obj_t p_args 
)

Build the pair type descriptor struct.

Populates name, units, make, length, and write callbacks.

Parameters
p_basex_obj_t* – Base (execution context)
p_argsx_obj_t* – Unused
Returns
x_obj_t* – Type descriptor pair list

Variable Documentation

◆ x_type_pair_length_prim

◆ x_type_pair_make_prim

◆ x_type_pair_name

◆ x_type_pair_struct_prim