Base module

hex::Decoder

Hex decoder.

Decoder

#include <icy/hex.h>

Inherits: Decoder

Hex decoder.

Public Attributes

ReturnNameDescription
charlastbyte

lastbyte

char lastbyte

Public Methods

ReturnNameDescription
Decoder inline
ssize_tdecode virtual inlineDecodes hex-encoded input to binary. Whitespace in the input is ignored. A trailing unpaired nibble is buffered and prepended on the next call.
ssize_tfinalize virtual inlineNo-op finalizer; hex decoding has no pending output state.
boolreadnext inlineReads the next non-whitespace character from inbuf, prepending any buffered lastbyte before consuming from the stream.
intnybble inlineConverts an ASCII hex character to its 4-bit integer value.
booliswspace inlineReturns true if c is an ASCII whitespace character (space, CR, tab, LF).

Decoder

inline

inline Decoder()

decode

virtual inline

virtual inline ssize_t decode(const char * inbuf, size_t nread, char * outbuf)

Decodes hex-encoded input to binary. Whitespace in the input is ignored. A trailing unpaired nibble is buffered and prepended on the next call.

Parameters

  • inbuf Hex-encoded input buffer.

  • nread Number of bytes to read from inbuf.

  • outbuf Destination buffer; must have capacity >= nread / 2.

Returns

Number of decoded bytes written to outbuf.


finalize

virtual inline

virtual inline ssize_t finalize(char *)

No-op finalizer; hex decoding has no pending output state.

Returns

Always 0.


readnext

inline

inline bool readnext(const char * inbuf, size_t nread, size_t & rpos, char & c)

Reads the next non-whitespace character from inbuf, prepending any buffered lastbyte before consuming from the stream.

Parameters

  • inbuf Input buffer.

  • nread Total bytes in inbuf.

  • rpos Current read position; advanced on each consumed byte.

  • c Output: the next non-whitespace character.

Returns

true if more input remains after c was read, false otherwise.


nybble

inline

inline int nybble(const int n)

Converts an ASCII hex character to its 4-bit integer value.

Parameters

  • n ASCII character ('0'-'9', 'a'-'f', 'A'-'F').

Returns

Integer value in the range [0, 15].

Exceptions

  • std::runtime_error if n is not a valid hex character.

iswspace

inline

inline bool iswspace(const char c)

Returns true if c is an ASCII whitespace character (space, CR, tab, LF).

Parameters

  • c Character to test.

Returns

true if c is whitespace.