.. _spicy_addressfamily:

.. rubric:: ``spicy::AddressFamily``

Specifies an address' IP family.

.. spicy-code::

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

.. _spicy_base64stream:

.. rubric:: ``spicy::Base64Stream``

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

.. _spicy_bitorder:

.. rubric:: ``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
    };

.. _spicy_byteorder:

.. rubric:: ``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
    };

.. _spicy_charset:

.. rubric:: ``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
    };

.. _spicy_decodeerrorstrategy:

.. rubric:: ``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
    };

.. _spicy_matchstate:

.. rubric:: ``spicy::MatchState``

Captures state for incremental regular expression matching.

.. _spicy_streamstatistics:

.. rubric:: ``spicy::StreamStatistics``

Captures stream statistics.

.. _spicy_protocol:

.. rubric:: ``spicy::Protocol``

Specifies a transport-layer protocol.

.. spicy-code::

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

.. _spicy_realtype:

.. rubric:: ``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
    };

.. _spicy_reassemblerpolicy:

.. rubric:: ``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
    };

.. _spicy_side:

.. rubric:: ``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
    };

.. _spicy_direction:

.. rubric:: ``spicy::Direction``

Specifies direction of a search.

.. spicy-code::

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

.. _spicy_zlibstream:

.. rubric:: ``spicy::ZlibStream``

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

