internal static int DifferentSizes_SetItemFunc(npy_intp index, dynamic value, NpyArray npa) { // handles case of views mapped to different size arrays var SrcArray = NpyDataMem_NEW(npa.ItemType, 1, false); SetIndex(SrcArray, 0, value); MemCopy.MemCpy(npa.data, index, SrcArray, 0, npa.ItemSize); return(1); }
internal static object DifferentSizes_GetItemFunc(npy_intp index, NpyArray npa) { // handles case of views mapped to different size arrays var DestArray = NpyDataMem_NEW(npa.ItemType, 1, false); MemCopy.MemCpy(DestArray, 0, npa.data, index, npa.ItemSize); return(GetIndex(DestArray, 0)); }
private static VoidPtr ConvertAllToFloats(VoidPtr src, int srcOffset, int length) { int totalBytesToCopy = (length - srcOffset); float[] destArray = new float[(totalBytesToCopy + sizeof(float) - 1) / sizeof(float)]; VoidPtr Dest = new VoidPtr(destArray); MemCopy.MemCpy(Dest, 0, src, srcOffset, totalBytesToCopy); return(Dest); }
private static VoidPtr ConvertAllToDecimals(VoidPtr src, int srcOffset, int length) { int totalBytesToCopy = (length - srcOffset); decimal[] destArray = new decimal[(totalBytesToCopy + sizeof(decimal) - 1) / sizeof(decimal)]; VoidPtr Dest = new VoidPtr(destArray); MemCopy.MemCpy(Dest, 0, src, srcOffset, totalBytesToCopy); return(Dest); }
private static VoidPtr ConvertAllToUInt64s(VoidPtr src, int srcOffset, int length) { int totalBytesToCopy = (length - srcOffset); UInt64[] destArray = new UInt64[(totalBytesToCopy + sizeof(UInt64) - 1) / sizeof(UInt64)]; VoidPtr Dest = new VoidPtr(destArray); MemCopy.MemCpy(Dest, 0, src, srcOffset, totalBytesToCopy); return(Dest); }
public static VoidPtr NpyDataMem_RENEW(VoidPtr oldArray, ulong newSize) { VoidPtr newArray = NpyDataMem_NEW(oldArray.type_num, newSize, true); ulong preserveLength = System.Math.Min(VoidPointer_BytesLength(oldArray), newSize); if (preserveLength > 0) { MemCopy.MemCpy(newArray, 0, oldArray, 0, (long)preserveLength); } return(newArray); }
internal static void memmove(VoidPtr dest, npy_intp dest_offset, VoidPtr src, npy_intp src_offset, long len) { if (dest.type_num == NPY_TYPES.NPY_DECIMAL) { VoidPtr Temp = new VoidPtr(new decimal[len / sizeof(decimal)]); MemCopy.MemCpy(Temp, 0, src, src_offset, len); MemCopy.MemCpy(dest, dest_offset, Temp, 0, len); } else { VoidPtr Temp = new VoidPtr(new byte[len]); MemCopy.MemCpy(Temp, 0, src, src_offset, len); MemCopy.MemCpy(dest, dest_offset, Temp, 0, len); } }
internal static void memmove(VoidPtr dest, npy_intp dest_offset, VoidPtr src, npy_intp src_offset, long len) { if ((src.type_num == dest.type_num) && IsElementAligned(src, src_offset) && IsElementAligned(dest, dest_offset)) { var helper = MemCopy.GetMemcopyHelper(dest); helper.memmove(dest, dest_offset, src, src_offset, len); return; } else { VoidPtr Temp = new VoidPtr(new byte[len]); MemCopy.MemCpy(Temp, 0, src, src_offset, len); MemCopy.MemCpy(dest, dest_offset, Temp, 0, len); return; } }
internal static bool MemCpy(VoidPtr Dest, npy_intp DestOffset, VoidPtr Src, npy_intp SrcOffset, long Length) { return(MemCopy.MemCpy(Dest, DestOffset, Src, SrcOffset, Length)); }
internal static void memcpy(VoidPtr dest, VoidPtr src, long len) { MemCopy.MemCpy(dest, 0, src, 0, len); }