tech.v3.datatype.native-buffer
Support for malloc/free and generalized support for reading/writing typed data to a long integer address of memory.
alloc-uninitialized
(alloc-uninitialized dtype ec)(alloc-uninitialized dtype ec options)Allocate an uninitialized buffer. See options for malloc.
alloc-zeros
(alloc-zeros dtype ec)(alloc-zeros dtype ec options)Allocate a buffer of zeros. See options for malloc.
as-native-buffer
(as-native-buffer item)If this item is convertible to a tech.v3.datatype.native_buffer.NativeBuffer return it. Return nil otherwise.
clone-native
(clone-native data options)(clone-native data)Extremely fast clone assuming src is a native buffer. Exception otherwise. See options for malloc.
ensure-native
(ensure-native input outbuf)(ensure-native input)If input is already a native buffer and has the same datatype as output, return input. Else copy input into output and return output.
free
(free data)Free a long ptr. Malloc will do this for you. Calling this is probably a mistake.
malloc
(malloc n-bytes {:keys [resource-type uninitialized? endianness log-level datatype], :or {resource-type :auto}, :as dtype-or-opts})(malloc n-bytes)Malloc memory. If a desired buffer type is needed follow up with set-native-datatype.
- n-bytes - the number of bytes to malloc
- opts - Either a keyword datatype or an options map.
Options:
:resource-type- defaults to:gc- maps to:track-typeintech.v3.resource/trackbut can also be set to nil in which case the data is not tracked this library will not clean it up.:datatype- Datatype - defaults to :int8. Datatype byte width must evenly divide n-bytes.:uninitialized?- do not initialize to zero. Use for perf in very very rare cases.:endianness- Either:little-endianor:big-endian- defaults to platform.:log-level- one of#{:debug :trace :info :warn :error :fatal}or nil if no logging is desired. When enabled allocations and frees will be logged in the same manner astech.jna.
native-buffer->map
(native-buffer->map buf)Convert a native buffer to simple hashmap for printing or logging purposes.
native-buffer->string
(native-buffer->string nbuf off len)(native-buffer->string nbuf)Convert a :int8 native buffer to a java string.
native-buffer-byte-len
(native-buffer-byte-len nb)Get the length, in bytes, of a native buffer.
read-byte
(read-byte native-buffer offset)(read-byte native-buffer)Ad-hoc read a byte at a given offset from a native buffer.
read-double
(read-double native-buffer offset)(read-double native-buffer)Ad-hoc read a double at a given offset from a native buffer. This method is not endian-aware.
read-float
(read-float native-buffer offset)(read-float native-buffer)Ad-hoc read a float at a given offset from a native buffer. This method is not endian-aware.
read-int
(read-int native-buffer offset)(read-int native-buffer)Ad-hoc read an integer at a given offset from a native buffer. This method is not endian-aware.
read-long
(read-long native-buffer offset)(read-long native-buffer)Ad-hoc read a long at a given offset from a native buffer. This method is not endian-aware.
read-short
(read-short native-buffer offset)(read-short native-buffer)Ad-hoc read a short at a given offset from a native buffer. This method is not endian-aware.
set-endianness
(set-endianness item endianness)Convert a native buffer to simple hashmap for printing or logging purposes.
set-native-datatype
(set-native-datatype item datatype)Set the datatype of a native buffer. n-elems will be recalculated.
set-parent
(set-parent buf new-parent)Return a new native-buffer that references the same data but with a different parent object.
wrap-address
(wrap-address address n-bytes datatype endianness gc-obj)(wrap-address address n-bytes gc-obj)(wrap-address address n-bytes)Wrap a long interger address with a native buffer. gc-obj, if provided will be linked to the native buffer such that gc-obj will not be garbage collected before native buffer is garbage collected.
write-int
(write-int native-buffer offset val)Ad-hoc write an integer at a given offset from a native buffer. This method is not endian-aware.
write-long
(write-long native-buffer offset val)Ad-hoc write an integer at a given offset from a native buffer. This method is not endian-aware.