!HF1      !"#$%&'()*+,-./0NoneFXkDprimitive-foreignRead a value from a memory area regarded as an array of values of the same kind. The first argument specifies the start address of the array and the second the index into the array (the first element of the array has index 0 ). The following equality holds, WpeekElemOff addr idx = fixIO $ \result -> peek (addr `plusPtr` (idx * sizeOf result))jNote that this is only a specification, not necessarily the concrete implementation of the function.primitive-foreignpWrite a value to a memory area regarded as an array of values of the same kind. The following equality holds: CpokeElemOff addr idx x = poke (addr `plusPtr` (idx * sizeOf x)) xprimitive-foreignhRead a value from a memory location given by a base address and offset. The following equality holds: 0peekByteOff addr off = peek (addr `plusPtr` off)primitive-foreigngWrite a value to a memory location given by a base address and offset. The following equality holds: 4pokeByteOff addr off x = poke (addr `plusPtr` off) xprimitive-foreign,Read a value from the given memory location.Note that the peek and poke functions might require properly aligned addresses to function correctly. This is architecture dependent; thus, portable code should ensure that when peeking or poking values of some type a", the alignment constraint for a, as given by the function   is fulfilled.primitive-foreign_Write the given value to the given memory location. Alignment restrictions might apply; see .primitive-foreign f executes the computation fo, passing as argument a pointer to a temporarily allocated block of memory sufficient to hold values of type a.The memory is freed when fM terminates (either normally or via an exception), so the pointer passed to f must not be used after this.primitive-foreignNAllocate storage for the given number of elements of a storable type (like , but for multiple elements).primitive-foreignLike E, but add an extra position to hold a special termination element.primitive-foreignETemporarily allocate space for the given number of elements (like , but for multiple elements).primitive-foreignLike E, but add an extra position to hold a special termination element.primitive-foreignAdjust the size of an array.primitive-foreignXAdjust the size of an array, including an extra position for the terminating element.primitive-foreignLike :, but allocated memory is filled with bytes of value zero. primitive-foreignLike :, but allocated memory is filled with bytes of value zero.!primitive-foreign0Convert an array of given length into a Haskell 1."primitive-foreignDConvert an array terminated by the given terminator into a Haskell 1.#primitive-foreign Write the 1# into memory at the given location.$primitive-foreign Write the 1L into memory and terminate the elements with a given terminating element.%primitive-foreignWrite a 1C into a newly allocated, consecutive sequence of primitive values.&primitive-foreignWrite a 1 into a newly allocated, consecutive sequence of primitive values, where the end is fixed by the given terminating element.'primitive-foreignTemporarily store a 1 in memory.(primitive-foreignLike '3, but the action is also passed the size of the 1.)primitive-foreignLike '2, but a terminator indicates where the array ends.*primitive-foreignLike (2, but a terminator indicates where the array ends.+primitive-foreignFReturn the number of elements in an array, excluding the terminator,primitive-foreign@Advance a pointer into an array by the given number of elements.-primitive-foreignjCopy the given number of elements from the source array into the destination array; the memory regions may not overlap..primitive-foreignjCopy the given number of elements from the source array into the destination array; the memory regions may overlap.+primitive-foreignterminating element-primitive-foreigndestination arrayprimitive-foreign source arrayprimitive-foreignnumber of elements to copy.primitive-foreigndestination arrayprimitive-foreign source arrayprimitive-foreignnumber of elements to copy1  !"#$%&'()*+,-./01      !"#$%&')(*-.+,/02         !"#$%&'()*+,-./0123456789:,primitive-foreign-0.1-3bjy8Q2osvR7Gg7c6hP2xcData.Primitive.ForeignbaseForeign.Marshal.Utils fillBytes moveBytes copyBytes maybePeek maybeWithmaybeNewForeign.Marshal.Allocfree reallocBytesallocaBytesAligned allocaBytes callocBytes mallocBytes finalizerFree(primitive-0.7.0.0-9xMM76CsovTEGnXCHiCdRJData.Primitive.Types alignmentsizeOf peekElemOff pokeElemOff peekByteOff pokeByteOffpeekpokeallocamalloccallocrealloc mallocArray mallocArray0 allocaArray allocaArray0 reallocArray reallocArray0 callocArray callocArray0 peekArray peekArray0 pokeArray pokeArray0newArray newArray0 withArray withArrayLen withArray0 withArrayLen0 lengthArray0 advancePtr copyArray moveArraywithnewData.Primitive.PrimArray PrimArray