diff options
author | Steve Bennett <steveb@workware.net.au> | 2014-01-11 21:53:17 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2014-01-15 11:23:35 +1000 |
commit | 5339e48e6f3499e2fccf9b57fed6e461c7ce131c (patch) | |
tree | 237d88b606af5d344f8ae98eaf6463e27068d3e2 /jim.c | |
parent | 87ea45c91e2e64d88e6faf1fb40882ac97f4ee9b (diff) | |
download | jimtcl-5339e48e6f3499e2fccf9b57fed6e461c7ce131c.zip jimtcl-5339e48e6f3499e2fccf9b57fed6e461c7ce131c.tar.gz jimtcl-5339e48e6f3499e2fccf9b57fed6e461c7ce131c.tar.bz2 |
jim.c: simplifiy Jim_StrEqObj()
And use it from the expr evaluator
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.c')
-rw-r--r-- | jim.c | 33 |
1 files changed, 13 insertions, 20 deletions
@@ -2524,16 +2524,16 @@ void Jim_AppendStrings(Jim_Interp *interp, Jim_Obj *objPtr, ...) int Jim_StringEqObj(Jim_Obj *aObjPtr, Jim_Obj *bObjPtr) { - const char *aStr, *bStr; - int aLen, bLen; - - if (aObjPtr == bObjPtr) + if (aObjPtr == bObjPtr) { return 1; - aStr = Jim_GetString(aObjPtr, &aLen); - bStr = Jim_GetString(bObjPtr, &bLen); - if (aLen != bLen) - return 0; - return JimStringCompare(aStr, aLen, bStr, bLen) == 0; + } + else { + int Alen, Blen; + const char *sA = Jim_GetString(aObjPtr, &Alen); + const char *sB = Jim_GetString(bObjPtr, &Blen); + + return Alen == Blen && memcmp(sA, sB, Alen) == 0; + } } /** @@ -8072,19 +8072,12 @@ static int JimExprOpStrBin(Jim_Interp *interp, struct JimExprState *e) switch (e->opcode) { case JIM_EXPROP_STREQ: - case JIM_EXPROP_STRNE: { - int Alen, Blen; - const char *sA = Jim_GetString(A, &Alen); - const char *sB = Jim_GetString(B, &Blen); - - if (e->opcode == JIM_EXPROP_STREQ) { - wC = (Alen == Blen && memcmp(sA, sB, Alen) == 0); - } - else { - wC = (Alen != Blen || memcmp(sA, sB, Alen) != 0); + case JIM_EXPROP_STRNE: + wC = Jim_StringEqObj(A, B); + if (e->opcode == JIM_EXPROP_STRNE) { + wC = !wC; } break; - } case JIM_EXPROP_STRIN: wC = JimSearchList(interp, B, A); break; |