newtRef NsParamStr(newtRefArg rcvr, newtRefArg baseString, newtRefArg paramStrArray) { if (! NewtRefIsString(baseString)) return NewtThrow(kNErrNotAString, baseString); if (! NewtRefIsArray(paramStrArray)) return NewtThrow(kNErrNotAnArray, paramStrArray); return NewtParamStr(NewtRefToString(baseString), NewtStringLength(baseString), paramStrArray, true); }
newtRef NcSetPath(newtRefArg r, newtRefArg p, newtRefArg v) { newtRefVar slot; newtRefVar target; target = NewtGetPath(r, p, &slot); if (target == kNewtRefUnbind) NewtThrow(kNErrOutOfBounds, r); if (NewtRefIsArray(target)) return NcSetArraySlot(target, slot, v); else return NcSetSlot(target, slot, v); }
newtRef NsSetContains(newtRefArg rcvr, newtRefArg array, newtRefArg item) { if (!NewtRefIsArray(array)) { return NewtThrow(kNErrNotAnArray, array); } newtRef * slots; uint32_t n; uint32_t i; slots = NewtRefToSlots(array); n = NewtLength(array); for (i = 0; i < n; i++) { if (slots[i] == item) { return NewtMakeInteger(i); } } return kNewtRefNIL; }
newtRef NcStringer(newtRefArg r) { newtRef * slots; newtRefVar str; uint32_t len; uint32_t i; if (! NewtRefIsArray(r)) return NewtThrow(kNErrNotAnArray, r); str = NSSTR(""); len = NewtArrayLength(r); slots = NewtRefToSlots(r); for (i = 0; i < len; i++) { NcStrCat(str, slots[i]); } return str; }
newtRef NsIsArray(newtRefArg rcvr, newtRefArg r) { return NewtMakeBoolean(NewtRefIsArray(r)); }