void jsvArrayBufferIteratorSetValue(JsvArrayBufferIterator *it, JsVar *value) { if (it->type == ARRAYBUFFERVIEW_UNDEFINED) return; assert(!it->hasAccessedElement); // we just haven't implemented this case yet char data[8]; int i,dataLen = (int)JSV_ARRAYBUFFER_GET_SIZE(it->type); if (JSV_ARRAYBUFFER_IS_FLOAT(it->type)) { jsvArrayBufferIteratorFloatToData(data, (unsigned)dataLen, it->type, jsvGetFloat(value)); } else { jsvArrayBufferIteratorIntToData(data, (unsigned)dataLen, it->type, jsvGetInteger(value)); } if (it->type & ARRAYBUFFERVIEW_BIG_ENDIAN) { for (i=dataLen-1;i>=0;i--) { jsvStringIteratorSetChar(&it->it, data[i]); if (dataLen!=1) jsvStringIteratorNext(&it->it); } } else { for (i=0;i<dataLen;i++) { jsvStringIteratorSetChar(&it->it, data[i]); if (dataLen!=1) jsvStringIteratorNext(&it->it); } } if (dataLen!=1) it->hasAccessedElement = true; }
void jsvArrayBufferIteratorSetIntegerValue(JsvArrayBufferIterator *it, JsVarInt v) { if (it->type == ARRAYBUFFERVIEW_UNDEFINED) return; assert(!it->hasAccessedElement); // we just haven't implemented this case yet char data[8]; unsigned int i,dataLen = JSV_ARRAYBUFFER_GET_SIZE(it->type); if (JSV_ARRAYBUFFER_IS_FLOAT(it->type)) { jsvArrayBufferIteratorFloatToData(data, dataLen, it->type, (JsVarFloat)v); } else { jsvArrayBufferIteratorIntToData(data, dataLen, it->type, v); } for (i=0;i<dataLen;i++) { jsvStringIteratorSetChar(&it->it, data[i]); if (dataLen!=1) jsvStringIteratorNext(&it->it); } if (dataLen!=1) it->hasAccessedElement = true; }