The ovm_str_t
type is the OrchIDS type of (fixed-size) character strings.
It is defined this way in src/lang.h:
typedef struct ovm_str_s ovm_str_t; struct ovm_str_s { gc_header_t gc; size_t len; char str[STR_PAD_LEN]; };
The str
field is defined with a dummy length of STR_PAD_LEN
; its actual length is given by the len
field.
The type ovm_str_t
is a type of garbage-collectable data. To allocate a new object of type ovm_str_t
, use the function:
ovm_var_t *ovm_str_new(gc_t *gc_ctx, size_t size);
This creates a new ovm_str_t
containing size
bytes. Calling res
the result, one always has TYPE(res)==T_STR
. The actual array of bytes is left uninitialized. One can access it using STR(res)
, and its length (size
) is STRLEN(res)
.
The return type of ovm_str_new()
is the universal type ovm_var_t
instead of ovm_str_t
, for practical reasons.
The result is created white, and much be gc_touch()
ed before storing it into a garbage-collectable object.
The returned ovm_str_t
object res
is modifiable.
There is also a type of virtual character strings ovm_vstr_t
.