fixed the missing prototype defintion of hcl_instantiate()

This commit is contained in:
hyung-hwan 2021-12-31 08:39:12 +00:00
parent ff6f895c31
commit a61f6f5f47
3 changed files with 22 additions and 16 deletions

View File

@ -1061,6 +1061,13 @@ hcl_oop_t hcl_allocwordobj (
hcl_oow_t len hcl_oow_t len
); );
hcl_oop_t hcl_instantiate (
hcl_t* hcl,
hcl_oop_class_t _class,
const void* vptr,
hcl_oow_t vlen
);
/* ========================================================================= */ /* ========================================================================= */
/* sym.c */ /* sym.c */
/* ========================================================================= */ /* ========================================================================= */

View File

@ -380,7 +380,7 @@ static HCL_INLINE int decode_spec (hcl_t* hcl, hcl_oop_class_t _class, hcl_obj_t
return 0; return 0;
} }
hcl_oop_t hcl_instantiate (hcl_t*hcl, hcl_oop_class_t _class, const void* vptr, hcl_oow_t vlen) hcl_oop_t hcl_instantiate (hcl_t* hcl, hcl_oop_class_t _class, const void* vptr, hcl_oow_t vlen)
{ {
hcl_oop_t oop; hcl_oop_t oop;
hcl_obj_type_t type; hcl_obj_type_t type;
@ -402,22 +402,22 @@ hcl_oop_t hcl_instantiate (hcl_t*hcl, hcl_oop_class_t _class, const void* vptr,
if (HCL_LIKELY(oop)) if (HCL_LIKELY(oop))
{ {
#if 0 #if 0
/* initialize named instance variables with default values */ /* initialize named instance variables with default values */
if (_class->initv[0] != hcl->_nil) if (_class->initv[0] != hcl->_nil)
{ {
hcl_oow_t i = HCL_OBJ_GET_SIZE(_class->initv[0]); hcl_oow_t i = HCL_OBJ_GET_SIZE(_class->initv[0]);
/* [NOTE] i don't deep-copy initial values. /* [NOTE] i don't deep-copy initial values.
* if you change the contents of compound values like arrays, * if you change the contents of compound values like arrays,
* it affects subsequent instantiation of the class. * it affects subsequent instantiation of the class.
* it's important that the compiler should mark compound initial * it's important that the compiler should mark compound initial
* values read-only. */ * values read-only. */
while (i > 0) while (i > 0)
{ {
--i; --i;
HCL_OBJ_SET_OOP_VAL (oop, i, HCL_OBJ_GET_OOP_VAL(_class->initv[0], i)); HCL_OBJ_SET_OOP_VAL (oop, i, HCL_OBJ_GET_OOP_VAL(_class->initv[0], i));
}
} }
}
#endif #endif
} }
HCL_ASSERT (hcl, vptr == HCL_NULL); HCL_ASSERT (hcl, vptr == HCL_NULL);

View File

@ -881,7 +881,6 @@ static hcl_pfrc_t pf_object_new (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs)
obj = hcl_instantiate(hcl, class_, HCL_NULL, 0); obj = hcl_instantiate(hcl, class_, HCL_NULL, 0);
if (HCL_UNLIKELY(!obj)) return HCL_PF_FAILURE; if (HCL_UNLIKELY(!obj)) return HCL_PF_FAILURE;
HCL_STACK_SETRET (hcl, nargs, obj); HCL_STACK_SETRET (hcl, nargs, obj);
return HCL_PF_SUCCESS; return HCL_PF_SUCCESS;
} }