.. rubric:: ``spicy::AddressFamily``
   :name: spicy_addressfamily

Specifies an address' IP family.

.. spicy-code::

    type AddressFamily = enum {
        IPv4, # IP4 address
        IPv6  # IPv6 address
    };

.. rubric:: ``spicy::Base64Stream``
   :name: spicy_base64stream

Captures the state of base64 encoding/decoding for the corresponding library functions.

.. rubric:: ``spicy::BitOrder``
   :name: spicy_bitorder

Specifies the bit order for individual bit ranges inside a bitfield.

.. spicy-code::

    type BitOrder = enum {
        LSB0,     # bits are interpreted as lowest-significant-bit coming first
        MSB0      # bits are interpreted as most-significant-bit coming first
    };

.. rubric:: ``spicy::ByteOrder``
   :name: spicy_byteorder

Specifies byte order for data operations.

.. spicy-code::

    type ByteOrder = enum {
        Little,   # data is in little-endian byte order
        Big,      # data is in big-endian byte order
        Network,  # data is in network byte order (same a big endian)
        Host      # data is in byte order of the host we are executing on
    };

.. rubric:: ``spicy::Charset``
   :name: spicy_charset

Specifies the character set for bytes encoding/decoding.

.. spicy-code::

    type Charset = enum {
        ASCII,    # ASCII encoding
        UTF8,     # UTF8 encoding
        UTF16LE,  # UTF16 little endian encoding
        UTF16BE,  # UTF16 big endian encoding
    };

.. rubric:: ``spicy::DecodeErrorStrategy``
   :name: spicy_decodeerrorstrategy

Specifies how data is handled that's not representable in a specified character set.

.. spicy-code::

    type DecodeErrorStrategy = enum {
        IGNORE,   # data is skipped but processing continues
        REPLACE,  # data is replaced with a valid place-holder and processing continues
        STRICT    # runtime error is triggered
    };

.. rubric:: ``spicy::MatchState``
   :name: spicy_matchstate

Captures state for incremental regular expression matching.

.. rubric:: ``spicy::StreamStatistics``
   :name: spicy_streamstatistics

Captures stream statistics.

.. rubric:: ``spicy::Protocol``
   :name: spicy_protocol

Specifies a transport-layer protocol.

.. spicy-code::

    type Protocol = enum {
        TCP,
        UDP,
        ICMP
    };

.. rubric:: ``spicy::RealType``
   :name: spicy_realtype

Specifies the type of a real value.

.. spicy-code::

    type RealType = enum {
        IEEE754_Single, # single precision in IEEE754 format
        IEEE754_Double  # double precision in IEEE754 format
    };

.. rubric:: ``spicy::ReassemblerPolicy``
   :name: spicy_reassemblerpolicy

Specifies the policy for a sink's reassembler when encountering overlapping data.

.. spicy-code::

    type ReassemblerPolicy = enum {
        First # take the original data & discard the new data
    };

.. rubric:: ``spicy::Side``
   :name: spicy_side

Specifies a side an operation should operate on.

.. spicy-code::

    type Side = enum {
        Left,    # operate on left side
        Right,   # operate on right side
        Both     # operate on both sides
    };

.. rubric:: ``spicy::Direction``
   :name: spicy_direction

Specifies direction of a search.

.. spicy-code::

    type Direction = enum {
        Forward, # search forward
        Backward, # search backward
    };

.. rubric:: ``spicy::ZlibStream``
   :name: spicy_zlibstream

Captures the state of gzip decompression for the corresponding library functions.

