Ejemplo n.º 1
0
void fastiva_Dalvik_java_lang_System_arraycopyCharUnchecked(Unicod_ap srcArray, jint srcPos, Unicod_ap dstArray, jint dstPos, jint length) {
	assert(srcArray != NULL && dstArray != NULL);
	assert(srcPos >= 0 && dstPos >= 0 && length >= 0);
	assert(srcArray->length() >= srcPos + length);
	assert(dstArray->length() >= dstPos + length);

	memcpy(dstArray->getBuffer_unsafe$() + dstPos, srcArray->getBuffer_unsafe$() + srcPos, length * sizeof(jchar));
#endif
}
Ejemplo n.º 2
0
void java_lang_String::getChars(jint srcBegin, jint srcEnd, Unicod_ap dst, jint dstBegin) {
	if (srcBegin < 0) {
	    THROW_EX_NEW$(java_lang_StringIndexOutOfBoundsException, (srcBegin));
	} 
	if (srcEnd > this->m_count) {
		THROW_EX_NEW$(java_lang_StringIndexOutOfBoundsException, (srcEnd));
	} 
	if (srcBegin > srcEnd) {
		THROW_EX_NEW$(java_lang_StringIndexOutOfBoundsException, (srcEnd - srcBegin));
	}
	
	if (dst == FASTIVA_NULL) {
		fastiva_throwNullPointerException();
	}
	
	int copyLen = (srcEnd - srcBegin);
	if (copyLen == 0) {
		return;
	}

	if (dst->length() - dstBegin < copyLen) {
		fastiva_throwArrayStoreException();
	}
	
	Unicod_A::Buffer dst_buf(dst, dstBegin, copyLen);
	unicod *pDest = dst_buf;
	srcBegin += this->m_offset;
	Unicod_A::Buffer src_buf(this->m_value, srcBegin, copyLen);
	unicod *pSrc = src_buf;
	memcpy(pDest, pSrc, copyLen*sizeof(unicod));
}