|
x-engine-c v0.2.13
The C engine for x-lang
|
String type for the x-lang type system. More...
#include "x-type.h"Go to the source code of this file.
Macros | |
| #define | X_TYPE_STR_NAME "STRING" |
| #define | x_obj_type_isstr(B, X) x_obj_is_type((B), (X), X_TYPE_STR_NAME) |
| #define | x_strval(X) x_firststr((X)) |
| #define | x_strlen(X) x_lib_strlen(x_strval((X))) |
| #define | x_mkstr(B, S) x_make_str((B), X_OBJ_FLAG_NONE, (S)) |
| #define | x_mkfstr(B, F, S) x_make_str((B), (F), (S)) |
| #define | x_mkstrown(B, S) x_make_str((B), X_OBJ_FLAG_OWN, (S)) |
| #define | x_mkfstrown(B, F, S) x_make_str((B), X_OBJ_FLAG_OWN | (F), (S)) |
Functions | |
| x_obj_t * | x_make_str (x_obj_t *p_base, x_obj_flag_t flags, x_char_t *s) |
| x_obj_t * | x_type_str_struct (x_obj_t *p_base, x_obj_t *p_args) |
| x_obj_t * | x_type_str_register (x_obj_t *p_base, x_obj_t *p_args) |
| x_obj_t * | x_type_str_make (x_obj_t *p_base, x_obj_t *p_args) |
| x_obj_t * | x_type_str_length (x_obj_t *p_base, x_obj_t *p_args) |
| x_obj_t * | x_type_str_read (x_obj_t *p_base, x_obj_t *p_args) |
| x_obj_t * | x_type_str_write (x_obj_t *p_base, x_obj_t *p_args) |
| x_obj_t * | x_type_str_call (x_obj_t *p_base, x_obj_t *p_args) |
| x_obj_t * | x_type_str_proc (x_obj_t *p_base, x_obj_t *p_args) |
String type for the x-lang type system.
| #define x_mkfstr | ( | B, | |
| F, | |||
| S | |||
| ) | x_make_str((B), (F), (S)) |
Make a string with explicit flags F.
| #define x_mkfstrown | ( | B, | |
| F, | |||
| S | |||
| ) | x_make_str((B), X_OBJ_FLAG_OWN | (F), (S)) |
Make an owning string with additional flags F.
| #define x_mkstr | ( | B, | |
| S | |||
| ) | x_make_str((B), X_OBJ_FLAG_NONE, (S)) |
Make a string with default flags (non-owning).
| #define x_mkstrown | ( | B, | |
| S | |||
| ) | x_make_str((B), X_OBJ_FLAG_OWN, (S)) |
Make a string that owns its buffer (will be freed by GC).
| #define x_obj_type_isstr | ( | B, | |
| X | |||
| ) | x_obj_is_type((B), (X), X_TYPE_STR_NAME) |
Test whether object X is a string on base B.
| #define x_strlen | ( | X | ) | x_lib_strlen(x_strval((X))) |
Compute the length of a string object.
| #define x_strval | ( | X | ) | x_firststr((X)) |
Extract the C string pointer from a string object.
| #define X_TYPE_STR_NAME "STRING" |
Type-system symbol name
| x_obj_t * x_make_str | ( | x_obj_t * | p_base, |
| x_obj_flag_t | flags, | ||
| x_char_t * | s | ||
| ) |
Allocate a heap string object wrapping C string s.
Allocate a heap string object wrapping a C string pointer.
Builds a stack-based argument list and delegates to x_type_str_make.
| p_base | x_obj_t* – Base (execution context) |
| flags | x_obj_flag_t – Object flags (e.g. X_OBJ_FLAG_OWN) |
| s | x_char_t* – C string pointer to wrap |
Type-system call callback – index/slice into the string.
Type-system call callback – string as callable.
Supports three calling conventions:
| p_base | x_obj_t* – Base (execution context) |
| p_args | x_obj_t* – (string-object . evaluated-args) |
Type-system length callback for string.
Type-system length callback – returns string length as an integer.
| p_base | x_obj_t* – Base (execution context) |
| p_args | x_obj_t* – (string-object . ...) |
Type-system make callback for string.
Type-system make callback for string objects.
Extracts the string pointer and optional flags from p_args, then allocates a heap object via x_obj_make.
| p_base | x_obj_t* – Base (execution context) |
| p_args | x_obj_t* – (str-value . (flags | nil)) |
Tokenizer read callback for string literals.
Register (or retrieve) the string type struct on p_base.
Register or retrieve the string type on the base context.
| p_base | x_obj_t* – Base (execution context) |
| p_args | x_obj_t* – Unused |
Build the string type descriptor struct.