Unoptimized version that works.
This is debug version - some code can be removed.
There are several ways of elaboration on top of this subject (some of ideas where to go):
- version that do not use JS function
- version that introduce offsets
- version that works with different argument types (e.g. int, float etc.)
- perhaps even a macro (see wishlist forum on JS land adventures)
Code: Select all
Procedure MemCpy(*dest, *src, n)
EnableJS
function memcpy(dest, src, n)
{
destAr = new Uint8Array(dest);
srcAr = new Uint8Array(src);
console.log("Src:", srcAr);
console.log("Src slice:", srcAr.slice(0,n));
console.log("Dest:", destAr);
console.log("n:", n);
destAr.set(srcAr.slice(0,n),0);
console.log("Dest after:", destAr);
}
memcpy(p_dest, p_src, v_n);
DisableJS
EndProcedure
Procedure test1()
Define *p1, *p2
*p1 = AllocateMemory(100)
*p2 = AllocateMemory(100)
PokeS( *p1, 0, "today is a good day", -1 )
PokeS( *p2, 0, "insertinto test string", -1 )
Debug "Before"
Debug PeekS( *p1, 0, -1 )
Debug PeekS( *p2, 0, -1 )
MemCpy(*p2, *p1, 10)
Debug "After"
Debug PeekS( *p1, 0, -1 )
Debug PeekS( *p2, 0, -1 )
EndProcedure
Debug "Test 1 start"
test1()
Debug "Test 1 end"
Output
Code: Select all
Test 1 start
Before
today is a good day
insertinto test string
After
today is a good day
today is a test string
Test 1 end