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

Opaque pointer type – wraps a raw void* as a managed object. More...

#include "x-type.h"

Go to the source code of this file.

Macros

#define X_TYPE_PTR_NAME   "POINTER"
 
Predicates
#define x_obj_type_isptr(B, X)   x_obj_is_type((B), (X), X_TYPE_PTR_NAME)
 
Accessors
#define x_ptrval(X)   x_firstptr((X))
 
Constructors
#define x_mkptr(B, P)   x_make_ptr((B), X_OBJ_FLAG_NONE, (P))
 
#define x_mkfptr(B, F, P)   x_make_ptr((B), (F), (P))
 
#define x_mkptrown(B, P)   x_make_ptr((B), X_OBJ_FLAG_OWN, (P))
 
#define x_mkfptrown(B, F, P)   x_make_ptr((B), X_OBJ_FLAG_OWN | (F), (P))
 

Functions

x_obj_tx_make_ptr (x_obj_t *p_base, x_obj_flag_t flags, void *p)
 
x_obj_tx_type_ptr_struct (x_obj_t *p_base, x_obj_t *p_args)
 
x_obj_tx_type_ptr_register (x_obj_t *p_base, x_obj_t *p_args)
 
x_obj_tx_type_ptr_make (x_obj_t *p_base, x_obj_t *p_args)
 

Detailed Description

Opaque pointer type – wraps a raw void* as a managed object.

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

Macro Definition Documentation

◆ x_mkfptr

#define x_mkfptr (   B,
  F,
 
)    x_make_ptr((B), (F), (P))

Create a pointer object with explicit flags.

◆ x_mkfptrown

#define x_mkfptrown (   B,
  F,
 
)    x_make_ptr((B), X_OBJ_FLAG_OWN | (F), (P))

Create an owning pointer object with extra flags.

◆ x_mkptr

#define x_mkptr (   B,
 
)    x_make_ptr((B), X_OBJ_FLAG_NONE, (P))

Create a pointer object with default flags.

◆ x_mkptrown

#define x_mkptrown (   B,
 
)    x_make_ptr((B), X_OBJ_FLAG_OWN, (P))

Create an owning pointer object.

◆ x_obj_type_isptr

#define x_obj_type_isptr (   B,
 
)    x_obj_is_type((B), (X), X_TYPE_PTR_NAME)

Test whether X is a POINTER object.

◆ x_ptrval

#define x_ptrval (   X)    x_firstptr((X))

Extract the raw void* from a pointer object.

◆ X_TYPE_PTR_NAME

#define X_TYPE_PTR_NAME   "POINTER"

Canonical type name.

Function Documentation

◆ x_make_ptr()

x_obj_t * x_make_ptr ( x_obj_t p_base,
x_obj_flag_t  flags,
void *  p 
)

Allocate a POINTER object wrapping p.

Allocate a POINTER object wrapping a raw void pointer.

Packs p and flags into stack-allocated args and delegates to x_type_ptr_make() for type-system allocation.

Parameters
p_baseBase (execution context).
flagsObject flags (e.g. X_OBJ_FLAG_OWN).
pRaw pointer to wrap.
Returns
Newly allocated POINTER object.

◆ x_type_ptr_make()

x_obj_t * x_type_ptr_make ( x_obj_t p_base,
x_obj_t p_args 
)

Type-system make handler for POINTER objects.

Type-system make handler for POINTER objects.

Extracts the raw pointer from p_args[0] and optional flags from p_args[1], then allocates via x_obj_make().

Parameters
p_baseBase (execution context).
p_argsArgument list: (pointer-atom [flags-atom]).
Returns
Newly allocated POINTER object.

◆ x_type_ptr_register()

x_obj_t * x_type_ptr_register ( x_obj_t p_base,
x_obj_t p_args 
)

Register (or retrieve) the POINTER type in the type alist.

Register (or retrieve) the POINTER type in the type alist.

Calls x_type_struct_get() with the POINTER name and struct constructor.

Parameters
p_baseBase (execution context).
p_argsUnused.
Returns
The registered POINTER type object.

◆ x_type_ptr_struct()

x_obj_t * x_type_ptr_struct ( x_obj_t p_base,
x_obj_t p_args 
)

Build the POINTER type struct descriptor.