std.lib.bin.buffer

+buffer-functions+

+buffer-lookup+

+buffer-records+

+buffer-type

+endian+

+endian-native+

buffer

added in 3.0

(buffer len-or-elems)(buffer len-or-elems {:keys [type direct endian convert wrap], :or {type :byte, direct false, endian +endian-native+, convert true, wrap false}})

either creates or wraps a byte buffer of a given type

(buffer 10) => java.nio.ByteBuffer

(buffer 10 {:type :float :convert false}) => java.nio.ByteBuffer

(buffer 10 {:type :float :direct true}) => java.nio.FloatBuffer

buffer-convert

added in 3.0

(buffer-convert buff type)

converts an nio ByteBuffer to another type

(buffer-convert (java.nio.ByteBuffer/allocate 8) :double) => java.nio.DoubleBuffer

buffer-create

added in 3.0

(buffer-create type elems length direct endian convert)

creates a byte buffer

(buffer-create :double (double-array 1 2 3 4) 4 true :little true) => java.nio.DoubleBuffer

(buffer-create :double (double-array 1 2 3 4) 4 false :big false) => java.nio.ByteBuffer

buffer-get

added in 3.0

(buffer-get buff arr)(buffer-get buff arr type)

utility for getting arrays from buffers (def -arr- (double-array 2))

(buffer-get (double-buffer 1 2) -arr-) (seq -arr-) => 1.0 2.0

buffer-primitive

added in 3.0

(buffer-primitive buff)(buffer-primitive buff tag)

returns the corresponding type associated with the instance

(buffer-primitive (double-buffer 0) :class) => Double/TYPE

buffer-put

added in 3.0

(buffer-put buff arr)(buffer-put buff arr type)

utility for putting arrays into buffers

(buffer-put (double-buffer 2) (double-array 1 2))

buffer-read

added in 3.0

(buffer-read buff)(buffer-read buff arr)

reads primitive array from buffer

(def -buf- (buffer 4)) (def -out- (int-array 1))

(do (.put ^java.nio.ByteBuffer -buf- 3 (byte 1)) (buffer-read -buf- -out-) (first -out-)) => 1

buffer-type

added in 3.0

(buffer-type cls)(buffer-type cls tag)

returns the corresponding type associated with the class

(buffer-type java.nio.FloatBuffer :type) => :float

(buffer-type java.nio.FloatBuffer :array-fn) => float-array

buffer-type-raw

(buffer-type-raw cls)(buffer-type-raw cls tag)

helper function for std.lib.bin.buffer/buffer-type

buffer-write

added in 3.0

(buffer-write buff arr)

writes primitive array to a buffer

(def ^java.nio.ByteBuffer -buf- (buffer 16)) (buffer-write -buf- (int-array 1 2 3 4))

(.get -buf- 3) (.get -buf- 7) (.get -buf- 11) (.get -buf- 15) => 1 2 3 4

byte-buffer

(byte-buffer len-or-elems)(byte-buffer len-or-elems {:keys [type direct endian convert], :as opts})

byte-order

added in 3.0

(byte-order obj)

converts keyword to ByteOrder

(byte-order :little) => java.nio.ByteOrder/LITTLE_ENDIAN

char-buffer

(char-buffer len-or-elems)(char-buffer len-or-elems {:keys [type direct endian convert], :as opts})

create-buffer-functions

macro

added in 3.0

(create-buffer-functions types)

creates functions for buffer types

(macroexpand-1 ’(create-buffer-functions (:byte)))

create-buffer-records

macro

added in 3.0

(create-buffer-records types)

creates records for buffer types

(macroexpand-1 ’(create-buffer-records (Byte identity)))

double-buffer

(double-buffer len-or-elems)(double-buffer len-or-elems {:keys [type direct endian convert], :as opts})

float-buffer

(float-buffer len-or-elems)(float-buffer len-or-elems {:keys [type direct endian convert], :as opts})

int-buffer

(int-buffer len-or-elems)(int-buffer len-or-elems {:keys [type direct endian convert], :as opts})

long-buffer

(long-buffer len-or-elems)(long-buffer len-or-elems {:keys [type direct endian convert], :as opts})

short-buffer

(short-buffer len-or-elems)(short-buffer len-or-elems {:keys [type direct endian convert], :as opts})