add vclear

This commit is contained in:
Rongsong Shen 2026-02-14 16:31:09 +08:00
parent 30f7f4475f
commit 277bc31225
2 changed files with 25 additions and 0 deletions

View file

@ -164,11 +164,13 @@ typedef struct {
typedef int (*vstore_fn_t)(meta_obj_t*, void*); typedef int (*vstore_fn_t)(meta_obj_t*, void*);
typedef int (*vget_fn_t)(meta_obj_t*, int, void**); typedef int (*vget_fn_t)(meta_obj_t*, int, void**);
typedef int (*vput_fn_t)(meta_obj_t*, int, void*); typedef int (*vput_fn_t)(meta_obj_t*, int, void*);
typedef void (*vclear_fn_t)(meta_obj_t*);
typedef struct { typedef struct {
vstore_fn_t vstore; vstore_fn_t vstore;
vget_fn_t vget; vget_fn_t vget;
vput_fn_t vput; vput_fn_t vput;
vclear_fn_t vclear;
} intf_varray_t; } intf_varray_t;
typedef struct { typedef struct {

View file

@ -64,3 +64,26 @@ int vput(var v, int idx, void* data)
return method(obj, idx, data); return method(obj, idx, data);
} }
void vclear(var v)
{
meta_obj_t* obj = NULL;
vclear_fn_t method = NULL;
obj = RTTI_DATA_TO_OBJ(v);
if (RTTI_OBJ_INVALID(obj)) {
errno = EINVAL;
return;
}
RTTI_GET_METHOD(method, obj, varray, vclear);
if (method == NULL) {
errno = EINVAL;
return;
}
method(obj);
return;
}