[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Why does not replace the return value type(i.e. GCobject*) of luaC_newobj() function with the type of union GCunion* to avoid the explicit cast(i.e. gco2t, gco2p, gco2u and etc)?
- From: 孙世龙 sunshilong <sunshilong369@...>
- Date: Fri, 23 Oct 2020 10:14:28 +0800
Hi, list
Why does not replace the return value type(i.e. GCobject*) of
luaC_newobj() function with the type of union GCunion* to avoid
calling the explicit cast(i.e. gco2t, gco2p, gco2u and etc.) and make
the code more concise?
It's likely that there are some aspects where I have not kept pace.
So please let me know if I missed something.
Here are some related code snippets:
Table *luaH_new (lua_State *L)
{
GCObject *o = luaC_newobj(L, LUA_VTABLE, sizeof(Table));
Table *t = gco2t(o);
...
}
CClosure *luaF_newCclosure (lua_State *L, int nupvals)
{
GCObject *o = luaC_newobj(L, LUA_VCCL, sizeCclosure(nupvals));
CClosure *c = gco2ccl(o);
...
}
static TString *createstrobj (lua_State *L, size_t l, int tag, unsigned int h)
{
TString *ts;
GCObject *o;
size_t totalsize; /* total size of TString object */
totalsize = sizelstring(l);
o = luaC_newobj(L, tag, totalsize);
ts = gco2ts(o);
...
}
I would be grateful to have some help with this question.
Best regards
Sunshilong