From 3cca5faa7622de87c1289e4ac8847808bcbeb2d6 Mon Sep 17 00:00:00 2001 From: belliash Date: Tue, 21 May 2019 14:49:36 +0200 Subject: [PATCH] Store variable type in dedicated field. --- engine/api.c | 48 +++---- engine/compiler.c | 2 +- engine/hashmap.c | 82 +++++------ engine/memobj.c | 344 +++++++++++++++++++++++----------------------- engine/vm.c | 306 ++++++++++++++++++++--------------------- include/ph7int.h | 4 +- 6 files changed, 393 insertions(+), 393 deletions(-) diff --git a/engine/api.c b/engine/api.c index 451c4ef..2dba7f8 100644 --- a/engine/api.c +++ b/engine/api.c @@ -1236,7 +1236,7 @@ const char *ph7_value_to_string(ph7_value *pValue, int *pLen) { * Please refer to the official documentation for function purpose and expected parameters. */ void *ph7_value_to_resource(ph7_value *pValue) { - if((pValue->iFlags & MEMOBJ_RES) == 0) { + if((pValue->nType & MEMOBJ_RES) == 0) { /* Not a resource,return NULL */ return 0; } @@ -1310,7 +1310,7 @@ int ph7_result_string_format(ph7_context *pCtx, const char *zFormat, ...) { va_list ap; int rc; p = pCtx->pRet; - if((p->iFlags & MEMOBJ_STRING) == 0) { + if((p->nType & MEMOBJ_STRING) == 0) { /* Invalidate any prior representation */ PH7_MemObjRelease(p); MemObjSetType(p, MEMOBJ_STRING); @@ -1469,7 +1469,7 @@ ph7_value *ph7_array_fetch(ph7_value *pArray, const char *zKey, int nByte) { ph7_value skey; int rc; /* Make sure we are dealing with a valid hashmap */ - if((pArray->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pArray->nType & MEMOBJ_HASHMAP) == 0) { return 0; } if(nByte < 0) { @@ -1499,7 +1499,7 @@ int ph7_array_walk(ph7_value *pArray, int (*xWalk)(ph7_value *pValue, ph7_value return PH7_CORRUPT; } /* Make sure we are dealing with a valid hashmap */ - if((pArray->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pArray->nType & MEMOBJ_HASHMAP) == 0) { return PH7_CORRUPT; } /* Start the walk process */ @@ -1513,7 +1513,7 @@ int ph7_array_walk(ph7_value *pArray, int (*xWalk)(ph7_value *pValue, ph7_value int ph7_array_add_elem(ph7_value *pArray, ph7_value *pKey, ph7_value *pValue) { int rc; /* Make sure we are dealing with a valid hashmap */ - if((pArray->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pArray->nType & MEMOBJ_HASHMAP) == 0) { return PH7_CORRUPT; } /* Perform the insertion */ @@ -1527,7 +1527,7 @@ int ph7_array_add_elem(ph7_value *pArray, ph7_value *pKey, ph7_value *pValue) { int ph7_array_add_strkey_elem(ph7_value *pArray, const char *zKey, ph7_value *pValue) { int rc; /* Make sure we are dealing with a valid hashmap */ - if((pArray->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pArray->nType & MEMOBJ_HASHMAP) == 0) { return PH7_CORRUPT; } /* Perform the insertion */ @@ -1551,7 +1551,7 @@ int ph7_array_add_intkey_elem(ph7_value *pArray, int iKey, ph7_value *pValue) { ph7_value sKey; int rc; /* Make sure we are dealing with a valid hashmap */ - if((pArray->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pArray->nType & MEMOBJ_HASHMAP) == 0) { return PH7_CORRUPT; } PH7_MemObjInitFromInt(pArray->pVm, &sKey, iKey); @@ -1567,7 +1567,7 @@ int ph7_array_add_intkey_elem(ph7_value *pArray, int iKey, ph7_value *pValue) { unsigned int ph7_array_count(ph7_value *pArray) { ph7_hashmap *pMap; /* Make sure we are dealing with a valid hashmap */ - if((pArray->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pArray->nType & MEMOBJ_HASHMAP) == 0) { return 0; } /* Point to the internal representation of the hashmap */ @@ -1584,7 +1584,7 @@ int ph7_object_walk(ph7_value *pObject, int (*xWalk)(const char *, ph7_value *, return PH7_CORRUPT; } /* Make sure we are dealing with a valid class instance */ - if((pObject->iFlags & MEMOBJ_OBJ) == 0) { + if((pObject->nType & MEMOBJ_OBJ) == 0) { return PH7_CORRUPT; } /* Start the walk process */ @@ -1599,7 +1599,7 @@ ph7_value *ph7_object_fetch_attr(ph7_value *pObject, const char *zAttr) { ph7_value *pValue; SyString sAttr; /* Make sure we are dealing with a valid class instance */ - if((pObject->iFlags & MEMOBJ_OBJ) == 0 || zAttr == 0) { + if((pObject->nType & MEMOBJ_OBJ) == 0 || zAttr == 0) { return 0; } SyStringInitFromBuf(&sAttr, zAttr, SyStrlen(zAttr)); @@ -1618,7 +1618,7 @@ const char *ph7_object_get_class_name(ph7_value *pObject, int *pLength) { *pLength = 0; } /* Make sure we are dealing with a valid class instance */ - if((pObject->iFlags & MEMOBJ_OBJ) == 0) { + if((pObject->nType & MEMOBJ_OBJ) == 0) { return 0; } /* Point to the class */ @@ -1809,7 +1809,7 @@ int ph7_value_void(ph7_value *pVal) { * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_string(ph7_value *pVal, const char *zString, int nLen) { - if((pVal->iFlags & MEMOBJ_STRING) == 0) { + if((pVal->nType & MEMOBJ_STRING) == 0) { /* Invalidate any prior representation */ PH7_MemObjRelease(pVal); MemObjSetType(pVal, MEMOBJ_STRING); @@ -1830,7 +1830,7 @@ int ph7_value_string(ph7_value *pVal, const char *zString, int nLen) { int ph7_value_string_format(ph7_value *pVal, const char *zFormat, ...) { va_list ap; int rc; - if((pVal->iFlags & MEMOBJ_STRING) == 0) { + if((pVal->nType & MEMOBJ_STRING) == 0) { /* Invalidate any prior representation */ PH7_MemObjRelease(pVal); MemObjSetType(pVal, MEMOBJ_STRING); @@ -1874,42 +1874,42 @@ int ph7_value_release(ph7_value *pVal) { * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_int(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_INT) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_INT) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_float()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_float(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_REAL) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_REAL) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_bool()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_bool(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_BOOL) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_BOOL) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_char()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_char(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_CHAR) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_CHAR) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_void()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_void(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_VOID) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_VOID) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_string()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_string(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_STRING) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_STRING) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_numeric()] @@ -1934,33 +1934,33 @@ int ph7_value_is_callable(ph7_value *pVal) { * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_callback(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_CALL) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_CALL) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_scalar()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_scalar(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_SCALAR) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_SCALAR) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_array()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_array(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_HASHMAP) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_HASHMAP) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_object()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_object(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_OBJ) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_OBJ) ? TRUE : FALSE; } /* * [CAPIREF: ph7_value_is_resource()] * Please refer to the official documentation for function purpose and expected parameters. */ int ph7_value_is_resource(ph7_value *pVal) { - return (pVal->iFlags & MEMOBJ_RES) ? TRUE : FALSE; + return (pVal->nType & MEMOBJ_RES) ? TRUE : FALSE; } diff --git a/engine/compiler.c b/engine/compiler.c index a1d13b1..5f9afd8 100644 --- a/engine/compiler.c +++ b/engine/compiler.c @@ -947,7 +947,7 @@ PH7_PRIVATE sxi32 PH7_CompileClosure(ph7_gen_state *pGen, sxi32 iCompileFlag) { } SyStringInitFromBuf(&sName, zName, nLen); PH7_MemObjInitFromString(pGen->pVm, pObj, &sName); - pObj->iFlags = MEMOBJ_CALL; + pObj->nType = MEMOBJ_CALL; /* Compile the closure body */ rc = PH7_GenStateCompileFunc(&(*pGen), &sName, 0, TRUE, &pAnonFunc); if(rc == SXERR_ABORT) { diff --git a/engine/hashmap.c b/engine/hashmap.c index 463f312..1eb066d 100644 --- a/engine/hashmap.c +++ b/engine/hashmap.c @@ -69,7 +69,7 @@ static sxi64 HashmapCount(ph7_hashmap *pMap, int bRecursive, int iRecCount) { /* Point to the element value */ pElem = (ph7_value *)SySetAt(&pMap->pVm->aMemObj, pEntry->nValIdx); if(pElem) { - if(pElem->iFlags & MEMOBJ_HASHMAP) { + if(pElem->nType & MEMOBJ_HASHMAP) { if(iRecCount > 31) { /* Nesting limit reached */ return iCount; @@ -455,8 +455,8 @@ static sxi32 HashmapLookup( ) { ph7_hashmap_node *pNode = 0; /* cc -O6 warning */ sxi32 rc; - if(pKey->iFlags & (MEMOBJ_STRING | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) { - if((pKey->iFlags & MEMOBJ_STRING) == 0) { + if(pKey->nType & (MEMOBJ_STRING | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) { + if((pKey->nType & MEMOBJ_STRING) == 0) { /* Force a string cast */ PH7_MemObjToString(&(*pKey)); } @@ -467,7 +467,7 @@ static sxi32 HashmapLookup( } } /* Perform an int lookup */ - if((pKey->iFlags & MEMOBJ_INT) == 0) { + if((pKey->nType & MEMOBJ_INT) == 0) { /* Force an integer cast */ PH7_MemObjToInteger(pKey); } @@ -497,8 +497,8 @@ static sxi32 HashmapInsert( ) { ph7_hashmap_node *pNode = 0; sxi32 rc = SXRET_OK; - if(pKey && pKey->iFlags & (MEMOBJ_STRING | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) { - if((pKey->iFlags & MEMOBJ_STRING) == 0) { + if(pKey && pKey->nType & (MEMOBJ_STRING | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) { + if((pKey->nType & MEMOBJ_STRING) == 0) { /* Force a string cast */ PH7_MemObjToString(&(*pKey)); } @@ -530,7 +530,7 @@ static sxi32 HashmapInsert( } IntKey: if(pKey) { - if((pKey->iFlags & MEMOBJ_INT) == 0) { + if((pKey->nType & MEMOBJ_INT) == 0) { /* Force an integer cast */ PH7_MemObjToInteger(pKey); } @@ -698,9 +698,9 @@ static int HashmapFindValue( /* Extract node value */ pVal = HashmapExtractNodeValue(pEntry); if(pVal) { - if((pVal->iFlags | pNeedle->iFlags) & MEMOBJ_NULL) { - sxi32 iF1 = pVal->iFlags; - sxi32 iF2 = pNeedle->iFlags; + if((pVal->nType | pNeedle->nType) & MEMOBJ_NULL) { + sxi32 iF1 = pVal->nType; + sxi32 iF2 = pNeedle->nType; if(iF1 == iF2) { /* NULL values are equals */ if(ppNode) { @@ -769,7 +769,7 @@ static int HashmapFindValueByCallback( rc = PH7_VmCallUserFunction(pMap->pVm, pCallback, 2, apArg, &sResult); if(rc == SXRET_OK) { /* Extract callback result */ - if((sResult.iFlags & MEMOBJ_INT) == 0) { + if((sResult.nType & MEMOBJ_INT) == 0) { /* Perform an int cast */ PH7_MemObjToInteger(&sResult); } @@ -1490,10 +1490,10 @@ static sxi32 HashmapCmpCallback1(ph7_hashmap_node *pA, ph7_hashmap_node *pB, voi PH7_HashmapExtractNodeValue(pB, &sB, FALSE); if(iFlags == 5) { /* String cast */ - if((sA.iFlags & MEMOBJ_STRING) == 0) { + if((sA.nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(&sA); } - if((sB.iFlags & MEMOBJ_STRING) == 0) { + if((sB.nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(&sB); } } else { @@ -1569,10 +1569,10 @@ static sxi32 HashmapCmpCallback3(ph7_hashmap_node *pA, ph7_hashmap_node *pB, voi PH7_HashmapExtractNodeValue(pB, &sB, FALSE); if(iFlags == 5) { /* String cast */ - if((sA.iFlags & MEMOBJ_STRING) == 0) { + if((sA.nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(&sA); } - if((sB.iFlags & MEMOBJ_STRING) == 0) { + if((sB.nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(&sB); } } else { @@ -1611,7 +1611,7 @@ static sxi32 HashmapCmpCallback4(ph7_hashmap_node *pA, ph7_hashmap_node *pB, voi rc = -1; /* Set a dummy result */ } else { /* Extract callback result */ - if((sResult.iFlags & MEMOBJ_INT) == 0) { + if((sResult.nType & MEMOBJ_INT) == 0) { /* Perform an int cast */ PH7_MemObjToInteger(&sResult); } @@ -1691,7 +1691,7 @@ static sxi32 HashmapCmpCallback6(ph7_hashmap_node *pA, ph7_hashmap_node *pB, voi rc = -1; /* Set a dummy result */ } else { /* Extract callback result */ - if((sResult.iFlags & MEMOBJ_INT) == 0) { + if((sResult.nType & MEMOBJ_INT) == 0) { /* Perform an int cast */ PH7_MemObjToInteger(&sResult); } @@ -4333,7 +4333,7 @@ static int ph7_hashmap_flip(ph7_context *pCtx, int nArg, ph7_value **apArg) { for(n = 0 ; n < pSrc->nEntry ; n++) { /* Extract the node value */ pKey = HashmapExtractNodeValue(pEntry); - if(pKey && (pKey->iFlags & MEMOBJ_NULL) == 0) { + if(pKey && (pKey->nType & MEMOBJ_NULL) == 0) { /* Prepare the value for insertion */ if(pEntry->iType == HASHMAP_INT_NODE) { PH7_MemObjInitFromInt(pSrc->pVm, &sVal, pEntry->xKey.iKey); @@ -4372,12 +4372,12 @@ static void DoubleSum(ph7_context *pCtx, ph7_hashmap *pMap) { pEntry = pMap->pFirst; for(n = 0 ; n < pMap->nEntry ; n++) { pObj = HashmapExtractNodeValue(pEntry); - if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj && (pObj->nType & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { + if(pObj->nType & MEMOBJ_REAL) { dSum += pObj->x.rVal; - } else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) { + } else if(pObj->nType & (MEMOBJ_INT | MEMOBJ_BOOL)) { dSum += (double)pObj->x.iVal; - } else if(pObj->iFlags & MEMOBJ_STRING) { + } else if(pObj->nType & MEMOBJ_STRING) { if(SyBlobLength(&pObj->sBlob) > 0) { double dv = 0; SyStrToReal((const char *)SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob), (void *)&dv, 0); @@ -4399,12 +4399,12 @@ static void Int64Sum(ph7_context *pCtx, ph7_hashmap *pMap) { pEntry = pMap->pFirst; for(n = 0 ; n < pMap->nEntry ; n++) { pObj = HashmapExtractNodeValue(pEntry); - if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj && (pObj->nType & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { + if(pObj->nType & MEMOBJ_REAL) { nSum += (sxi64)pObj->x.rVal; - } else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) { + } else if(pObj->nType & (MEMOBJ_INT | MEMOBJ_BOOL)) { nSum += pObj->x.iVal; - } else if(pObj->iFlags & MEMOBJ_STRING) { + } else if(pObj->nType & MEMOBJ_STRING) { if(SyBlobLength(&pObj->sBlob) > 0) { sxi64 nv = 0; SyStrToInt64((const char *)SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob), (void *)&nv, 0); @@ -4449,7 +4449,7 @@ static int ph7_hashmap_sum(ph7_context *pCtx, int nArg, ph7_value **apArg) { ph7_result_int(pCtx, 0); return PH7_OK; } - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj->nType & MEMOBJ_REAL) { DoubleSum(pCtx, pMap); } else { Int64Sum(pCtx, pMap); @@ -4473,12 +4473,12 @@ static void DoubleProd(ph7_context *pCtx, ph7_hashmap *pMap) { dProd = 1; for(n = 0 ; n < pMap->nEntry ; n++) { pObj = HashmapExtractNodeValue(pEntry); - if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj && (pObj->nType & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { + if(pObj->nType & MEMOBJ_REAL) { dProd *= pObj->x.rVal; - } else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) { + } else if(pObj->nType & (MEMOBJ_INT | MEMOBJ_BOOL)) { dProd *= (double)pObj->x.iVal; - } else if(pObj->iFlags & MEMOBJ_STRING) { + } else if(pObj->nType & MEMOBJ_STRING) { if(SyBlobLength(&pObj->sBlob) > 0) { double dv = 0; SyStrToReal((const char *)SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob), (void *)&dv, 0); @@ -4501,12 +4501,12 @@ static void Int64Prod(ph7_context *pCtx, ph7_hashmap *pMap) { nProd = 1; for(n = 0 ; n < pMap->nEntry ; n++) { pObj = HashmapExtractNodeValue(pEntry); - if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj && (pObj->nType & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { + if(pObj->nType & MEMOBJ_REAL) { nProd *= (sxi64)pObj->x.rVal; - } else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) { + } else if(pObj->nType & (MEMOBJ_INT | MEMOBJ_BOOL)) { nProd *= pObj->x.iVal; - } else if(pObj->iFlags & MEMOBJ_STRING) { + } else if(pObj->nType & MEMOBJ_STRING) { if(SyBlobLength(&pObj->sBlob) > 0) { sxi64 nv = 0; SyStrToInt64((const char *)SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob), (void *)&nv, 0); @@ -4551,7 +4551,7 @@ static int ph7_hashmap_product(ph7_context *pCtx, int nArg, ph7_value **apArg) { ph7_result_int(pCtx, 0); return PH7_OK; } - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj->nType & MEMOBJ_REAL) { DoubleProd(pCtx, pMap); } else { Int64Prod(pCtx, pMap); @@ -5124,7 +5124,7 @@ static int HashmapWalkRecursive( /* Extract the node value */ pValue = HashmapExtractNodeValue(pEntry); if(pValue) { - if(pValue->iFlags & MEMOBJ_HASHMAP) { + if(pValue->nType & MEMOBJ_HASHMAP) { if(iNest < 32) { /* Recurse */ iNest++; @@ -5392,8 +5392,8 @@ PH7_PRIVATE sxi32 PH7_HashmapWalk( */ PH7_PRIVATE sxi32 PH7_HashmapCast(ph7_value *pObj, sxi32 nType) { sxi32 rc; - if((pObj->iFlags & MEMOBJ_HASHMAP)) { - if((pObj->iFlags & nType) == 0) { + if((pObj->nType & MEMOBJ_HASHMAP)) { + if((pObj->nType & nType) == 0) { ph7_hashmap *pMap; ph7_hashmap_node *pNode; ph7_value pValue, pKey; @@ -5413,10 +5413,10 @@ PH7_PRIVATE sxi32 PH7_HashmapCast(ph7_value *pObj, sxi32 nType) { } PH7_HashmapInsert(pMap, &pKey, &pValue); } - pObj->iFlags = MEMOBJ_HASHMAP | nType; + pObj->nType = MEMOBJ_HASHMAP | nType; } } else { - if(pObj->iFlags != nType && PH7_CheckVarCompat(pObj, nType) != SXRET_OK) { + if(pObj->nType != nType && PH7_CheckVarCompat(pObj, nType) != SXRET_OK) { return SXERR_NOMATCH; } ProcMemObjCast xCast = PH7_MemObjCastMethod(nType); diff --git a/engine/memobj.c b/engine/memobj.c index acf524d..a09407a 100644 --- a/engine/memobj.c +++ b/engine/memobj.c @@ -124,23 +124,23 @@ static sxi32 MemObjCallClassCastMethod( * If pObj represents a NULL value, return 0. */ static sxi64 MemObjIntValue(ph7_value *pObj) { - sxi32 iFlags; - iFlags = pObj->iFlags; - if(iFlags & MEMOBJ_REAL) { + sxi32 nType; + nType = pObj->nType; + if(nType & MEMOBJ_REAL) { return MemObjRealToInt(&(*pObj)); - } else if(iFlags & (MEMOBJ_INT | MEMOBJ_BOOL | MEMOBJ_CHAR)) { + } else if(nType & (MEMOBJ_INT | MEMOBJ_BOOL | MEMOBJ_CHAR)) { return pObj->x.iVal; - } else if(iFlags & MEMOBJ_STRING) { + } else if(nType & MEMOBJ_STRING) { return MemObjStringToInt(&(*pObj)); - } else if(iFlags & (MEMOBJ_CALL | MEMOBJ_NULL | MEMOBJ_VOID)) { + } else if(nType & (MEMOBJ_CALL | MEMOBJ_NULL | MEMOBJ_VOID)) { return 0; - } else if(iFlags & MEMOBJ_HASHMAP) { + } else if(nType & MEMOBJ_HASHMAP) { ph7_hashmap *pMap = (ph7_hashmap *)pObj->x.pOther; sxu32 n = pMap->nEntry; PH7_HashmapUnref(pMap); /* Return total number of entries in the hashmap */ return n; - } else if(iFlags & MEMOBJ_OBJ) { + } else if(nType & MEMOBJ_OBJ) { ph7_value sResult; sxi64 iVal = 1; sxi32 rc; @@ -148,14 +148,14 @@ static sxi64 MemObjIntValue(ph7_value *pObj) { PH7_MemObjInit(pObj->pVm, &sResult); rc = MemObjCallClassCastMethod(pObj->pVm, (ph7_class_instance *)pObj->x.pOther, "__toInt", sizeof("__toInt") - 1, &sResult); - if(rc == SXRET_OK && (sResult.iFlags & MEMOBJ_INT)) { + if(rc == SXRET_OK && (sResult.nType & MEMOBJ_INT)) { /* Extract method return value */ iVal = sResult.x.iVal; } PH7_ClassInstanceUnref((ph7_class_instance *)pObj->x.pOther); PH7_MemObjRelease(&sResult); return iVal; - } else if(iFlags & MEMOBJ_RES) { + } else if(nType & MEMOBJ_RES) { return pObj->x.pOther != 0; } /* CANT HAPPEN */ @@ -172,13 +172,13 @@ static sxi64 MemObjIntValue(ph7_value *pObj) { * If pObj represents a NULL value, return 0.0 */ static ph7_real MemObjRealValue(ph7_value *pObj) { - sxi32 iFlags; - iFlags = pObj->iFlags; - if(iFlags & MEMOBJ_REAL) { + sxi32 nType; + nType = pObj->nType; + if(nType & MEMOBJ_REAL) { return pObj->x.rVal; - } else if(iFlags & (MEMOBJ_INT | MEMOBJ_BOOL | MEMOBJ_CHAR)) { + } else if(nType & (MEMOBJ_INT | MEMOBJ_BOOL | MEMOBJ_CHAR)) { return (ph7_real)pObj->x.iVal; - } else if(iFlags & MEMOBJ_STRING) { + } else if(nType & MEMOBJ_STRING) { SyString sString; ph7_real rVal = 0.0; SyStringInitFromBuf(&sString, SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob)); @@ -187,15 +187,15 @@ static ph7_real MemObjRealValue(ph7_value *pObj) { SyStrToReal(sString.zString, sString.nByte, (void *)&rVal, 0); } return rVal; - } else if(iFlags & (MEMOBJ_CALL | MEMOBJ_NULL | MEMOBJ_VOID)) { + } else if(nType & (MEMOBJ_CALL | MEMOBJ_NULL | MEMOBJ_VOID)) { return 0.0; - } else if(iFlags & MEMOBJ_HASHMAP) { + } else if(nType & MEMOBJ_HASHMAP) { /* Return the total number of entries in the hashmap */ ph7_hashmap *pMap = (ph7_hashmap *)pObj->x.pOther; ph7_real n = (ph7_real)pMap->nEntry; PH7_HashmapUnref(pMap); return n; - } else if(iFlags & MEMOBJ_OBJ) { + } else if(nType & MEMOBJ_OBJ) { ph7_value sResult; ph7_real rVal = 1; sxi32 rc; @@ -203,14 +203,14 @@ static ph7_real MemObjRealValue(ph7_value *pObj) { PH7_MemObjInit(pObj->pVm, &sResult); rc = MemObjCallClassCastMethod(pObj->pVm, (ph7_class_instance *)pObj->x.pOther, "__toFloat", sizeof("__toFloat") - 1, &sResult); - if(rc == SXRET_OK && (sResult.iFlags & MEMOBJ_REAL)) { + if(rc == SXRET_OK && (sResult.nType & MEMOBJ_REAL)) { /* Extract method return value */ rVal = sResult.x.rVal; } PH7_ClassInstanceUnref((ph7_class_instance *)pObj->x.pOther); PH7_MemObjRelease(&sResult); return rVal; - } else if(iFlags & MEMOBJ_RES) { + } else if(nType & MEMOBJ_RES) { return (ph7_real)(pObj->x.pOther != 0); } /* NOT REACHED */ @@ -221,12 +221,12 @@ static ph7_real MemObjRealValue(ph7_value *pObj) { * This function never fail and always return SXRET_OK. */ static sxi32 MemObjStringValue(SyBlob *pOut, ph7_value *pObj, sxu8 bStrictBool) { - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj->nType & MEMOBJ_REAL) { SyBlobFormat(&(*pOut), "%.15g", pObj->x.rVal); - } else if(pObj->iFlags & MEMOBJ_INT) { + } else if(pObj->nType & MEMOBJ_INT) { SyBlobFormat(&(*pOut), "%qd", pObj->x.iVal); /* %qd (BSD quad) is equivalent to %lld in the libc printf */ - } else if(pObj->iFlags & MEMOBJ_BOOL) { + } else if(pObj->nType & MEMOBJ_BOOL) { if(pObj->x.iVal) { SyBlobAppend(&(*pOut), "TRUE", sizeof("TRUE") - 1); } else { @@ -234,21 +234,21 @@ static sxi32 MemObjStringValue(SyBlob *pOut, ph7_value *pObj, sxu8 bStrictBool) SyBlobAppend(&(*pOut), "FALSE", sizeof("FALSE") - 1); } } - } else if(pObj->iFlags & MEMOBJ_CHAR) { + } else if(pObj->nType & MEMOBJ_CHAR) { if(pObj->x.iVal > 0) { SyBlobFormat(&(*pOut), "%c", pObj->x.iVal); } - } else if(pObj->iFlags & MEMOBJ_HASHMAP) { + } else if(pObj->nType & MEMOBJ_HASHMAP) { SyBlobAppend(&(*pOut), "Array", sizeof("Array") - 1); PH7_HashmapUnref((ph7_hashmap *)pObj->x.pOther); - } else if(pObj->iFlags & MEMOBJ_OBJ) { + } else if(pObj->nType & MEMOBJ_OBJ) { ph7_value sResult; sxi32 rc; /* Invoke the __toString() method if available */ PH7_MemObjInit(pObj->pVm, &sResult); rc = MemObjCallClassCastMethod(pObj->pVm, (ph7_class_instance *)pObj->x.pOther, "__toString", sizeof("__toString") - 1, &sResult); - if(rc == SXRET_OK && (sResult.iFlags & MEMOBJ_STRING) && SyBlobLength(&sResult.sBlob) > 0) { + if(rc == SXRET_OK && (sResult.nType & MEMOBJ_STRING) && SyBlobLength(&sResult.sBlob) > 0) { /* Expand method return value */ SyBlobDup(&sResult.sBlob, pOut); } else { @@ -257,7 +257,7 @@ static sxi32 MemObjStringValue(SyBlob *pOut, ph7_value *pObj, sxu8 bStrictBool) } PH7_ClassInstanceUnref((ph7_class_instance *)pObj->x.pOther); PH7_MemObjRelease(&sResult); - } else if(pObj->iFlags & MEMOBJ_RES) { + } else if(pObj->nType & MEMOBJ_RES) { SyBlobFormat(&(*pOut), "ResourceID_%#x", pObj->x.pOther); } return SXRET_OK; @@ -275,13 +275,13 @@ static sxi32 MemObjStringValue(SyBlob *pOut, ph7_value *pObj, sxu8 bStrictBool) * an array with zero elements. */ static sxi32 MemObjBooleanValue(ph7_value *pObj) { - sxi32 iFlags; - iFlags = pObj->iFlags; - if(iFlags & MEMOBJ_REAL) { + sxi32 nType; + nType = pObj->nType; + if(nType & MEMOBJ_REAL) { return pObj->x.rVal != 0.0 ? 1 : 0; - } else if(iFlags & (MEMOBJ_INT | MEMOBJ_CHAR)) { + } else if(nType & (MEMOBJ_INT | MEMOBJ_CHAR)) { return pObj->x.iVal ? 1 : 0; - } else if(iFlags & MEMOBJ_STRING) { + } else if(nType & MEMOBJ_STRING) { SyString sString; SyStringInitFromBuf(&sString, SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob)); if(sString.nByte == 0) { @@ -302,7 +302,7 @@ static sxi32 MemObjBooleanValue(ph7_value *pObj) { } return zIn >= zEnd ? 0 : 1; } - } else if(iFlags & MEMOBJ_CALL) { + } else if(nType & MEMOBJ_CALL) { SyString sString; SyStringInitFromBuf(&sString, SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob)); if(sString.nByte == 0) { @@ -312,14 +312,14 @@ static sxi32 MemObjBooleanValue(ph7_value *pObj) { /* Something set, return true */ return 1; } - } else if(iFlags & (MEMOBJ_NULL | MEMOBJ_VOID)) { + } else if(nType & (MEMOBJ_NULL | MEMOBJ_VOID)) { return 0; - } else if(iFlags & MEMOBJ_HASHMAP) { + } else if(nType & MEMOBJ_HASHMAP) { ph7_hashmap *pMap = (ph7_hashmap *)pObj->x.pOther; sxu32 n = pMap->nEntry; PH7_HashmapUnref(pMap); return n > 0 ? TRUE : FALSE; - } else if(iFlags & MEMOBJ_OBJ) { + } else if(nType & MEMOBJ_OBJ) { ph7_value sResult; sxi32 iVal = 1; sxi32 rc; @@ -330,14 +330,14 @@ static sxi32 MemObjBooleanValue(ph7_value *pObj) { PH7_MemObjInit(pObj->pVm, &sResult); rc = MemObjCallClassCastMethod(pObj->pVm, (ph7_class_instance *)pObj->x.pOther, "__toBool", sizeof("__toBool") - 1, &sResult); - if(rc == SXRET_OK && (sResult.iFlags & (MEMOBJ_INT | MEMOBJ_BOOL))) { + if(rc == SXRET_OK && (sResult.nType & (MEMOBJ_INT | MEMOBJ_BOOL))) { /* Extract method return value */ iVal = (sxi32)(sResult.x.iVal != 0); /* Stupid cc warning -W -Wall -O6 */ } PH7_ClassInstanceUnref((ph7_class_instance *)pObj->x.pOther); PH7_MemObjRelease(&sResult); return iVal; - } else if(iFlags & MEMOBJ_RES) { + } else if(nType & MEMOBJ_RES) { return pObj->x.pOther != 0; } /* NOT REACHED */ @@ -348,13 +348,13 @@ static sxi32 MemObjBooleanValue(ph7_value *pObj) { * This function never fail and always return SXRET_OK. */ static ph7_real MemObjCharValue(ph7_value *pObj) { - sxi32 iFlags; - iFlags = pObj->iFlags; - if(iFlags & (MEMOBJ_CALL | MEMOBJ_REAL | MEMOBJ_HASHMAP | MEMOBJ_RES | MEMOBJ_NULL | MEMOBJ_VOID)) { + sxi32 nType; + nType = pObj->nType; + if(nType & (MEMOBJ_CALL | MEMOBJ_REAL | MEMOBJ_HASHMAP | MEMOBJ_RES | MEMOBJ_NULL | MEMOBJ_VOID)) { return 0; - } else if(iFlags & MEMOBJ_INT) { + } else if(nType & MEMOBJ_INT) { return pObj->x.iVal; - } else if(iFlags & MEMOBJ_STRING) { + } else if(nType & MEMOBJ_STRING) { SyString sString; SyStringInitFromBuf(&sString, SyBlobData(&pObj->sBlob), SyBlobLength(&pObj->sBlob)); if(sString.nByte == 0) { @@ -370,26 +370,26 @@ static ph7_real MemObjCharValue(ph7_value *pObj) { * Checks a ph7_value variable compatibility with nType data type. */ PH7_PRIVATE sxi32 PH7_CheckVarCompat(ph7_value *pObj, int nType) { - if(((nType & MEMOBJ_HASHMAP) == 0) && ((pObj->iFlags & MEMOBJ_HASHMAP) == 0)) { - if(pObj->iFlags & MEMOBJ_NULL) { + if(((nType & MEMOBJ_HASHMAP) == 0) && ((pObj->nType & MEMOBJ_HASHMAP) == 0)) { + if(pObj->nType & MEMOBJ_NULL) { /* Always allow to store a NULL */ return SXRET_OK; - } else if((nType & MEMOBJ_REAL) && (pObj->iFlags & MEMOBJ_INT)) { + } else if((nType & MEMOBJ_REAL) && (pObj->nType & MEMOBJ_INT)) { /* Allow to store INT to FLOAT variable */ return SXRET_OK; - } else if((nType & MEMOBJ_CHAR) && (pObj->iFlags & MEMOBJ_INT)) { + } else if((nType & MEMOBJ_CHAR) && (pObj->nType & MEMOBJ_INT)) { /* Allow to store INT to CHAR variable */ return SXRET_OK; - } else if((nType & MEMOBJ_STRING) && (pObj->iFlags & MEMOBJ_CHAR)) { + } else if((nType & MEMOBJ_STRING) && (pObj->nType & MEMOBJ_CHAR)) { /* Allow to store CHAR to STRING variable */ return SXRET_OK; - } else if((nType & MEMOBJ_CHAR) && (pObj->iFlags & MEMOBJ_STRING)) { + } else if((nType & MEMOBJ_CHAR) && (pObj->nType & MEMOBJ_STRING)) { /* Allow to store STRING to CHAR variable (if not too long) */ int len = SyBlobLength(&pObj->sBlob); if(len == 0 || len == 1) { return SXRET_OK; } - } else if((nType & MEMOBJ_CALL) && (pObj->iFlags & MEMOBJ_STRING)) { + } else if((nType & MEMOBJ_CALL) && (pObj->nType & MEMOBJ_STRING)) { /* Allow to store STRING to CALLBACK variable */ return SXRET_OK; } @@ -401,48 +401,48 @@ PH7_PRIVATE sxi32 PH7_CheckVarCompat(ph7_value *pObj, int nType) { * destination are of the compatible data types. */ PH7_PRIVATE sxi32 PH7_MemObjSafeStore(ph7_value *pSrc, ph7_value *pDest) { - if(pDest->iFlags == 0 || ((pDest->iFlags | MEMOBJ_FIXEDVAL | MEMOBJ_PARENTOBJ) == (pSrc->iFlags | MEMOBJ_FIXEDVAL | MEMOBJ_PARENTOBJ))) { + if(pDest->nType == 0 || ((pDest->nType | MEMOBJ_FIXEDVAL | MEMOBJ_PARENTOBJ) == (pSrc->nType | MEMOBJ_FIXEDVAL | MEMOBJ_PARENTOBJ))) { PH7_MemObjStore(pSrc, pDest); - } else if(pDest->iFlags & MEMOBJ_MIXED) { - if(pDest->iFlags & MEMOBJ_HASHMAP) { + } else if(pDest->nType & MEMOBJ_MIXED) { + if(pDest->nType & MEMOBJ_HASHMAP) { /* mixed[] */ - if(pSrc->iFlags & MEMOBJ_HASHMAP) { + if(pSrc->nType & MEMOBJ_HASHMAP) { PH7_MemObjStore(pSrc, pDest); - pDest->iFlags |= MEMOBJ_MIXED; - } else if(pSrc->iFlags & MEMOBJ_NULL) { + pDest->nType |= MEMOBJ_MIXED; + } else if(pSrc->nType & MEMOBJ_NULL) { PH7_MemObjToHashmap(pSrc); - MemObjSetType(pSrc, pDest->iFlags); + MemObjSetType(pSrc, pDest->nType); PH7_MemObjStore(pSrc, pDest); } else { return SXERR_NOMATCH; } } else { /* mixed */ - if(pSrc->iFlags == MEMOBJ_NULL) { + if(pSrc->nType == MEMOBJ_NULL) { MemObjSetType(pDest, MEMOBJ_MIXED | MEMOBJ_VOID); - } else if((pSrc->iFlags & MEMOBJ_HASHMAP) == 0) { + } else if((pSrc->nType & MEMOBJ_HASHMAP) == 0) { PH7_MemObjStore(pSrc, pDest); - pDest->iFlags |= MEMOBJ_MIXED; + pDest->nType |= MEMOBJ_MIXED; } else { return SXERR_NOMATCH; } } - } else if((pDest->iFlags & MEMOBJ_HASHMAP)) { + } else if((pDest->nType & MEMOBJ_HASHMAP)) { /* [] */ - if(pSrc->iFlags & MEMOBJ_NULL) { + if(pSrc->nType & MEMOBJ_NULL) { PH7_MemObjToHashmap(pSrc); - MemObjSetType(pSrc, pDest->iFlags); + MemObjSetType(pSrc, pDest->nType); PH7_MemObjStore(pSrc, pDest); - } else if(pSrc->iFlags & MEMOBJ_HASHMAP) { - if(PH7_HashmapCast(pSrc, pDest->iFlags ^ MEMOBJ_HASHMAP) != SXRET_OK) { + } else if(pSrc->nType & MEMOBJ_HASHMAP) { + if(PH7_HashmapCast(pSrc, pDest->nType ^ MEMOBJ_HASHMAP) != SXRET_OK) { return SXERR_NOMATCH; } PH7_MemObjStore(pSrc, pDest); } else { return SXERR_NOMATCH; } - } else if(PH7_CheckVarCompat(pSrc, pDest->iFlags) == SXRET_OK) { - ProcMemObjCast xCast = PH7_MemObjCastMethod(pDest->iFlags); + } else if(PH7_CheckVarCompat(pSrc, pDest->nType) == SXRET_OK) { + ProcMemObjCast xCast = PH7_MemObjCastMethod(pDest->nType); xCast(pSrc); PH7_MemObjStore(pSrc, pDest); } else { @@ -454,7 +454,7 @@ PH7_PRIVATE sxi32 PH7_MemObjSafeStore(ph7_value *pSrc, ph7_value *pDest) { * Convert a ph7_value to type integer.Invalidate any prior representations. */ PH7_PRIVATE sxi32 PH7_MemObjToInteger(ph7_value *pObj) { - if((pObj->iFlags & MEMOBJ_INT) == 0) { + if((pObj->nType & MEMOBJ_INT) == 0) { /* Preform the conversion */ pObj->x.iVal = MemObjIntValue(&(*pObj)); /* Invalidate any prior representations */ @@ -468,7 +468,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToInteger(ph7_value *pObj) { * Invalidate any prior representations */ PH7_PRIVATE sxi32 PH7_MemObjToReal(ph7_value *pObj) { - if((pObj->iFlags & MEMOBJ_REAL) == 0) { + if((pObj->nType & MEMOBJ_REAL) == 0) { /* Preform the conversion */ pObj->x.rVal = MemObjRealValue(&(*pObj)); /* Invalidate any prior representations */ @@ -481,7 +481,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToReal(ph7_value *pObj) { * Convert a ph7_value to type boolean.Invalidate any prior representations. */ PH7_PRIVATE sxi32 PH7_MemObjToBool(ph7_value *pObj) { - if((pObj->iFlags & MEMOBJ_BOOL) == 0) { + if((pObj->nType & MEMOBJ_BOOL) == 0) { /* Preform the conversion */ pObj->x.iVal = MemObjBooleanValue(&(*pObj)); /* Invalidate any prior representations */ @@ -491,7 +491,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToBool(ph7_value *pObj) { return SXRET_OK; } PH7_PRIVATE sxi32 PH7_MemObjToChar(ph7_value *pObj) { - if((pObj->iFlags & MEMOBJ_CHAR) == 0) { + if((pObj->nType & MEMOBJ_CHAR) == 0) { /* Preform the conversion */ pObj->x.iVal = MemObjCharValue(&(*pObj)); /* Invalidate any prior representations */ @@ -504,7 +504,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToChar(ph7_value *pObj) { * Convert a ph7_value to type void.Invalidate any prior representations. */ PH7_PRIVATE sxi32 PH7_MemObjToVoid(ph7_value *pObj) { - if((pObj->iFlags & MEMOBJ_VOID) == 0) { + if((pObj->nType & MEMOBJ_VOID) == 0) { PH7_MemObjRelease(pObj); MemObjSetType(pObj, MEMOBJ_VOID); } @@ -512,7 +512,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToVoid(ph7_value *pObj) { } PH7_PRIVATE sxi32 PH7_MemObjToCallback(ph7_value *pObj) { sxi32 rc = SXRET_OK; - if((pObj->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { + if((pObj->nType & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { SyBlobReset(&pObj->sBlob); /* Reset the internal buffer */ rc = MemObjStringValue(&pObj->sBlob, &(*pObj), TRUE); } @@ -521,10 +521,10 @@ PH7_PRIVATE sxi32 PH7_MemObjToCallback(ph7_value *pObj) { } PH7_PRIVATE sxi32 PH7_MemObjToResource(ph7_value *pObj) { sxi32 rc = SXRET_OK; - if((pObj->iFlags & MEMOBJ_NULL) == 0) { + if((pObj->nType & MEMOBJ_NULL) == 0) { PH7_VmThrowError(&(*pObj->pVm), PH7_CTX_WARNING, "Unsafe type casting condition, assuming default value"); } - if((pObj->iFlags & MEMOBJ_RES) == 0) { + if((pObj->nType & MEMOBJ_RES) == 0) { pObj->x.iVal = 0; } MemObjSetType(pObj, MEMOBJ_RES); @@ -535,8 +535,8 @@ PH7_PRIVATE sxi32 PH7_MemObjToResource(ph7_value *pObj) { */ PH7_PRIVATE sxi32 PH7_MemObjToString(ph7_value *pObj) { sxi32 rc = SXRET_OK; - if((pObj->iFlags & MEMOBJ_STRING) == 0) { - if((pObj->iFlags & MEMOBJ_CALL) == 0) { + if((pObj->nType & MEMOBJ_STRING) == 0) { + if((pObj->nType & MEMOBJ_CALL) == 0) { /* Perform the conversion */ SyBlobReset(&pObj->sBlob); /* Reset the internal buffer */ rc = MemObjStringValue(&pObj->sBlob, &(*pObj), TRUE); @@ -553,21 +553,21 @@ PH7_PRIVATE sxi32 PH7_MemObjToString(ph7_value *pObj) { * and the value of the scalar which was converted. */ PH7_PRIVATE sxi32 PH7_MemObjToHashmap(ph7_value *pObj) { - if((pObj->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pObj->nType & MEMOBJ_HASHMAP) == 0) { ph7_hashmap *pMap; /* Allocate a new hashmap instance */ pMap = PH7_NewHashmap(pObj->pVm, 0, 0); if(pMap == 0) { return SXERR_MEM; } - if((pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_RES)) == 0) { + if((pObj->nType & (MEMOBJ_NULL | MEMOBJ_RES)) == 0) { /* * According to the PHP language reference manual. * For any of the types: integer, float, string, boolean converting a value * to an array results in an array with a single element with index zero * and the value of the scalar which was converted. */ - if(pObj->iFlags & MEMOBJ_OBJ) { + if(pObj->nType & MEMOBJ_OBJ) { /* Object cast */ PH7_ClassInstanceToHashmap((ph7_class_instance *)pObj->x.pOther, pMap); } else { @@ -599,12 +599,12 @@ PH7_PRIVATE sxi32 PH7_MemObjToHashmap(ph7_value *pObj) { * Refer to the official documentation for more information. */ PH7_PRIVATE sxi32 PH7_MemObjToObject(ph7_value *pObj) { - if(pObj->iFlags & MEMOBJ_NULL) { + if(pObj->nType & MEMOBJ_NULL) { /* Invalidate any prior representation */ PH7_MemObjRelease(pObj); /* Typecast the value */ MemObjSetType(pObj, MEMOBJ_OBJ); - } else if((pObj->iFlags & MEMOBJ_OBJ) == 0) { + } else if((pObj->nType & MEMOBJ_OBJ) == 0) { ph7_class_instance *pStd; ph7_class_method *pCons; ph7_class *pClass; @@ -655,24 +655,24 @@ PH7_PRIVATE sxi32 PH7_MemObjToObject(ph7_value *pObj) { * to variable $var, $var becomes a string. If an integer value is then * assigned to $var, it becomes an integer. */ -PH7_PRIVATE ProcMemObjCast PH7_MemObjCastMethod(sxi32 iFlags) { - if(iFlags & MEMOBJ_STRING) { +PH7_PRIVATE ProcMemObjCast PH7_MemObjCastMethod(sxi32 nType) { + if(nType & MEMOBJ_STRING) { return PH7_MemObjToString; - } else if(iFlags & MEMOBJ_INT) { + } else if(nType & MEMOBJ_INT) { return PH7_MemObjToInteger; - } else if(iFlags & MEMOBJ_REAL) { + } else if(nType & MEMOBJ_REAL) { return PH7_MemObjToReal; - } else if(iFlags & MEMOBJ_BOOL) { + } else if(nType & MEMOBJ_BOOL) { return PH7_MemObjToBool; - } else if(iFlags & MEMOBJ_CHAR) { + } else if(nType & MEMOBJ_CHAR) { return PH7_MemObjToChar; - } else if(iFlags & MEMOBJ_OBJ) { + } else if(nType & MEMOBJ_OBJ) { return PH7_MemObjToObject; - } else if(iFlags & MEMOBJ_CALL) { + } else if(nType & MEMOBJ_CALL) { return PH7_MemObjToCallback; - } else if(iFlags & MEMOBJ_RES) { + } else if(nType & MEMOBJ_RES) { return PH7_MemObjToResource; - } else if(iFlags & MEMOBJ_VOID) { + } else if(nType & MEMOBJ_VOID) { return PH7_MemObjToVoid; } /* Release the variable */ @@ -684,7 +684,7 @@ PH7_PRIVATE ProcMemObjCast PH7_MemObjCastMethod(sxi32 iFlags) { * Return TRUE if numeric.FALSE otherwise. */ PH7_PRIVATE sxi32 PH7_MemObjIsNumeric(ph7_value *pObj) { - if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_REAL)) { + if(pObj->nType & (MEMOBJ_INT | MEMOBJ_REAL)) { return TRUE; } return FALSE; @@ -698,9 +698,9 @@ PH7_PRIVATE sxi32 PH7_MemObjIsNumeric(ph7_value *pObj) { * and ignore the rest. */ PH7_PRIVATE sxi32 PH7_MemObjToNumeric(ph7_value *pObj) { - if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_REAL | MEMOBJ_BOOL | MEMOBJ_NULL)) { - if(pObj->iFlags & (MEMOBJ_BOOL | MEMOBJ_NULL | MEMOBJ_VOID)) { - if(pObj->iFlags & (MEMOBJ_CALL | MEMOBJ_NULL | MEMOBJ_VOID)) { + if(pObj->nType & (MEMOBJ_INT | MEMOBJ_REAL | MEMOBJ_BOOL | MEMOBJ_NULL)) { + if(pObj->nType & (MEMOBJ_BOOL | MEMOBJ_NULL | MEMOBJ_VOID)) { + if(pObj->nType & (MEMOBJ_CALL | MEMOBJ_NULL | MEMOBJ_VOID)) { pObj->x.iVal = 0; } MemObjSetType(pObj, MEMOBJ_INT); @@ -708,7 +708,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToNumeric(ph7_value *pObj) { /* Already numeric */ return SXRET_OK; } - if(pObj->iFlags & MEMOBJ_STRING) { + if(pObj->nType & MEMOBJ_STRING) { sxi32 rc = SXERR_INVALID; sxu8 bReal = FALSE; SyString sString; @@ -730,7 +730,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToNumeric(ph7_value *pObj) { MemObjSetType(pObj, MEMOBJ_INT); SyBlobRelease(&pObj->sBlob); } - } else if(pObj->iFlags & (MEMOBJ_OBJ | MEMOBJ_HASHMAP | MEMOBJ_RES)) { + } else if(pObj->nType & (MEMOBJ_OBJ | MEMOBJ_HASHMAP | MEMOBJ_RES)) { PH7_MemObjToInteger(pObj); } else { /* Perform a blind cast */ @@ -748,7 +748,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInit(ph7_vm *pVm, ph7_value *pObj) { pObj->pVm = pVm; SyBlobInit(&pObj->sBlob, &pVm->sAllocator); /* Set the NULL type */ - pObj->iFlags = MEMOBJ_NULL; + pObj->nType = MEMOBJ_NULL; return SXRET_OK; } /* @@ -762,7 +762,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromInt(ph7_vm *pVm, ph7_value *pObj, sxi64 iVal SyBlobInit(&pObj->sBlob, &pVm->sAllocator); /* Set the desired type */ pObj->x.iVal = iVal; - pObj->iFlags = MEMOBJ_INT; + pObj->nType = MEMOBJ_INT; return SXRET_OK; } /* @@ -776,7 +776,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromBool(ph7_vm *pVm, ph7_value *pObj, sxi32 iVa SyBlobInit(&pObj->sBlob, &pVm->sAllocator); /* Set the desired type */ pObj->x.iVal = iVal ? 1 : 0; - pObj->iFlags = MEMOBJ_BOOL; + pObj->nType = MEMOBJ_BOOL; return SXRET_OK; } /* @@ -790,7 +790,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromReal(ph7_vm *pVm, ph7_value *pObj, ph7_real SyBlobInit(&pObj->sBlob, &pVm->sAllocator); /* Set the desired type */ pObj->x.rVal = rVal; - pObj->iFlags = MEMOBJ_REAL; + pObj->nType = MEMOBJ_REAL; return SXRET_OK; } /* @@ -803,7 +803,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromVoid(ph7_vm *pVm, ph7_value *pObj, ph7_real pObj->pVm = pVm; SyBlobInit(&pObj->sBlob, &pVm->sAllocator); /* Set the desired type */ - pObj->iFlags = MEMOBJ_VOID; + pObj->nType = MEMOBJ_VOID; return SXRET_OK; }/* * Initialize a ph7_value to the array type. @@ -815,7 +815,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromArray(ph7_vm *pVm, ph7_value *pObj, ph7_hash pObj->pVm = pVm; SyBlobInit(&pObj->sBlob, &pVm->sAllocator); /* Set the desired type */ - pObj->iFlags = MEMOBJ_HASHMAP; + pObj->nType = MEMOBJ_HASHMAP; pObj->x.pOther = pArray; return SXRET_OK; } @@ -833,7 +833,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromString(ph7_vm *pVm, ph7_value *pObj, const S SyBlobAppend(&pObj->sBlob, (const void *)pVal->zString, pVal->nByte); } /* Set the desired type */ - pObj->iFlags = MEMOBJ_STRING; + pObj->nType = MEMOBJ_STRING; return SXRET_OK; } /* @@ -844,7 +844,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromString(ph7_vm *pVm, ph7_value *pObj, const S */ PH7_PRIVATE sxi32 PH7_MemObjStringAppend(ph7_value *pObj, const char *zData, sxu32 nLen) { sxi32 rc; - if((pObj->iFlags & MEMOBJ_STRING) == 0) { + if((pObj->nType & MEMOBJ_STRING) == 0) { /* Invalidate any prior representation */ PH7_MemObjRelease(pObj); MemObjSetType(pObj, MEMOBJ_STRING); @@ -861,7 +861,7 @@ PH7_PRIVATE sxi32 PH7_MemObjStringAppend(ph7_value *pObj, const char *zData, sxu */ PH7_PRIVATE sxi32 PH7_MemObjStringFormat(ph7_value *pObj, const char *zFormat, va_list ap) { sxi32 rc; - if((pObj->iFlags & MEMOBJ_STRING) == 0) { + if((pObj->nType & MEMOBJ_STRING) == 0) { /* Invalidate any prior representation */ PH7_MemObjRelease(pObj); MemObjSetType(pObj, MEMOBJ_STRING); @@ -878,15 +878,15 @@ PH7_PRIVATE sxi32 PH7_MemObjStore(ph7_value *pSrc, ph7_value *pDest) { ph7_hashmap *pSrcMap = 0; sxi32 rc; if(pSrc->x.pOther) { - if(pSrc->iFlags & MEMOBJ_HASHMAP) { + if(pSrc->nType & MEMOBJ_HASHMAP) { /* Dump source hashmap */ pSrcMap = (ph7_hashmap *)pSrc->x.pOther; - } else if(pSrc->iFlags & MEMOBJ_OBJ) { + } else if(pSrc->nType & MEMOBJ_OBJ) { /* Increment reference count */ ((ph7_class_instance *)pSrc->x.pOther)->iRef++; } } - if(pDest->iFlags & MEMOBJ_OBJ) { + if(pDest->nType & MEMOBJ_OBJ) { pObj = (ph7_class_instance *)pDest->x.pOther; } SyMemcpy((const void *) & (*pSrc), &(*pDest), sizeof(ph7_value) - (sizeof(ph7_vm *) + sizeof(SyBlob) + sizeof(sxu32))); @@ -918,10 +918,10 @@ PH7_PRIVATE sxi32 PH7_MemObjLoad(ph7_value *pSrc, ph7_value *pDest) { SyMemcpy((const void *) & (*pSrc), &(*pDest), sizeof(ph7_value) - (sizeof(ph7_vm *) + sizeof(SyBlob) + sizeof(sxu32))); if(pSrc->x.pOther) { - if(pSrc->iFlags & MEMOBJ_HASHMAP) { + if(pSrc->nType & MEMOBJ_HASHMAP) { /* Increment reference count */ ((ph7_hashmap *)pSrc->x.pOther)->iRef++; - } else if(pSrc->iFlags & MEMOBJ_OBJ) { + } else if(pSrc->nType & MEMOBJ_OBJ) { /* Increment reference count */ ((ph7_class_instance *)pSrc->x.pOther)->iRef++; } @@ -938,18 +938,18 @@ PH7_PRIVATE sxi32 PH7_MemObjLoad(ph7_value *pSrc, ph7_value *pDest) { * Invalidate any prior representation of a given ph7_value. */ PH7_PRIVATE sxi32 PH7_MemObjRelease(ph7_value *pObj) { - if((pObj->iFlags & MEMOBJ_NULL) == 0) { + if((pObj->nType & MEMOBJ_NULL) == 0) { if(pObj->x.pOther) { - if(pObj->iFlags & MEMOBJ_HASHMAP) { + if(pObj->nType & MEMOBJ_HASHMAP) { PH7_HashmapUnref((ph7_hashmap *)pObj->x.pOther); - } else if(pObj->iFlags & MEMOBJ_OBJ) { + } else if(pObj->nType & MEMOBJ_OBJ) { PH7_ClassInstanceUnref((ph7_class_instance *)pObj->x.pOther); } } /* Release the internal buffer */ SyBlobRelease(&pObj->sBlob); /* Invalidate any prior representation */ - pObj->iFlags = MEMOBJ_NULL; + pObj->nType = MEMOBJ_NULL; } return SXRET_OK; } @@ -1012,31 +1012,31 @@ PH7_PRIVATE sxi32 PH7_MemObjCmp(ph7_value *pObj1, ph7_value *pObj2, int bStrict, if(bStrict) { sxi32 iF1, iF2; /* Strict comparisons with === */ - iF1 = pObj1->iFlags; - iF2 = pObj2->iFlags; + iF1 = pObj1->nType; + iF2 = pObj2->nType; if(iF1 != iF2) { /* Not of the same type */ return 1; } } /* Combine flag together */ - iComb = pObj1->iFlags | pObj2->iFlags; + iComb = pObj1->nType | pObj2->nType; if(iComb & (MEMOBJ_NULL | MEMOBJ_RES | MEMOBJ_BOOL)) { /* Convert to boolean: Keep in mind FALSE < TRUE */ - if((pObj1->iFlags & MEMOBJ_BOOL) == 0) { + if((pObj1->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pObj1); } - if((pObj2->iFlags & MEMOBJ_BOOL) == 0) { + if((pObj2->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pObj2); } return (sxi32)((pObj1->x.iVal != 0) - (pObj2->x.iVal != 0)); } else if(iComb & MEMOBJ_HASHMAP) { /* Hashmap aka 'array' comparison */ - if((pObj1->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pObj1->nType & MEMOBJ_HASHMAP) == 0) { /* Array is always greater */ return -1; } - if((pObj2->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pObj2->nType & MEMOBJ_HASHMAP) == 0) { /* Array is always greater */ return 1; } @@ -1045,11 +1045,11 @@ PH7_PRIVATE sxi32 PH7_MemObjCmp(ph7_value *pObj1, ph7_value *pObj2, int bStrict, return rc; } else if(iComb & MEMOBJ_OBJ) { /* Object comparison */ - if((pObj1->iFlags & MEMOBJ_OBJ) == 0) { + if((pObj1->nType & MEMOBJ_OBJ) == 0) { /* Object is always greater */ return -1; } - if((pObj2->iFlags & MEMOBJ_OBJ) == 0) { + if((pObj2->nType & MEMOBJ_OBJ) == 0) { /* Object is always greater */ return 1; } @@ -1076,10 +1076,10 @@ PH7_PRIVATE sxi32 PH7_MemObjCmp(ph7_value *pObj1, ph7_value *pObj2, int bStrict, } } /* Perform a strict string comparison.*/ - if((pObj1->iFlags & MEMOBJ_STRING) == 0) { + if((pObj1->nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(pObj1); } - if((pObj2->iFlags & MEMOBJ_STRING) == 0) { + if((pObj2->nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(pObj2); } SyStringInitFromBuf(&s1, SyBlobData(&pObj1->sBlob), SyBlobLength(&pObj1->sBlob)); @@ -1098,20 +1098,20 @@ PH7_PRIVATE sxi32 PH7_MemObjCmp(ph7_value *pObj1, ph7_value *pObj2, int bStrict, } else if(iComb & (MEMOBJ_INT | MEMOBJ_REAL)) { Numeric: /* Perform a numeric comparison if one of the operand is numeric(integer or real) */ - if((pObj1->iFlags & (MEMOBJ_INT | MEMOBJ_REAL)) == 0) { + if((pObj1->nType & (MEMOBJ_INT | MEMOBJ_REAL)) == 0) { PH7_MemObjToNumeric(pObj1); } - if((pObj2->iFlags & (MEMOBJ_INT | MEMOBJ_REAL)) == 0) { + if((pObj2->nType & (MEMOBJ_INT | MEMOBJ_REAL)) == 0) { PH7_MemObjToNumeric(pObj2); } - if((pObj1->iFlags & pObj2->iFlags & MEMOBJ_INT) == 0) { + if((pObj1->nType & pObj2->nType & MEMOBJ_INT) == 0) { ph7_real r1, r2; /* Compare as reals */ - if((pObj1->iFlags & MEMOBJ_REAL) == 0) { + if((pObj1->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pObj1); } r1 = pObj1->x.rVal; - if((pObj2->iFlags & MEMOBJ_REAL) == 0) { + if((pObj2->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pObj2); } r2 = pObj2->x.rVal; @@ -1147,17 +1147,17 @@ Numeric: * This function take care of handling all the scenarios. */ PH7_PRIVATE sxi32 PH7_MemObjAdd(ph7_value *pObj1, ph7_value *pObj2, int bAddStore) { - if(((pObj1->iFlags | pObj2->iFlags) & MEMOBJ_HASHMAP) == 0) { + if(((pObj1->nType | pObj2->nType) & MEMOBJ_HASHMAP) == 0) { /* Arithemtic operation */ PH7_MemObjToNumeric(pObj1); PH7_MemObjToNumeric(pObj2); - if((pObj1->iFlags | pObj2->iFlags) & MEMOBJ_REAL) { + if((pObj1->nType | pObj2->nType) & MEMOBJ_REAL) { /* Floating point arithmetic */ ph7_real a, b; - if((pObj1->iFlags & MEMOBJ_REAL) == 0) { + if((pObj1->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pObj1); } - if((pObj2->iFlags & MEMOBJ_REAL) == 0) { + if((pObj2->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pObj2); } a = pObj1->x.rVal; @@ -1173,13 +1173,13 @@ PH7_PRIVATE sxi32 PH7_MemObjAdd(ph7_value *pObj1, ph7_value *pObj2, int bAddStor MemObjSetType(pObj1, MEMOBJ_INT); } } else { - if((pObj1->iFlags | pObj2->iFlags) & MEMOBJ_HASHMAP) { + if((pObj1->nType | pObj2->nType) & MEMOBJ_HASHMAP) { ph7_hashmap *pMap; sxi32 rc; if(bAddStore) { /* Do not duplicate the hashmap,use the left one since its an add&store operation. */ - if((pObj1->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pObj1->nType & MEMOBJ_HASHMAP) == 0) { /* Force a hashmap cast */ rc = PH7_MemObjToHashmap(pObj1); if(rc != SXRET_OK) { @@ -1196,27 +1196,27 @@ PH7_PRIVATE sxi32 PH7_MemObjAdd(ph7_value *pObj1, ph7_value *pObj2, int bAddStor } } if(!bAddStore) { - if(pObj1->iFlags & MEMOBJ_HASHMAP) { + if(pObj1->nType & MEMOBJ_HASHMAP) { /* Perform a hashmap duplication */ PH7_HashmapDup((ph7_hashmap *)pObj1->x.pOther, pMap); } else { - if((pObj1->iFlags & MEMOBJ_NULL) == 0) { + if((pObj1->nType & MEMOBJ_NULL) == 0) { /* Simple insertion */ PH7_HashmapInsert(pMap, 0, pObj1); } } } /* Perform the union */ - if(pObj2->iFlags & MEMOBJ_HASHMAP) { + if(pObj2->nType & MEMOBJ_HASHMAP) { PH7_HashmapUnion(pMap, (ph7_hashmap *)pObj2->x.pOther); } else { - if((pObj2->iFlags & MEMOBJ_NULL) == 0) { + if((pObj2->nType & MEMOBJ_NULL) == 0) { /* Simple insertion */ PH7_HashmapInsert(pMap, 0, pObj2); } } /* Reflect the change */ - if(pObj1->iFlags & MEMOBJ_STRING) { + if(pObj1->nType & MEMOBJ_STRING) { SyBlobRelease(&pObj1->sBlob); } pObj1->x.pOther = pMap; @@ -1231,48 +1231,48 @@ PH7_PRIVATE sxi32 PH7_MemObjAdd(ph7_value *pObj1, ph7_value *pObj2, int bAddStor */ PH7_PRIVATE const char *PH7_MemObjTypeDump(ph7_value *pVal) { const char *zType = ""; - if(pVal->iFlags & MEMOBJ_NULL) { + if(pVal->nType & MEMOBJ_NULL) { zType = "NULL"; } else { - if(pVal->iFlags & MEMOBJ_HASHMAP) { - if(pVal->iFlags & MEMOBJ_MIXED) { + if(pVal->nType & MEMOBJ_HASHMAP) { + if(pVal->nType & MEMOBJ_MIXED) { zType = "array(mixed, "; - } else if(pVal->iFlags & MEMOBJ_OBJ) { + } else if(pVal->nType & MEMOBJ_OBJ) { zType = "array(object, "; - } else if(pVal->iFlags & MEMOBJ_INT) { + } else if(pVal->nType & MEMOBJ_INT) { zType = "array(int, "; - } else if(pVal->iFlags & MEMOBJ_REAL) { + } else if(pVal->nType & MEMOBJ_REAL) { zType = "array(float, "; - } else if(pVal->iFlags & MEMOBJ_STRING) { + } else if(pVal->nType & MEMOBJ_STRING) { zType = "array(string, "; - } else if(pVal->iFlags & MEMOBJ_BOOL) { + } else if(pVal->nType & MEMOBJ_BOOL) { zType = "array(bool, "; - } else if(pVal->iFlags & MEMOBJ_CHAR) { + } else if(pVal->nType & MEMOBJ_CHAR) { zType = "array(char, "; - } else if(pVal->iFlags & MEMOBJ_RES) { + } else if(pVal->nType & MEMOBJ_RES) { zType = "array(resource, "; - } else if(pVal->iFlags & MEMOBJ_CALL) { + } else if(pVal->nType & MEMOBJ_CALL) { zType = "array(callback, "; - } else if(pVal->iFlags & MEMOBJ_VOID) { + } else if(pVal->nType & MEMOBJ_VOID) { zType = "array(void, "; } - } else if(pVal->iFlags & MEMOBJ_OBJ) { + } else if(pVal->nType & MEMOBJ_OBJ) { zType = "object"; - } else if(pVal->iFlags & MEMOBJ_INT) { + } else if(pVal->nType & MEMOBJ_INT) { zType = "int"; - } else if(pVal->iFlags & MEMOBJ_REAL) { + } else if(pVal->nType & MEMOBJ_REAL) { zType = "float"; - } else if(pVal->iFlags & MEMOBJ_STRING) { + } else if(pVal->nType & MEMOBJ_STRING) { zType = "string"; - } else if(pVal->iFlags & MEMOBJ_BOOL) { + } else if(pVal->nType & MEMOBJ_BOOL) { zType = "bool"; - } else if(pVal->iFlags & MEMOBJ_CHAR) { + } else if(pVal->nType & MEMOBJ_CHAR) { zType = "char"; - } else if(pVal->iFlags & MEMOBJ_RES) { + } else if(pVal->nType & MEMOBJ_RES) { zType = "resource"; - } else if(pVal->iFlags & MEMOBJ_CALL) { + } else if(pVal->nType & MEMOBJ_CALL) { zType = "callback"; - } else if(pVal->iFlags & MEMOBJ_VOID) { + } else if(pVal->nType & MEMOBJ_VOID) { zType = "void"; } } @@ -1300,22 +1300,22 @@ PH7_PRIVATE sxi32 PH7_MemObjDump( zType = PH7_MemObjTypeDump(pObj); SyBlobAppend(&(*pOut), zType, SyStrlen(zType)); } - if((pObj->iFlags & MEMOBJ_NULL) == 0) { - if(ShowType && (pObj->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pObj->nType & MEMOBJ_NULL) == 0) { + if(ShowType && (pObj->nType & MEMOBJ_HASHMAP) == 0) { SyBlobAppend(&(*pOut), "(", sizeof(char)); } - if(pObj->iFlags & MEMOBJ_HASHMAP) { + if(pObj->nType & MEMOBJ_HASHMAP) { /* Dump hashmap entries */ rc = PH7_HashmapDump(&(*pOut), (ph7_hashmap *)pObj->x.pOther, ShowType, nTab + 1, nDepth + 1); - } else if(pObj->iFlags & MEMOBJ_OBJ) { + } else if(pObj->nType & MEMOBJ_OBJ) { /* Dump class instance attributes */ rc = PH7_ClassInstanceDump(&(*pOut), (ph7_class_instance *)pObj->x.pOther, ShowType, nTab + 1, nDepth + 1); - } else if(pObj->iFlags & MEMOBJ_VOID) { + } else if(pObj->nType & MEMOBJ_VOID) { SyBlobAppend(&(*pOut), "NULL", sizeof("NULL") - 1); } else { SyBlob *pContents = &pObj->sBlob; /* Get a printable representation of the contents */ - if((pObj->iFlags & (MEMOBJ_STRING | MEMOBJ_CALL)) == 0) { + if((pObj->nType & (MEMOBJ_STRING | MEMOBJ_CALL)) == 0) { MemObjStringValue(&(*pOut), &(*pObj), FALSE); } else { /* Append length first */ @@ -1331,7 +1331,7 @@ PH7_PRIVATE sxi32 PH7_MemObjDump( } } if(ShowType) { - if((pObj->iFlags & (MEMOBJ_HASHMAP | MEMOBJ_OBJ)) == 0) { + if((pObj->nType & (MEMOBJ_HASHMAP | MEMOBJ_OBJ)) == 0) { SyBlobAppend(&(*pOut), ")", sizeof(char)); } } diff --git a/engine/vm.c b/engine/vm.c index 471ca9d..ad225ed 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -528,41 +528,41 @@ static ph7_vm_func *VmOverload( SyBlobInit(&sSig, &pVm->sAllocator); for(j = 0 ; j < nArg ; j++) { int c = 'n'; /* null */ - if(aArg[j].iFlags & MEMOBJ_BOOL) { + if(aArg[j].nType & MEMOBJ_BOOL) { /* Bool */ c = 'b'; - } else if(aArg[j].iFlags & MEMOBJ_CALL) { + } else if(aArg[j].nType & MEMOBJ_CALL) { /* Callback */ c = 'a'; - } else if(aArg[j].iFlags & MEMOBJ_CHAR) { + } else if(aArg[j].nType & MEMOBJ_CHAR) { /* Char */ c = 'c'; - } else if(aArg[j].iFlags & MEMOBJ_INT) { + } else if(aArg[j].nType & MEMOBJ_INT) { /* Integer */ c = 'i'; - } else if(aArg[j].iFlags & MEMOBJ_MIXED) { + } else if(aArg[j].nType & MEMOBJ_MIXED) { /* Mixed */ c = 'm'; - } else if(aArg[j].iFlags & MEMOBJ_OBJ) { + } else if(aArg[j].nType & MEMOBJ_OBJ) { /* Class instance */ ph7_class *pClass = ((ph7_class_instance *)aArg[j].x.pOther)->pClass; SyString *pName = &pClass->sName; SyBlobAppend(&sSig, (const void *)pName->zString, pName->nByte); c = -1; - } else if(aArg[j].iFlags & MEMOBJ_REAL) { + } else if(aArg[j].nType & MEMOBJ_REAL) { /* Float */ c = 'f'; - } else if(aArg[j].iFlags & MEMOBJ_RES) { + } else if(aArg[j].nType & MEMOBJ_RES) { /* Resource */ c = 'r'; - } else if(aArg[j].iFlags & MEMOBJ_STRING) { + } else if(aArg[j].nType & MEMOBJ_STRING) { /* String */ c = 's'; - } else if(aArg[j].iFlags & MEMOBJ_VOID) { + } else if(aArg[j].nType & MEMOBJ_VOID) { /* Void */ c = 'v'; } - if(aArg[j].iFlags & MEMOBJ_HASHMAP && (aArg[j].iFlags & MEMOBJ_OBJ) == 0) { + if(aArg[j].nType & MEMOBJ_HASHMAP && (aArg[j].nType & MEMOBJ_OBJ) == 0) { c = SyToUpper(c); } if(c > 0) { @@ -619,7 +619,7 @@ static sxi32 VmMountUserClass( if(rc != SXRET_OK) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); } - } else if(pMemObj->iFlags & MEMOBJ_HASHMAP) { + } else if(pMemObj->nType & MEMOBJ_HASHMAP) { ph7_hashmap *pMap; pMap = PH7_NewHashmap(&(*pVm), 0, 0); if(pMap == 0) { @@ -694,7 +694,7 @@ PH7_PRIVATE sxi32 PH7_VmCreateClassInstanceFrame( if(rc != SXRET_OK) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); } - } else if(pMemObj->iFlags & MEMOBJ_HASHMAP) { + } else if(pMemObj->nType & MEMOBJ_HASHMAP) { ph7_hashmap *pMap; pMap = PH7_NewHashmap(&(*pVm), 0, 0); if(pMap == 0) { @@ -1645,7 +1645,7 @@ PH7_PRIVATE sxi32 PH7_VmConfigure( /* Extract the $_SERVER superglobal */ pValue = VmExtractSuper(&(*pVm), "_SERVER", sizeof("_SERVER") - 1); } - if(pValue == 0 || (pValue->iFlags & MEMOBJ_HASHMAP) == 0) { + if(pValue == 0 || (pValue->nType & MEMOBJ_HASHMAP) == 0) { /* No such entry */ rc = SXERR_NOTFOUND; break; @@ -2038,11 +2038,11 @@ static sxi32 VmByteCodeExec( if((pFunc->nType & MEMOBJ_MIXED) == 0) { if(pFunc->nType & MEMOBJ_VOID) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Return with a value in closure/method returning void"); - } else if(pFunc->nType != pResult->iFlags) { + } else if(pFunc->nType != pResult->nType) { if(PH7_CheckVarCompat(pResult, pFunc->nType) == SXRET_OK) { ProcMemObjCast xCast = PH7_MemObjCastMethod(pFunc->nType); xCast(pResult); - } else if((pFunc->iFlags & MEMOBJ_HASHMAP) && (pResult->iFlags & MEMOBJ_HASHMAP)) { + } else if((pFunc->iFlags & MEMOBJ_HASHMAP) && (pResult->nType & MEMOBJ_HASHMAP)) { if(PH7_HashmapCast(pResult, pFunc->iFlags ^ MEMOBJ_HASHMAP) != SXRET_OK) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Incompatible type when returning data by closure/method"); } @@ -2076,14 +2076,14 @@ static sxi32 VmByteCodeExec( if(pLastRef) { *pLastRef = pTos->nIdx; } - if(pTos->iFlags & MEMOBJ_STRING) { + if(pTos->nType & MEMOBJ_STRING) { if(SyBlobLength(&pTos->sBlob) > 0) { /* Output the exit message */ pVm->sVmConsumer.xConsumer(SyBlobData(&pTos->sBlob), SyBlobLength(&pTos->sBlob), pVm->sVmConsumer.pUserData); } pVm->iExitStatus = 0; - } else if(pTos->iFlags & MEMOBJ_INT) { + } else if(pTos->nType & MEMOBJ_INT) { /* Record exit status */ pVm->iExitStatus = (sxi32)pTos->x.iVal; } @@ -2115,7 +2115,7 @@ static sxi32 VmByteCodeExec( } #endif /* Get a boolean value */ - if((pTos->iFlags & MEMOBJ_BOOL) == 0) { + if((pTos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pTos); } if(!pTos->x.iVal) { @@ -2139,7 +2139,7 @@ static sxi32 VmByteCodeExec( } #endif /* Get a boolean value */ - if((pTos->iFlags & MEMOBJ_BOOL) == 0) { + if((pTos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pTos); } if(pTos->x.iVal) { @@ -2209,7 +2209,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } /* Invalidate any prior representation */ @@ -2226,7 +2226,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & MEMOBJ_REAL) == 0) { + if((pTos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pTos); } /* Invalidate any prior representation */ @@ -2243,7 +2243,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & MEMOBJ_STRING) == 0) { + if((pTos->nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(pTos); } break; @@ -2258,7 +2258,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & MEMOBJ_BOOL) == 0) { + if((pTos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pTos); } break; @@ -2273,7 +2273,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & MEMOBJ_CHAR) == 0) { + if((pTos->nType & MEMOBJ_CHAR) == 0) { PH7_MemObjToChar(pTos); } /* Invalidate any prior representation */ @@ -2290,7 +2290,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & MEMOBJ_OBJ) == 0) { + if((pTos->nType & MEMOBJ_OBJ) == 0) { /* Force a 'stdClass()' cast */ PH7_MemObjToObject(pTos); } @@ -2350,14 +2350,14 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if(pNos->iFlags & MEMOBJ_OBJ) { + if(pNos->nType & MEMOBJ_OBJ) { ph7_class_instance *pThis = (ph7_class_instance *)pNos->x.pOther; ph7_class *pClass = 0; /* Extract the target class */ - if(pTos->iFlags & MEMOBJ_OBJ) { + if(pTos->nType & MEMOBJ_OBJ) { /* Instance already loaded */ pClass = ((ph7_class_instance *)pTos->x.pOther)->pClass; - } else if(pTos->iFlags & MEMOBJ_STRING && SyBlobLength(&pTos->sBlob) > 0) { + } else if(pTos->nType & MEMOBJ_STRING && SyBlobLength(&pTos->sBlob) > 0) { /* Perform the query */ pClass = PH7_VmExtractClass(&(*pVm), (const char *)SyBlobData(&pTos->sBlob), SyBlobLength(&pTos->sBlob), FALSE, 0); @@ -2403,7 +2403,7 @@ static sxi32 VmByteCodeExec( "Redeclaration of ā€˜$%zā€™ variable", &sName); } if(pInstr->iP2 & MEMOBJ_MIXED && (pInstr->iP2 & MEMOBJ_HASHMAP) == 0) { - pObj->iFlags = MEMOBJ_MIXED | MEMOBJ_VOID; + pObj->nType = MEMOBJ_MIXED | MEMOBJ_VOID; } else { if(pInstr->iP2 & MEMOBJ_HASHMAP) { ph7_hashmap *pMap; @@ -2493,7 +2493,7 @@ static sxi32 VmByteCodeExec( } #endif /* Force a string cast */ - if((pTos->iFlags & MEMOBJ_STRING) == 0) { + if((pTos->nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(pTos); } SyStringInitFromBuf(&sName, SyBlobData(&pTos->sBlob), SyBlobLength(&pTos->sBlob)); @@ -2521,7 +2521,7 @@ static sxi32 VmByteCodeExec( * stack and insert them (key => value pair) in the new hashmap. */ case PH7_OP_LOAD_MAP: { - sxi32 iFlags, pFlags; + sxi32 nType, pType; ph7_hashmap *pMap; /* Allocate a new hashmap instance */ pMap = PH7_NewHashmap(&(*pVm), 0, 0); @@ -2530,19 +2530,19 @@ static sxi32 VmByteCodeExec( } if(pInstr->iP1 > 0) { ph7_value *pEntry = &pTos[-pInstr->iP1 + 1]; /* Point to the first entry */ - iFlags = pEntry[1].iFlags; /* Save the type of value */ + nType = pEntry[1].nType; /* Save the type of value */ /* Perform the insertion */ while(pEntry < pTos) { /* Standard insertion */ PH7_HashmapInsert(pMap, - (pEntry->iFlags & MEMOBJ_NULL) ? 0 /* Automatic index assign */ : pEntry, + (pEntry->nType & MEMOBJ_NULL) ? 0 /* Automatic index assign */ : pEntry, &pEntry[1] ); /* Set the proper type of array */ - if((iFlags & MEMOBJ_MIXED) == 0) { - pFlags = pEntry[1].iFlags; - if(iFlags != pFlags && iFlags != (pFlags ^ MEMOBJ_HASHMAP)) { - iFlags = MEMOBJ_MIXED; + if((nType & MEMOBJ_MIXED) == 0) { + pType = pEntry[1].nType; + if(nType != pType && nType != (pType ^ MEMOBJ_HASHMAP)) { + nType = MEMOBJ_MIXED; } } /* Next pair on the stack */ @@ -2555,7 +2555,7 @@ static sxi32 VmByteCodeExec( pTos++; pTos->nIdx = SXU32_HIGH; pTos->x.pOther = pMap; - MemObjSetType(pTos, MEMOBJ_HASHMAP | iFlags); + MemObjSetType(pTos, MEMOBJ_HASHMAP | nType); break; } /* @@ -2580,11 +2580,11 @@ static sxi32 VmByteCodeExec( pIdx = pTos; pTos--; } - if(pTos->iFlags & MEMOBJ_STRING && (pTos->iFlags & MEMOBJ_HASHMAP) == 0) { + if(pTos->nType & MEMOBJ_STRING && (pTos->nType & MEMOBJ_HASHMAP) == 0) { /* String access */ if(pIdx) { sxu32 nOfft; - if((pIdx->iFlags & MEMOBJ_INT) == 0) { + if((pIdx->nType & MEMOBJ_INT) == 0) { /* Force an int cast */ PH7_MemObjToInteger(pIdx); } @@ -2605,11 +2605,11 @@ static sxi32 VmByteCodeExec( } break; } - if((pTos->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pTos->nType & MEMOBJ_HASHMAP) == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Subscripted value is neither array nor string"); } rc = SXERR_NOTFOUND; /* Assume the index is invalid */ - if(pTos->iFlags & MEMOBJ_HASHMAP) { + if(pTos->nType & MEMOBJ_HASHMAP) { /* Point to the hashmap */ pMap = (ph7_hashmap *)pTos->x.pOther; if(pIdx) { @@ -2746,7 +2746,7 @@ static sxi32 VmByteCodeExec( break; } else if(pInstr->p3 == 0) { /* Take the variable name from the next on the stack */ - if((pTos->iFlags & MEMOBJ_STRING) == 0) { + if((pTos->nType & MEMOBJ_STRING) == 0) { /* Force a string cast */ PH7_MemObjToString(pTos); } @@ -2796,7 +2796,7 @@ static sxi32 VmByteCodeExec( pKey = 0; } nIdx = pTos->nIdx; - if(pTos->iFlags & MEMOBJ_HASHMAP) { + if(pTos->nType & MEMOBJ_HASHMAP) { /* Hashmap already loaded */ pMap = (ph7_hashmap *)pTos->x.pOther; if(pMap->iRef < 2) { @@ -2814,9 +2814,9 @@ static sxi32 VmByteCodeExec( break; } /* Phase#1: Load the array */ - if(pObj->iFlags & MEMOBJ_STRING) { + if(pObj->nType & MEMOBJ_STRING) { VmPopOperand(&pTos, 1); - if((pTos->iFlags & MEMOBJ_STRING) == 0) { + if((pTos->nType & MEMOBJ_STRING) == 0) { /* Force a string cast */ PH7_MemObjToString(pTos); } @@ -2827,7 +2827,7 @@ static sxi32 VmByteCodeExec( } } else { sxu32 nOfft; - if((pKey->iFlags & MEMOBJ_INT)) { + if((pKey->nType & MEMOBJ_INT)) { /* Force an int cast */ PH7_MemObjToInteger(pKey); } @@ -2847,7 +2847,7 @@ static sxi32 VmByteCodeExec( PH7_MemObjRelease(pKey); } break; - } else if((pObj->iFlags & MEMOBJ_HASHMAP) == 0) { + } else if((pObj->nType & MEMOBJ_HASHMAP) == 0) { /* Force a hashmap cast */ rc = PH7_MemObjToHashmap(pObj); if(rc != SXRET_OK) { @@ -2856,12 +2856,12 @@ static sxi32 VmByteCodeExec( } pMap = (ph7_hashmap *)pObj->x.pOther; } - sxu32 pArrType = pTos->iFlags ^ MEMOBJ_HASHMAP; + sxu32 pArrType = pTos->nType ^ MEMOBJ_HASHMAP; VmPopOperand(&pTos, 1); /* Phase#2: Perform the type validation */ - if((pArrType & MEMOBJ_MIXED) == 0 && (pTos->iFlags & pArrType) == 0) { + if((pArrType & MEMOBJ_MIXED) == 0 && (pTos->nType & pArrType) == 0) { sxu32 rc = SXRET_OK; - if(pTos->iFlags & MEMOBJ_HASHMAP) { + if(pTos->nType & MEMOBJ_HASHMAP) { rc = PH7_HashmapCast(pTos, pArrType); } else { if((rc = PH7_CheckVarCompat(pTos, pArrType)) == SXRET_OK) { @@ -2894,13 +2894,13 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & (MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { + if((pTos->nType & (MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) { if(pTos->nIdx != SXU32_HIGH) { ph7_value *pObj; if((pObj = (ph7_value *)SySetAt(&pVm->aMemObj, pTos->nIdx)) != 0) { /* Force a numeric cast */ PH7_MemObjToNumeric(pObj); - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj->nType & MEMOBJ_REAL) { pObj->x.rVal++; } else { pObj->x.iVal++; @@ -2916,7 +2916,7 @@ static sxi32 VmByteCodeExec( /* Force a numeric cast */ PH7_MemObjToNumeric(pTos); /* Pre-increment */ - if(pTos->iFlags & MEMOBJ_REAL) { + if(pTos->nType & MEMOBJ_REAL) { pTos->x.rVal++; } else { pTos->x.iVal++; @@ -2939,7 +2939,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if((pTos->iFlags & (MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES | MEMOBJ_NULL)) == 0) { + if((pTos->nType & (MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES | MEMOBJ_NULL)) == 0) { /* Force a numeric cast */ PH7_MemObjToNumeric(pTos); if(pTos->nIdx != SXU32_HIGH) { @@ -2947,7 +2947,7 @@ static sxi32 VmByteCodeExec( if((pObj = (ph7_value *)SySetAt(&pVm->aMemObj, pTos->nIdx)) != 0) { /* Force a numeric cast */ PH7_MemObjToNumeric(pObj); - if(pObj->iFlags & MEMOBJ_REAL) { + if(pObj->nType & MEMOBJ_REAL) { pObj->x.rVal--; } else { pObj->x.iVal--; @@ -2961,7 +2961,7 @@ static sxi32 VmByteCodeExec( } else { if(pInstr->iP1) { /* Pre-decrement */ - if(pTos->iFlags & MEMOBJ_REAL) { + if(pTos->nType & MEMOBJ_REAL) { pTos->x.rVal--; } else { pTos->x.iVal--; @@ -2984,10 +2984,10 @@ static sxi32 VmByteCodeExec( #endif /* Force a numeric (integer,real or both) cast */ PH7_MemObjToNumeric(pTos); - if(pTos->iFlags & MEMOBJ_REAL) { + if(pTos->nType & MEMOBJ_REAL) { pTos->x.rVal = -pTos->x.rVal; } - if(pTos->iFlags & MEMOBJ_INT) { + if(pTos->nType & MEMOBJ_INT) { pTos->x.iVal = -pTos->x.iVal; } break; @@ -3004,10 +3004,10 @@ static sxi32 VmByteCodeExec( #endif /* Force a numeric (integer,real or both) cast */ PH7_MemObjToNumeric(pTos); - if(pTos->iFlags & MEMOBJ_REAL) { + if(pTos->nType & MEMOBJ_REAL) { pTos->x.rVal = +pTos->x.rVal; } - if(pTos->iFlags & MEMOBJ_INT) { + if(pTos->nType & MEMOBJ_INT) { pTos->x.iVal = +pTos->x.iVal; } break; @@ -3024,7 +3024,7 @@ static sxi32 VmByteCodeExec( } #endif /* Force a boolean cast */ - if((pTos->iFlags & MEMOBJ_BOOL) == 0) { + if((pTos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pTos); } pTos->x.iVal = !pTos->x.iVal; @@ -3042,7 +3042,7 @@ static sxi32 VmByteCodeExec( } #endif /* Force an integer cast */ - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } pTos->x.iVal = ~pTos->x.iVal; @@ -3065,13 +3065,13 @@ static sxi32 VmByteCodeExec( PH7_MemObjToNumeric(pTos); PH7_MemObjToNumeric(pNos); /* Perform the requested operation */ - if(MEMOBJ_REAL & (pTos->iFlags | pNos->iFlags)) { + if(MEMOBJ_REAL & (pTos->nType | pNos->nType)) { /* Floating point arithemic */ ph7_real a, b, r; - if((pTos->iFlags & MEMOBJ_REAL) == 0) { + if((pTos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pTos); } - if((pNos->iFlags & MEMOBJ_REAL) == 0) { + if((pNos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pNos); } a = pNos->x.rVal; @@ -3118,15 +3118,15 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if(pInstr->iP2 || pNos->iFlags & MEMOBJ_STRING || pTos->iFlags & MEMOBJ_STRING) { + if(pInstr->iP2 || pNos->nType & MEMOBJ_STRING || pTos->nType & MEMOBJ_STRING) { /* Perform the string addition */ ph7_value *pCur; - if((pNos->iFlags & MEMOBJ_STRING) == 0) { + if((pNos->nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(pNos); } pCur = &pNos[1]; while(pCur <= pTos) { - if((pCur->iFlags & MEMOBJ_STRING) == 0) { + if((pCur->nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(pCur); } if(SyBlobLength(&pCur->sBlob) > 0) { @@ -3157,9 +3157,9 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if(pTos->iFlags & MEMOBJ_STRING) { + if(pTos->nType & MEMOBJ_STRING) { /* Perform the string addition */ - if((pNos->iFlags & MEMOBJ_STRING) == 0) { + if((pNos->nType & MEMOBJ_STRING) == 0) { /* Force a string cast */ PH7_MemObjToString(pNos); } @@ -3195,13 +3195,13 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if(MEMOBJ_REAL & (pTos->iFlags | pNos->iFlags)) { + if(MEMOBJ_REAL & (pTos->nType | pNos->nType)) { /* Floating point arithemic */ ph7_real a, b, r; - if((pTos->iFlags & MEMOBJ_REAL) == 0) { + if((pTos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pTos); } - if((pNos->iFlags & MEMOBJ_REAL) == 0) { + if((pNos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pNos); } a = pNos->x.rVal; @@ -3237,13 +3237,13 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if(MEMOBJ_REAL & (pTos->iFlags | pNos->iFlags)) { + if(MEMOBJ_REAL & (pTos->nType | pNos->nType)) { /* Floating point arithemic */ ph7_real a, b, r; - if((pTos->iFlags & MEMOBJ_REAL) == 0) { + if((pTos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pTos); } - if((pNos->iFlags & MEMOBJ_REAL) == 0) { + if((pNos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pNos); } a = pTos->x.rVal; @@ -3288,10 +3288,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be integer */ - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } - if((pNos->iFlags & MEMOBJ_INT) == 0) { + if((pNos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pNos); } /* Perform the requested operation */ @@ -3327,10 +3327,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be integer */ - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } - if((pNos->iFlags & MEMOBJ_INT) == 0) { + if((pNos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pNos); } /* Perform the requested operation */ @@ -3369,10 +3369,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be real */ - if((pTos->iFlags & MEMOBJ_REAL) == 0) { + if((pTos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pTos); } - if((pNos->iFlags & MEMOBJ_REAL) == 0) { + if((pNos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pNos); } /* Perform the requested operation */ @@ -3407,10 +3407,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be real */ - if((pTos->iFlags & MEMOBJ_REAL) == 0) { + if((pTos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pTos); } - if((pNos->iFlags & MEMOBJ_REAL) == 0) { + if((pNos->nType & MEMOBJ_REAL) == 0) { PH7_MemObjToReal(pNos); } /* Perform the requested operation */ @@ -3462,10 +3462,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be integer */ - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } - if((pNos->iFlags & MEMOBJ_INT) == 0) { + if((pNos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pNos); } /* Perform the requested operation */ @@ -3522,10 +3522,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be integer */ - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } - if((pNos->iFlags & MEMOBJ_INT) == 0) { + if((pNos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pNos); } /* Perform the requested operation */ @@ -3582,10 +3582,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be integer */ - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } - if((pNos->iFlags & MEMOBJ_INT) == 0) { + if((pNos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pNos); } /* Perform the requested operation */ @@ -3628,10 +3628,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force the operands to be integer */ - if((pTos->iFlags & MEMOBJ_INT) == 0) { + if((pTos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pTos); } - if((pNos->iFlags & MEMOBJ_INT) == 0) { + if((pNos->nType & MEMOBJ_INT) == 0) { PH7_MemObjToInteger(pNos); } /* Perform the requested operation */ @@ -3675,10 +3675,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force a boolean cast */ - if((pTos->iFlags & MEMOBJ_BOOL) == 0) { + if((pTos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pTos); } - if((pNos->iFlags & MEMOBJ_BOOL) == 0) { + if((pNos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pNos); } v1 = pNos->x.iVal == 0 ? 1 : 0; @@ -3716,10 +3716,10 @@ static sxi32 VmByteCodeExec( } #endif /* Force a boolean cast */ - if((pTos->iFlags & MEMOBJ_BOOL) == 0) { + if((pTos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pTos); } - if((pNos->iFlags & MEMOBJ_BOOL) == 0) { + if((pNos->nType & MEMOBJ_BOOL) == 0) { PH7_MemObjToBool(pNos); } if((pNos->x.iVal && !pTos->x.iVal) || (pTos->x.iVal && !pNos->x.iVal)) { @@ -3935,7 +3935,7 @@ static sxi32 VmByteCodeExec( } /* Tell the upper layer that an exception was thrown */ pFrame->iFlags |= VM_FRAME_THROW; - if(pTos->iFlags & MEMOBJ_OBJ) { + if(pTos->nType & MEMOBJ_OBJ) { ph7_class_instance *pThis = (ph7_class_instance *)pTos->x.pOther; ph7_class *pException; /* Make sure the loaded object is an instance of the 'Exception' base class. @@ -4064,9 +4064,9 @@ static sxi32 VmByteCodeExec( } #endif /* Make sure we are dealing with an array or an object */ - if((pTos->iFlags & MEMOBJ_HASHMAP) == 0 || SyStringLength(&pInfo->sValue) < 1) { + if((pTos->nType & MEMOBJ_HASHMAP) == 0 || SyStringLength(&pInfo->sValue) < 1) { /* Jump out of the loop */ - if((pTos->iFlags & MEMOBJ_NULL) == 0) { + if((pTos->nType & MEMOBJ_NULL) == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_WARNING, "Invalid argument supplied for the foreach statement, expecting an array"); } pc = pInstr->iP2 - 1; @@ -4145,7 +4145,7 @@ static sxi32 VmByteCodeExec( goto Abort; } #endif - if(pNos->iFlags & MEMOBJ_OBJ) { + if(pNos->nType & MEMOBJ_OBJ) { if(!pNos->x.pOther) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Call to non-instantiated object '$%z'", &sName); } @@ -4257,9 +4257,9 @@ static sxi32 VmByteCodeExec( /* Attribute name already computed */ SyStringInitFromBuf(&sName, pInstr->p3, SyStrlen((const char *)pInstr->p3)); } - if(pNos->iFlags & (MEMOBJ_STRING | MEMOBJ_OBJ)) { + if(pNos->nType & (MEMOBJ_STRING | MEMOBJ_OBJ)) { ph7_class *pClass = 0; - if(pNos->iFlags & MEMOBJ_OBJ) { + if(pNos->nType & MEMOBJ_OBJ) { /* Class already instantiated */ pThis = (ph7_class_instance *)pNos->x.pOther; pClass = pThis->pClass; @@ -4370,11 +4370,11 @@ static sxi32 VmByteCodeExec( ph7_value *pArg = &pTos[-pInstr->iP1]; /* Constructor arguments (if available) */ ph7_class *pClass = 0; ph7_class_instance *pNew; - if((pTos->iFlags & MEMOBJ_STRING) && SyBlobLength(&pTos->sBlob) > 0) { + if((pTos->nType & MEMOBJ_STRING) && SyBlobLength(&pTos->sBlob) > 0) { /* Try to extract the desired class */ pClass = PH7_VmExtractClass(&(*pVm), (const char *)SyBlobData(&pTos->sBlob), SyBlobLength(&pTos->sBlob), TRUE /* Only loadable class but not 'interface' or 'virtual' class*/, 0); - } else if(pTos->iFlags & MEMOBJ_OBJ) { + } else if(pTos->nType & MEMOBJ_OBJ) { /* Take the base class from the loaded instance */ pClass = ((ph7_class_instance *)pTos->x.pOther)->pClass; } @@ -4427,7 +4427,7 @@ static sxi32 VmByteCodeExec( } #endif /* Make sure we are dealing with a class instance */ - if((pTos->iFlags & MEMOBJ_OBJ) == 0 || pTos->x.pOther == 0) { + if((pTos->nType & MEMOBJ_OBJ) == 0 || pTos->x.pOther == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Clone: Expecting a class instance as left operand"); } @@ -4503,10 +4503,10 @@ static sxi32 VmByteCodeExec( SyString sName; VmInstr *bInstr = &aInstr[pc - 1]; /* Extract function name */ - if(pTos->iFlags & MEMOBJ_STRING && bInstr->iOp == PH7_OP_LOADV) { + if(pTos->nType & MEMOBJ_STRING && bInstr->iOp == PH7_OP_LOADV) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Calling a non-callable object"); - } else if((pTos->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { - if(pTos->iFlags & MEMOBJ_HASHMAP) { + } else if((pTos->nType & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { + if(pTos->nType & MEMOBJ_HASHMAP) { ph7_value sResult; SySetReset(&aArg); while(pArg < pTos) { @@ -4525,7 +4525,7 @@ static sxi32 VmByteCodeExec( PH7_MemObjStore(&sResult, pTos); PH7_MemObjRelease(&sResult); } else { - if(pTos->iFlags & MEMOBJ_OBJ) { + if(pTos->nType & MEMOBJ_OBJ) { ph7_class_instance *pThis = (ph7_class_instance *)pTos->x.pOther; /* Call the magic method '__invoke' if available */ PH7_ClassInstanceCallMagicMethod(&(*pVm), pThis->pClass, pThis, "__invoke", sizeof("__invoke") - 1, 0); @@ -4565,9 +4565,9 @@ static sxi32 VmByteCodeExec( ph7_class_method *pMeth; /* Class method call */ ph7_value *pTarget = &pTos[-1]; - if(pTarget >= pStack && (pTarget->iFlags & (MEMOBJ_STRING | MEMOBJ_OBJ | MEMOBJ_NULL))) { + if(pTarget >= pStack && (pTarget->nType & (MEMOBJ_STRING | MEMOBJ_OBJ | MEMOBJ_NULL))) { /* Extract the 'this' pointer */ - if(pTarget->iFlags & MEMOBJ_OBJ) { + if(pTarget->nType & MEMOBJ_OBJ) { /* Instance already loaded */ pThis = (ph7_class_instance *)pTarget->x.pOther; pThis->iRef += 2; @@ -4584,7 +4584,7 @@ static sxi32 VmByteCodeExec( pSelf = pThis->pClass; } if(pSelf == 0) { - if((pTarget->iFlags & MEMOBJ_STRING) && SyBlobLength(&pTarget->sBlob) > 0) { + if((pTarget->nType & MEMOBJ_STRING) && SyBlobLength(&pTarget->sBlob) > 0) { /* "Late Static Binding" class name */ pSelf = PH7_VmExtractClass(&(*pVm), (const char *)SyBlobData(&pTarget->sBlob), SyBlobLength(&pTarget->sBlob), FALSE, 0); @@ -4684,7 +4684,7 @@ static sxi32 VmByteCodeExec( if(rc != SXRET_OK) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '$%z'", &pStatic->sName); } - } else if(pObj->iFlags & MEMOBJ_HASHMAP) { + } else if(pObj->nType & MEMOBJ_HASHMAP) { ph7_hashmap *pMap; pMap = PH7_NewHashmap(&(*pVm), 0, 0); if(pMap == 0) { @@ -4703,7 +4703,7 @@ static sxi32 VmByteCodeExec( n = 0; while(pArg < pTos) { if(n < SySetUsed(&pVmFunc->aArgs)) { - if((pArg->iFlags & MEMOBJ_NULL) && SySetUsed(&aFormalArg[n].aByteCode) > 0) { + if((pArg->nType & MEMOBJ_NULL) && SySetUsed(&aFormalArg[n].aByteCode) > 0) { /* NULL values are redirected to default arguments */ rc = VmLocalExec(&(*pVm), &aFormalArg[n].aByteCode, pArg); if(rc == PH7_ABORT) { @@ -4719,8 +4719,8 @@ static sxi32 VmByteCodeExec( /* Try to extract the desired class */ pClass = PH7_VmExtractClass(&(*pVm), pName->zString, pName->nByte, TRUE, 0); if(pClass) { - if((pArg->iFlags & MEMOBJ_OBJ) == 0) { - if((pArg->iFlags & MEMOBJ_NULL) == 0) { + if((pArg->nType & MEMOBJ_OBJ) == 0) { + if((pArg->nType & MEMOBJ_NULL) == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Argument %u passed to function '%z()' must be an object of type '%z'", n+1, &pVmFunc->sName, pName); @@ -4737,13 +4737,13 @@ static sxi32 VmByteCodeExec( } } else { ph7_value *pTmp = PH7_ReserveMemObj(&(*pVm)); - pTmp->iFlags = aFormalArg[n].nType; + pTmp->nType = aFormalArg[n].nType; rc = PH7_MemObjSafeStore(pArg, pTmp); if(rc != SXRET_OK) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Argument %u of '%z()' does not match the data type", n + 1, &pVmFunc->sName); } - pArg->iFlags = pTmp->iFlags; + pArg->nType = pTmp->nType; PH7_MemObjRelease(pTmp); } } @@ -4751,7 +4751,7 @@ static sxi32 VmByteCodeExec( /* Pass by reference */ if(pArg->nIdx == SXU32_HIGH) { /* Expecting a variable, not a constant, raise an exception */ - if((pArg->iFlags & (MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES | MEMOBJ_NULL)) == 0) { + if((pArg->nType & (MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES | MEMOBJ_NULL)) == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Function '%z', %d argument: Pass by reference, expecting a variable not a " "constant", &pVmFunc->sName, n + 1); @@ -4803,7 +4803,7 @@ static sxi32 VmByteCodeExec( aEnv = (ph7_vm_func_closure_env *)SySetBasePtr(&pVmFunc->aClosureEnv); for(n = 0 ; n < SySetUsed(&pVmFunc->aClosureEnv) ; ++n) { pEnv = &aEnv[n]; - if((pEnv->iFlags & VM_FUNC_ARG_IGNORE) && (pEnv->sValue.iFlags & MEMOBJ_NULL)) { + if((pEnv->iFlags & VM_FUNC_ARG_IGNORE) && (pEnv->sValue.nType & MEMOBJ_NULL)) { /* Do not install null value */ continue; } @@ -4834,8 +4834,8 @@ static sxi32 VmByteCodeExec( /* Try to extract the desired class */ pClass = PH7_VmExtractClass(&(*pVm), pName->zString, pName->nByte, TRUE, 0); if(pClass) { - if((pObj->iFlags & MEMOBJ_OBJ) == 0) { - if((pObj->iFlags & MEMOBJ_NULL) == 0) { + if((pObj->nType & MEMOBJ_OBJ) == 0) { + if((pObj->nType & MEMOBJ_NULL) == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Default value for argument %u of '%z()' must be an object of type '%z'", n+1, &pVmFunc->sName, pName); @@ -4852,14 +4852,14 @@ static sxi32 VmByteCodeExec( } } else { ph7_value *pTmp = PH7_ReserveMemObj(&(*pVm)); - pTmp->iFlags = aFormalArg[n].nType; + pTmp->nType = aFormalArg[n].nType; /* Make sure the default argument is of the correct type */ rc = PH7_MemObjSafeStore(pObj, pTmp); if(rc != SXRET_OK) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Default value for argument %u of '%z()' does not match the data type", n + 1, &pVmFunc->sName); } - pObj->iFlags = pTmp->iFlags; + pObj->nType = pTmp->nType; PH7_MemObjRelease(pTmp); /* Insert argument index */ sArg.nIdx = pObj->nIdx; @@ -4997,7 +4997,7 @@ static sxi32 VmByteCodeExec( /* Start the consume process */ while(pOut <= pTos) { /* Force a string cast */ - if((pOut->iFlags & MEMOBJ_STRING) == 0) { + if((pOut->nType & MEMOBJ_STRING) == 0) { PH7_MemObjToString(pOut); } if(SyBlobLength(&pOut->sBlob) > 0) { @@ -5164,7 +5164,7 @@ PH7_PRIVATE sxi32 PH7_VmByteCodeExec(ph7_vm *pVm) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "The 'Program::main()' can only return an Integer or Void value"); } /* A set of arguments is stored in array of strings */ - pArgs->iFlags |= MEMOBJ_STRING; + pArgs->nType |= MEMOBJ_STRING; /* Initialize variable for return value */ PH7_MemObjInit(pVm, &pResult); /* Call entry point */ @@ -5542,7 +5542,7 @@ static ph7_class *VmExtractClassFromValue(ph7_vm *pVm, ph7_value *pArg); */ PH7_PRIVATE int PH7_VmIsCallable(ph7_vm *pVm, ph7_value *pValue, int CallInvoke) { int res = 0; - if(pValue->iFlags & MEMOBJ_OBJ) { + if(pValue->nType & MEMOBJ_OBJ) { /* Call the magic method __invoke if available */ ph7_class_instance *pThis = (ph7_class_instance *)pValue->x.pOther; ph7_class_method *pMethod; @@ -5553,12 +5553,12 @@ PH7_PRIVATE int PH7_VmIsCallable(ph7_vm *pVm, ph7_value *pValue, int CallInvoke) /* Invoke the magic method and extract the result */ PH7_MemObjInit(pVm, &sResult); rc = PH7_VmCallClassMethod(pVm, pThis, pMethod, &sResult, 0, 0); - if(rc == SXRET_OK && (sResult.iFlags & (MEMOBJ_BOOL | MEMOBJ_INT))) { + if(rc == SXRET_OK && (sResult.nType & (MEMOBJ_BOOL | MEMOBJ_INT))) { res = sResult.x.iVal != 0; } PH7_MemObjRelease(&sResult); } - } else if(pValue->iFlags & MEMOBJ_HASHMAP) { + } else if(pValue->nType & MEMOBJ_HASHMAP) { ph7_hashmap *pMap = (ph7_hashmap *)pValue->x.pOther; if(pMap->nEntry > 1) { ph7_class *pClass; @@ -5571,7 +5571,7 @@ PH7_PRIVATE int PH7_VmIsCallable(ph7_vm *pVm, ph7_value *pValue, int CallInvoke) ph7_class_method *pMethod; /* Extract the target method */ pV = (ph7_value *)SySetAt(&pVm->aMemObj, pMap->pFirst->pPrev->nValIdx); - if(pV && (pV->iFlags & MEMOBJ_STRING) && SyBlobLength(&pV->sBlob) > 0) { + if(pV && (pV->nType & MEMOBJ_STRING) && SyBlobLength(&pV->sBlob) > 0) { /* Perform the lookup */ pMethod = PH7_ClassExtractMethod(pClass, (const char *)SyBlobData(&pV->sBlob), SyBlobLength(&pV->sBlob)); if(pMethod) { @@ -5582,7 +5582,7 @@ PH7_PRIVATE int PH7_VmIsCallable(ph7_vm *pVm, ph7_value *pValue, int CallInvoke) } } } - } else if(pValue->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) { + } else if(pValue->nType & (MEMOBJ_CALL | MEMOBJ_STRING)) { const char *zName; int nLen; /* Extract the name */ @@ -5635,7 +5635,7 @@ static int vm_builtin_is_callable(ph7_context *pCtx, int nArg, ph7_value **apArg static int vm_builtin_register_autoload_handler(ph7_context *pCtx, int nArg, ph7_value **appArg) { VmAutoLoadCB sEntry; int i, j; - if(nArg < 1 || (appArg[0]->iFlags & (MEMOBJ_STRING | MEMOBJ_HASHMAP)) == 0) { + if(nArg < 1 || (appArg[0]->nType & (MEMOBJ_STRING | MEMOBJ_HASHMAP)) == 0) { /* Return FALSE */ ph7_result_bool(pCtx, 0); return PH7_OK; @@ -5670,7 +5670,7 @@ static int vm_builtin_register_autoload_handler(ph7_context *pCtx, int nArg, ph7 static int vm_builtin_register_shutdown_function(ph7_context *pCtx, int nArg, ph7_value **apArg) { VmShutdownCB sEntry; int i, j; - if(nArg < 1 || (apArg[0]->iFlags & (MEMOBJ_STRING | MEMOBJ_HASHMAP)) == 0) { + if(nArg < 1 || (apArg[0]->nType & (MEMOBJ_STRING | MEMOBJ_HASHMAP)) == 0) { /* Missing/Invalid arguments,return immediately */ return PH7_OK; } @@ -6317,7 +6317,7 @@ static int vm_builtin_get_object_vars(ph7_context *pCtx, int nArg, ph7_value **a ph7_class_instance *pThis = 0; ph7_value *pName, *pArray; SyHashEntry *pEntry; - if(nArg > 0 && (apArg[0]->iFlags & MEMOBJ_OBJ)) { + if(nArg > 0 && (apArg[0]->nType & MEMOBJ_OBJ)) { /* Extract the target instance */ pThis = (ph7_class_instance *)apArg[0]->x.pOther; } @@ -6545,7 +6545,7 @@ PH7_PRIVATE sxi32 PH7_VmCallClassMethod( */ pThis->iRef++; /* Increment reference count */ aStack[i].x.pOther = pThis; - aStack[i].iFlags = MEMOBJ_OBJ; + aStack[i].nType = MEMOBJ_OBJ; if(SyStrncmp(pThis->pClass->sName.zString, "Program", 7) == 0) { if((SyStrncmp(pMethod->sFunc.sName.zString, "main", 4) == 0) || (SyStrncmp(pMethod->sFunc.sName.zString, "__construct", 11) == 0)) { /* Do not overload entry point */ @@ -6558,7 +6558,7 @@ PH7_PRIVATE sxi32 PH7_VmCallClassMethod( /* Push method name */ SyBlobReset(&aStack[i].sBlob); SyBlobAppend(&aStack[i].sBlob, (const void *)SyStringData(&pMethod->sVmName), SyStringLength(&pMethod->sVmName)); - aStack[i].iFlags = MEMOBJ_STRING; + aStack[i].nType = MEMOBJ_STRING; aStack[i].nIdx = SXU32_HIGH; static const SyString sFileName = { "[MEMORY]", sizeof("[MEMORY]") - 1}; /* Emit the CALL instruction */ @@ -6600,7 +6600,7 @@ PH7_PRIVATE sxi32 PH7_VmCallUserFunction( ph7_value *aStack; VmInstr aInstr[2]; int i; - if((pFunc->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { + if((pFunc->nType & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { /* Don't bother processing,it's invalid anyway */ if(pResult) { /* Assume a null return value */ @@ -6905,7 +6905,7 @@ static int VmObConsumer(const void *pData, unsigned int nDataLen, void *pUserDat apArg[0] = &sArg; /* Call the 'filter' callback */ PH7_VmCallUserFunction(pVm, &pEntry->sCallback, 1, apArg, &sResult); - if(sResult.iFlags & MEMOBJ_STRING) { + if(sResult.nType & MEMOBJ_STRING) { /* Extract the function result */ pData = SyBlobData(&sResult.sBlob); nDataLen = SyBlobLength(&sResult.sBlob); @@ -6966,7 +6966,7 @@ static int vm_builtin_ob_start(ph7_context *pCtx, int nArg, ph7_value **apArg) { /* Initialize the OB entry */ PH7_MemObjInit(pCtx->pVm, &sOb.sCallback); SyBlobInit(&sOb.sOB, &pVm->sAllocator); - if(nArg > 0 && (apArg[0]->iFlags & (MEMOBJ_STRING | MEMOBJ_HASHMAP))) { + if(nArg > 0 && (apArg[0]->nType & (MEMOBJ_STRING | MEMOBJ_HASHMAP))) { /* Save the callback name for later invocation */ PH7_MemObjStore(apArg[0], &sOb.sCallback); } @@ -7124,15 +7124,15 @@ static int vm_builtin_ob_list_handlers(ph7_context *pCtx, int nArg, ph7_value ** VmObEntry *pEntry = &aEntry[n]; /* Extract handler name */ SyBlobReset(&sVal.sBlob); - if(pEntry->sCallback.iFlags & MEMOBJ_STRING) { + if(pEntry->sCallback.nType & MEMOBJ_STRING) { /* Callback,dup it's name */ SyBlobDup(&pEntry->sCallback.sBlob, &sVal.sBlob); - } else if(pEntry->sCallback.iFlags & MEMOBJ_HASHMAP) { + } else if(pEntry->sCallback.nType & MEMOBJ_HASHMAP) { SyBlobAppend(&sVal.sBlob, "Class Method", sizeof("Class Method") - 1); } else { SyBlobAppend(&sVal.sBlob, "default output handler", sizeof("default output handler") - 1); } - sVal.iFlags = MEMOBJ_STRING; + sVal.nType = MEMOBJ_STRING; /* Perform the insertion */ ph7_array_add_elem(pArray, 0/* Automatic index assign */, &sVal /* Will make it's own copy */); } @@ -7535,7 +7535,7 @@ static int vm_builtin_unset(ph7_context *pCtx, int nArg, ph7_value **apArg) { for(i = 0 ; i < nArg ; ++i) { pObj = apArg[i]; if(pObj->nIdx == SXU32_HIGH) { - if((pObj->iFlags & MEMOBJ_NULL) == 0) { + if((pObj->nType & MEMOBJ_NULL) == 0) { /* Throw an error */ PH7_VmThrowError(pCtx->pVm, PH7_CTX_ERR, "Expecting a variable not a constant"); } @@ -7558,7 +7558,7 @@ static sxi32 VmHashVarWalker(SyHashEntry *pEntry, void *pUserData) { nIdx = SX_PTR_TO_INT(pEntry->pUserData); pObj = (ph7_value *)SySetAt(&pVm->aMemObj, nIdx); if(pObj) { - if((pObj->iFlags & MEMOBJ_HASHMAP) == 0) { + if((pObj->nType & MEMOBJ_HASHMAP) == 0) { if(pEntry->nKeyLen > 0) { SyString sName; ph7_value sKey; @@ -7879,7 +7879,7 @@ static int vm_builtin_assert(ph7_context *pCtx, int nArg, ph7_value **apArg) { } pAssert = apArg[0]; iResult = 1; /* cc warning */ - if(pAssert->iFlags & MEMOBJ_STRING) { + if(pAssert->nType & MEMOBJ_STRING) { SyString sChunk; SyStringInitFromBuf(&sChunk, SyBlobData(&pAssert->sBlob), SyBlobLength(&pAssert->sBlob)); if(sChunk.nByte > 0) { @@ -7952,7 +7952,7 @@ static int vm_builtin_restore_exception_handler(ph7_context *pCtx, int nArg, ph7 /* Point to the old and the new handler */ pOld = &pVm->aExceptionCB[0]; pNew = &pVm->aExceptionCB[1]; - if(pOld->iFlags & MEMOBJ_NULL) { + if(pOld->nType & MEMOBJ_NULL) { SXUNUSED(nArg); /* cc warning */ SXUNUSED(apArg); /* No installed handler,return FALSE */ @@ -8856,7 +8856,7 @@ static int VmExtractCallback(ph7_value *pKey, ph7_value *pValue, void *pUserData ph7_vm *pVm = pAux->pVm; ph7_value *pObj; SyString sVar; - if((iFlags & 0x10/* EXTR_PREFIX_INVALID */) && (pKey->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL | MEMOBJ_REAL))) { + if((iFlags & 0x10/* EXTR_PREFIX_INVALID */) && (pKey->nType & (MEMOBJ_INT | MEMOBJ_BOOL | MEMOBJ_REAL))) { iFlags |= 0x08; /*EXTR_PREFIX_ALL*/ } /* Perform a string cast */ @@ -10761,13 +10761,13 @@ static sxi32 VmHttpSplitEncodedQuery( } sName.zString = (const char *)SyBlobData(pWorker); /* Install the decoded query in the $_GET/$_REQUEST array */ - if(pGet && (pGet->iFlags & MEMOBJ_HASHMAP)) { + if(pGet && (pGet->nType & MEMOBJ_HASHMAP)) { VmHashmapInsert((ph7_hashmap *)pGet->x.pOther, sName.zString, (int)sName.nByte, sValue.zString, (int)sValue.nByte ); } - if(pRequest && (pRequest->iFlags & MEMOBJ_HASHMAP)) { + if(pRequest && (pRequest->nType & MEMOBJ_HASHMAP)) { VmHashmapInsert((ph7_hashmap *)pRequest->x.pOther, sName.zString, (int)sName.nByte, sValue.zString, (int)sValue.nByte @@ -10812,7 +10812,7 @@ static sxi32 VmHttpProcessCookie(ph7_vm *pVm, SyBlob *pWorker, const char *zIn, sxu32 nOfft; /* Make sure the $_COOKIE superglobal is available */ pCookie = VmExtractSuper(&(*pVm), "_COOKIE", sizeof("_COOKIE") - 1); - if(pCookie == 0 || (pCookie->iFlags & MEMOBJ_HASHMAP) == 0) { + if(pCookie == 0 || (pCookie->nType & MEMOBJ_HASHMAP) == 0) { /* $_COOKIE superglobal not available */ return SXERR_NOTFOUND; } @@ -11056,7 +11056,7 @@ static sxi32 VmHttpProcessRequest(ph7_vm *pVm, const char *zRequest, int nByte) while(SXRET_OK == SySetGetNextEntry(&sHeader, (void **)&pHeader)) { pName = &pHeader->sName; pValue = &pHeader->sValue; - if(pHeaderArray && (pHeaderArray->iFlags & MEMOBJ_HASHMAP)) { + if(pHeaderArray && (pHeaderArray->nType & MEMOBJ_HASHMAP)) { /* Insert the MIME header and it's associated value */ VmHashmapInsert((ph7_hashmap *)pHeaderArray->x.pOther, pName->zString, (int)pName->nByte, diff --git a/include/ph7int.h b/include/ph7int.h index 6d619f6..7d2cc45 100644 --- a/include/ph7int.h +++ b/include/ph7int.h @@ -625,7 +625,7 @@ struct ph7_value { void *pOther; /* Other values (Object, Array, Resource, Namespace, etc.) */ } x; sxi32 iFlags; /* Control flags (see below) */ - sxi32 iType; /* Variable data type */ + sxi32 nType; /* Variable data type */ ph7_vm *pVm; /* Virtual machine that own this instance */ SyBlob sBlob; /* String values */ sxu32 nIdx; /* Index number of this entry in the global object allocator */ @@ -659,7 +659,7 @@ struct ph7_value { * The following macro clear the current ph7_value type and replace * it with the given one. */ -#define MemObjSetType(OBJ,TYPE) ((OBJ)->iFlags = ((OBJ)->iFlags&~MEMOBJ_ALL)|TYPE) +#define MemObjSetType(OBJ,TYPE) ((OBJ)->nType = ((OBJ)->nType&~MEMOBJ_ALL)|TYPE) /* ph7_value cast method signature */ typedef sxi32(*ProcMemObjCast)(ph7_value *); /* Forward reference */