JsVar *jsvIteratorSetValue(JsvIterator *it, JsVar *value) { switch (it->type) { case JSVI_FULLARRAY: if (jsvIsIntegerish(it->it.obj.it.var) && jsvGetInteger(it->it.obj.it.var) == it->it.obj.index) jsvObjectIteratorSetValue(&it->it.obj.it, value); jsvSetArrayItem(it->it.obj.var, it->it.obj.index, value); break; case JSVI_OBJECT : jsvObjectIteratorSetValue(&it->it.obj.it, value); break; case JSVI_STRING : jsvStringIteratorSetChar(&it->it.str, (char)(jsvIsString(value) ? value->varData.str[0] : (char)jsvGetInteger(value))); break; case JSVI_ARRAYBUFFER : jsvArrayBufferIteratorSetValueAndRewind(&it->it.buf, value); break; default: assert(0); break; } return value; }
JsVar *jsvIteratorSetValue(JsvIterator *it, JsVar *value) { switch (it->type) { case JSVI_OBJECT : jsvObjectIteratorSetValue(&it->it.obj, value); break; case JSVI_STRING : jsvStringIteratorSetChar(&it->it.str, (char)(jsvIsString(value) ? value->varData.str[0] : (char)jsvGetInteger(value))); break; case JSVI_ARRAYBUFFER : jsvArrayBufferIteratorSetValue(&it->it.buf, value); break; default: assert(0); break; } return value; }