This commit is contained in:
@@ -609,51 +609,6 @@ PH7_PRIVATE sxi32 PH7_MemObjIsNumeric(ph7_value *pObj) {
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
/*
|
||||
* Check whether the ph7_value is empty.Return TRUE if empty.
|
||||
* FALSE otherwise.
|
||||
* An ph7_value is considered empty if the following are true:
|
||||
* NULL value.
|
||||
* Boolean FALSE.
|
||||
* Integer/Float with a 0 (zero) value.
|
||||
* An empty string or a stream of 0 (zero) [i.e: "0","00","000",...].
|
||||
* An empty array.
|
||||
* NOTE
|
||||
* OBJECT VALUE MUST NOT BE MODIFIED.
|
||||
*/
|
||||
PH7_PRIVATE sxi32 PH7_MemObjIsEmpty(ph7_value *pObj) {
|
||||
if(pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_VOID)) {
|
||||
return TRUE;
|
||||
} else if(pObj->iFlags & MEMOBJ_INT) {
|
||||
return pObj->x.iVal == 0 ? TRUE : FALSE;
|
||||
} else if(pObj->iFlags & MEMOBJ_REAL) {
|
||||
return pObj->x.rVal == (ph7_real)0 ? TRUE : FALSE;
|
||||
} else if(pObj->iFlags & MEMOBJ_BOOL) {
|
||||
return !pObj->x.iVal;
|
||||
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
||||
if(SyBlobLength(&pObj->sBlob) <= 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
const char *zIn, *zEnd;
|
||||
zIn = (const char *)SyBlobData(&pObj->sBlob);
|
||||
zEnd = &zIn[SyBlobLength(&pObj->sBlob)];
|
||||
while(zIn < zEnd) {
|
||||
if(zIn[0] != '0') {
|
||||
break;
|
||||
}
|
||||
zIn++;
|
||||
}
|
||||
return zIn >= zEnd ? TRUE : FALSE;
|
||||
}
|
||||
} else if(pObj->iFlags & MEMOBJ_HASHMAP) {
|
||||
ph7_hashmap *pMap = (ph7_hashmap *)pObj->x.pOther;
|
||||
return pMap->nEntry == 0 ? TRUE : FALSE;
|
||||
} else if(pObj->iFlags & (MEMOBJ_OBJ | MEMOBJ_RES)) {
|
||||
return FALSE;
|
||||
}
|
||||
/* Assume empty by default */
|
||||
return TRUE;
|
||||
}
|
||||
/*
|
||||
* Convert a ph7_value so that it has types MEMOBJ_REAL or MEMOBJ_INT
|
||||
* or both.
|
||||
|
Reference in New Issue
Block a user