diff --git a/snunit/src/snunit/unsafe/constants.scala b/snunit/src/snunit/unsafe/constants.scala new file mode 100644 index 0000000..505741f --- /dev/null +++ b/snunit/src/snunit/unsafe/constants.scala @@ -0,0 +1,7 @@ +package snunit.unsafe + +private[unsafe] object Constants { + final val StringCharArrayOffset = 16 + final val StringOffsetOffset = 24 + final val StringCountOffset = 28 +} diff --git a/snunit/src/snunit/unsafe/newCharBuffer.scala b/snunit/src/snunit/unsafe/newCharBuffer.scala index d0296c6..b5afb9f 100644 --- a/snunit/src/snunit/unsafe/newCharBuffer.scala +++ b/snunit/src/snunit/unsafe/newCharBuffer.scala @@ -11,9 +11,9 @@ private[snunit] def newCharBuffer(string: String): CharBuffer = { // deconstructing string val stringRawPtr = castObjectToRawPtr(string) val stringPtr = fromRawPtr[Byte](stringRawPtr) - val array: Array[Char] = loadObject(toRawPtr(stringPtr + 8)).asInstanceOf[Array[Char]] - val offset: Int = loadInt(toRawPtr(stringPtr + 16)) - val count: Int = loadInt(toRawPtr(stringPtr + 20)) + val array: Array[Char] = loadObject(toRawPtr(stringPtr + Constants.StringCharArrayOffset)).asInstanceOf[Array[Char]] + val offset: Int = loadInt(toRawPtr(stringPtr + Constants.StringOffsetOffset)) + val count: Int = loadInt(toRawPtr(stringPtr + Constants.StringCountOffset)) CharBuffer.wrap(array, offset, count) } diff --git a/snunit/src/snunit/unsafe/stringUtils.scala b/snunit/src/snunit/unsafe/stringUtils.scala index b24d9bb..274ba16 100644 --- a/snunit/src/snunit/unsafe/stringUtils.scala +++ b/snunit/src/snunit/unsafe/stringUtils.scala @@ -37,10 +37,10 @@ private[snunit] def fromCStringAndSize(cstr: CString, size: Int): String = { val result = new String(Array.emptyCharArray) val resultRawPtr = castObjectToRawPtr(result) val resultPtr = fromRawPtr[Byte](resultRawPtr) - storeObject(toRawPtr(resultPtr + 8), castObjectToRawPtr(output.array())) - storeInt(toRawPtr(resultPtr + 16), 0) + storeObject(toRawPtr(resultPtr + Constants.StringCharArrayOffset), castObjectToRawPtr(output.array())) + storeInt(toRawPtr(resultPtr + Constants.StringOffsetOffset), 0) val length = output.position() - storeInt(toRawPtr(resultPtr + 20), length) + storeInt(toRawPtr(resultPtr + Constants.StringCountOffset), length) result } else "" }