docs / stdlib / wire

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

codec

  1. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. FiberLocal
  5. Lock
  6. Mutex
  7. RwLock
  8. Semaphore
  9. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. RecoverableException
  4. Throwable
  5. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. Blake3
  2. DefaultHasher
  3. Hash
  4. MD5
  5. Sha1
  6. Sha256
  7. SipHash
  8. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. IpAddress
  2. Server
  3. ServerBuilder
  4. SocketAddress
  5. TcpListener
  6. TcpStream
  7. UdpSocket

io / net / dns

  1. Dns

io / net / tls

  1. TlsConnection
  2. TlsListener

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. Decompressor
  3. Encoder
  4. Schema
  5. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream

xpu / mesh

  1. MeshSimplifier

Encoder<T>

cajeta.wire.Encoder — bidirectional wire codec for values of type T: turns a T into a heap-owned byte buffer and reconstructs a T from one. Implement it once per serialization format and hand instances around wherever a value crosses a process, file, or socket boundary. The two halves are inverses — decode(encode(value)) yields a value equal to the original — and both directions transfer ownership of their heap result (#) to the caller.

import cajeta.wire.Encoder;

// A concrete little-endian Encoder<int32>.
public final class Int32Codec implements Encoder<int32> {
    public Int32Codec() { }

    public #int8[] encode(int32 value) {
        int8[] b = heap int8[4];
        b[0] = (int8) (value & 0xFF);
        b[1] = (int8) ((value >> 8) & 0xFF);
        b[2] = (int8) ((value >> 16) & 0xFF);
        b[3] = (int8) ((value >> 24) & 0xFF);
        return #b;
    }

    public #int32 decode(int8[] bytes) {
        int32 b0 = ((int32) bytes[0]) & 0xFF;
        int32 b1 = ((int32) bytes[1]) & 0xFF;
        int32 b2 = ((int32) bytes[2]) & 0xFF;
        int32 b3 = ((int32) bytes[3]) & 0xFF;
        int32 r = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24);
        return #r;
    }
}

Methods

Signature
#int8[] encode(T value)Serialize value into a freshly allocated, caller-owned byte buffer
#T decode(int8[] bytes)Reconstruct a T from its encoded bytes; inverse of encode

⚑ = @EntryPoint

See also

Source: docs/stdlib/wire/Encoder.md · 1 min read · 136 words