Showing the changes to libraries/script-engine/src/DataViewPrototype.cpp (1 of 7 files). Show all
Unified · Split
| @@ -26,7 +26,10 @@ QByteArray* DataViewPrototype::thisArrayBuffer() const { · 25 unmodified lines | ||
| 26 | 26 | return qscriptvalue_cast<QByteArray*>(bufferObject.data()); |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | −bool DataViewPrototype::realOffset(quint32& offset, size_t size) const { | |
| 29 | +bool DataViewPrototype::realOffset(qint32& offset, size_t size) const { | |
| 30 | + if (offset < 0) { | |
| 31 | + return false; | |
| 32 | + } | |
| 30 | 33 | quint32 viewOffset = thisObject().data().property(BYTE_OFFSET_PROPERTY_NAME).toInt32(); |
| 31 | 34 | quint32 viewLength = thisObject().data().property(BYTE_LENGTH_PROPERTY_NAME).toInt32(); |
| 32 | 35 | //qDebug() << "View Offset: " << viewOffset << ", View Lenght: " << viewLength; |
| @@ -38,7 +41,7 @@ bool DataViewPrototype::realOffset(quint32& offset, size_t size) const { · 5 unmodified lines | ||
| 38 | 41 | |
| 39 | 42 | ///////////////// GETTERS //////////////////////////// |
| 40 | 43 | |
| 41 | −qint32 DataViewPrototype::getInt8(quint32 byteOffset) { | |
| 44 | +qint32 DataViewPrototype::getInt8(qint32 byteOffset) { | |
| 42 | 45 | if (realOffset(byteOffset, sizeof(qint8))) { |
| 43 | 46 | QDataStream stream(*thisArrayBuffer()); |
| 44 | 47 | stream.skipRawData(byteOffset); |
| @@ -51,7 +54,7 @@ qint32 DataViewPrototype::getInt8(quint32 byteOffset) { · 6 unmodified lines | ||
| 51 | 54 | return 0; |
| 52 | 55 | } |
| 53 | 56 | |
| 54 | −quint32 DataViewPrototype::getUint8(quint32 byteOffset) { | |
| 57 | +quint32 DataViewPrototype::getUint8(qint32 byteOffset) { | |
| 55 | 58 | if (realOffset(byteOffset, sizeof(quint8))) { |
| 56 | 59 | QDataStream stream(*thisArrayBuffer()); |
| 57 | 60 | stream.skipRawData(byteOffset); |
| @@ -64,7 +67,7 @@ quint32 DataViewPrototype::getUint8(quint32 byteOffset) { · 6 unmodified lines | ||
| 64 | 67 | return 0; |
| 65 | 68 | } |
| 66 | 69 | |
| 67 | −qint32 DataViewPrototype::getInt16(quint32 byteOffset, bool littleEndian) { | |
| 70 | +qint32 DataViewPrototype::getInt16(qint32 byteOffset, bool littleEndian) { | |
| 68 | 71 | if (realOffset(byteOffset, sizeof(qint16))) { |
| 69 | 72 | QDataStream stream(*thisArrayBuffer()); |
| 70 | 73 | stream.skipRawData(byteOffset); |
| @@ -78,7 +81,7 @@ qint32 DataViewPrototype::getInt16(quint32 byteOffset, bool littleEndian) { · 7 unmodified lines | ||
| 78 | 81 | return 0; |
| 79 | 82 | } |
| 80 | 83 | |
| 81 | −quint32 DataViewPrototype::getUint16(quint32 byteOffset, bool littleEndian) { | |
| 84 | +quint32 DataViewPrototype::getUint16(qint32 byteOffset, bool littleEndian) { | |
| 82 | 85 | if (realOffset(byteOffset, sizeof(quint16))) { |
| 83 | 86 | QDataStream stream(*thisArrayBuffer()); |
| 84 | 87 | stream.skipRawData(byteOffset); |
| @@ -92,7 +95,7 @@ quint32 DataViewPrototype::getUint16(quint32 byteOffset, bool littleEndian) { · 7 unmodified lines | ||
| 92 | 95 | return 0; |
| 93 | 96 | } |
| 94 | 97 | |
| 95 | −qint32 DataViewPrototype::getInt32(quint32 byteOffset, bool littleEndian) { | |
| 98 | +qint32 DataViewPrototype::getInt32(qint32 byteOffset, bool littleEndian) { | |
| 96 | 99 | if (realOffset(byteOffset, sizeof(qint32))) { |
| 97 | 100 | QDataStream stream(*thisArrayBuffer()); |
| 98 | 101 | stream.skipRawData(byteOffset); |
| @@ -106,7 +109,7 @@ qint32 DataViewPrototype::getInt32(quint32 byteOffset, bool littleEndian) { · 7 unmodified lines | ||
| 106 | 109 | return 0; |
| 107 | 110 | } |
| 108 | 111 | |
| 109 | −quint32 DataViewPrototype::getUint32(quint32 byteOffset, bool littleEndian) { | |
| 112 | +quint32 DataViewPrototype::getUint32(qint32 byteOffset, bool littleEndian) { | |
| 110 | 113 | if (realOffset(byteOffset, sizeof(quint32))) { |
| 111 | 114 | QDataStream stream(*thisArrayBuffer()); |
| 112 | 115 | stream.skipRawData(byteOffset); |
| @@ -120,25 +123,28 @@ quint32 DataViewPrototype::getUint32(quint32 byteOffset, bool littleEndian) { · 7 unmodified lines | ||
| 120 | 123 | return 0; |
| 121 | 124 | } |
| 122 | 125 | |
| 123 | −float DataViewPrototype::getFloat32(quint32 byteOffset, bool littleEndian) { | |
| 126 | +float DataViewPrototype::getFloat32(qint32 byteOffset, bool littleEndian) { | |
| 124 | 127 | if (realOffset(byteOffset, sizeof(float))) { |
| 125 | 128 | QDataStream stream(*thisArrayBuffer()); |
| 126 | 129 | stream.skipRawData(byteOffset); |
| 127 | 130 | stream.setByteOrder((littleEndian) ? QDataStream::LittleEndian : QDataStream::BigEndian); |
| 131 | + stream.setFloatingPointPrecision(QDataStream::SinglePrecision); | |
| 128 | 132 | |
| 129 | 133 | float result; |
| 130 | 134 | stream >> result; |
| 135 | + qDebug() << "Get: " << result; | |
| 131 | 136 | return result; |
| 132 | 137 | } |
| 133 | 138 | thisObject().engine()->evaluate("throw \"RangeError: byteOffset out of range\""); |
| 134 | 139 | return 0; |
| 135 | 140 | } |
| 136 | 141 | |
| 137 | −double DataViewPrototype::getFloat64(quint32 byteOffset, bool littleEndian) { | |
| 142 | +double DataViewPrototype::getFloat64(qint32 byteOffset, bool littleEndian) { | |
| 138 | 143 | if (realOffset(byteOffset, sizeof(double))) { |
| 139 | 144 | QDataStream stream(*thisArrayBuffer()); |
| 140 | 145 | stream.skipRawData(byteOffset); |
| 141 | 146 | stream.setByteOrder((littleEndian) ? QDataStream::LittleEndian : QDataStream::BigEndian); |
| 147 | + stream.setFloatingPointPrecision(QDataStream::DoublePrecision); | |
| 142 | 148 | |
| 143 | 149 | double result; |
| 144 | 150 | stream >> result; |
| @@ -150,7 +156,7 @@ double DataViewPrototype::getFloat64(quint32 byteOffset, bool littleEndian) { · 5 unmodified lines | ||
| 150 | 156 | |
| 151 | 157 | ///////////////// SETTERS //////////////////////////// |
| 152 | 158 | |
| 153 | −void DataViewPrototype::setInt8(quint32 byteOffset, qint32 value) { | |
| 159 | +void DataViewPrototype::setInt8(qint32 byteOffset, qint32 value) { | |
| 154 | 160 | if (realOffset(byteOffset, sizeof(qint8))) { |
| 155 | 161 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 156 | 162 | stream.skipRawData(byteOffset); |
| @@ -161,7 +167,7 @@ void DataViewPrototype::setInt8(quint32 byteOffset, qint32 value) { · 4 unmodified lines | ||
| 161 | 167 | } |
| 162 | 168 | } |
| 163 | 169 | |
| 164 | −void DataViewPrototype::setUint8(quint32 byteOffset, quint32 value) { | |
| 170 | +void DataViewPrototype::setUint8(qint32 byteOffset, quint32 value) { | |
| 165 | 171 | if (realOffset(byteOffset, sizeof(quint8))) { |
| 166 | 172 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 167 | 173 | stream.skipRawData(byteOffset); |
| @@ -172,7 +178,7 @@ void DataViewPrototype::setUint8(quint32 byteOffset, quint32 value) { · 4 unmodified lines | ||
| 172 | 178 | } |
| 173 | 179 | } |
| 174 | 180 | |
| 175 | −void DataViewPrototype::setInt16(quint32 byteOffset, qint32 value, bool littleEndian) { | |
| 181 | +void DataViewPrototype::setInt16(qint32 byteOffset, qint32 value, bool littleEndian) { | |
| 176 | 182 | if (realOffset(byteOffset, sizeof(qint16))) { |
| 177 | 183 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 178 | 184 | stream.skipRawData(byteOffset); |
| @@ -184,7 +190,7 @@ void DataViewPrototype::setInt16(quint32 byteOffset, qint32 value, bool littleEn · 5 unmodified lines | ||
| 184 | 190 | } |
| 185 | 191 | } |
| 186 | 192 | |
| 187 | −void DataViewPrototype::setUint16(quint32 byteOffset, quint32 value, bool littleEndian) { | |
| 193 | +void DataViewPrototype::setUint16(qint32 byteOffset, quint32 value, bool littleEndian) { | |
| 188 | 194 | if (realOffset(byteOffset, sizeof(quint16))) { |
| 189 | 195 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 190 | 196 | stream.skipRawData(byteOffset); |
| @@ -196,7 +202,7 @@ void DataViewPrototype::setUint16(quint32 byteOffset, quint32 value, bool little · 5 unmodified lines | ||
| 196 | 202 | } |
| 197 | 203 | } |
| 198 | 204 | |
| 199 | −void DataViewPrototype::setInt32(quint32 byteOffset, qint32 value, bool littleEndian) { | |
| 205 | +void DataViewPrototype::setInt32(qint32 byteOffset, qint32 value, bool littleEndian) { | |
| 200 | 206 | if (realOffset(byteOffset, sizeof(qint32))) { |
| 201 | 207 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 202 | 208 | stream.skipRawData(byteOffset); |
| @@ -208,7 +214,7 @@ void DataViewPrototype::setInt32(quint32 byteOffset, qint32 value, bool littleEn · 5 unmodified lines | ||
| 208 | 214 | } |
| 209 | 215 | } |
| 210 | 216 | |
| 211 | −void DataViewPrototype::setUint32(quint32 byteOffset, quint32 value, bool littleEndian) { | |
| 217 | +void DataViewPrototype::setUint32(qint32 byteOffset, quint32 value, bool littleEndian) { | |
| 212 | 218 | if (realOffset(byteOffset, sizeof(quint32))) { |
| 213 | 219 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 214 | 220 | stream.skipRawData(byteOffset); |
| @@ -220,11 +226,12 @@ void DataViewPrototype::setUint32(quint32 byteOffset, quint32 value, bool little · 5 unmodified lines | ||
| 220 | 226 | } |
| 221 | 227 | } |
| 222 | 228 | |
| 223 | −void DataViewPrototype::setFloat32(quint32 byteOffset, float value, bool littleEndian) { | |
| 229 | +void DataViewPrototype::setFloat32(qint32 byteOffset, float value, bool littleEndian) { | |
| 224 | 230 | if (realOffset(byteOffset, sizeof(float))) { |
| 225 | 231 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 226 | 232 | stream.skipRawData(byteOffset); |
| 227 | 233 | stream.setByteOrder((littleEndian) ? QDataStream::LittleEndian : QDataStream::BigEndian); |
| 234 | + stream.setFloatingPointPrecision(QDataStream::SinglePrecision); | |
| 228 | 235 | |
| 229 | 236 | stream << value; |
| 230 | 237 | } else { |
| @@ -232,11 +239,12 @@ void DataViewPrototype::setFloat32(quint32 byteOffset, float value, bool littleE · 1 unmodified line | ||
| 232 | 239 | } |
| 233 | 240 | } |
| 234 | 241 | |
| 235 | −void DataViewPrototype::setFloat64(quint32 byteOffset, double value, bool littleEndian) { | |
| 242 | +void DataViewPrototype::setFloat64(qint32 byteOffset, double value, bool littleEndian) { | |
| 236 | 243 | if (realOffset(byteOffset, sizeof(double))) { |
| 237 | 244 | QDataStream stream(thisArrayBuffer(), QIODevice::ReadWrite); |
| 238 | 245 | stream.skipRawData(byteOffset); |
| 239 | 246 | stream.setByteOrder((littleEndian) ? QDataStream::LittleEndian : QDataStream::BigEndian); |
| 247 | + stream.setFloatingPointPrecision(QDataStream::DoublePrecision); | |
| 240 | 248 | |
| 241 | 249 | stream << value; |
| 242 | 250 | } else { |