Refactor raw object to pointer or string conversions.
This commit is contained in:
17
src/lj_obj.c
17
src/lj_obj.c
@@ -20,7 +20,7 @@ LJ_DATADEF const char *const lj_obj_itypename[] = { /* ORDER LJ_T */
|
||||
};
|
||||
|
||||
/* Compare two objects without calling metamethods. */
|
||||
int lj_obj_equal(cTValue *o1, cTValue *o2)
|
||||
int LJ_FASTCALL lj_obj_equal(cTValue *o1, cTValue *o2)
|
||||
{
|
||||
if (itype(o1) == itype(o2)) {
|
||||
if (tvispri(o1))
|
||||
@@ -33,3 +33,18 @@ int lj_obj_equal(cTValue *o1, cTValue *o2)
|
||||
return numberVnum(o1) == numberVnum(o2);
|
||||
}
|
||||
|
||||
/* Return pointer to object or its object data. */
|
||||
const void * LJ_FASTCALL lj_obj_ptr(cTValue *o)
|
||||
{
|
||||
if (tvisudata(o))
|
||||
return uddata(udataV(o));
|
||||
else if (tvislightud(o))
|
||||
return lightudV(o);
|
||||
else if (LJ_HASFFI && tviscdata(o))
|
||||
return cdataptr(cdataV(o));
|
||||
else if (tvisgcv(o))
|
||||
return gcV(o);
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user