hex::Decoder
Decoder
#include <icy/hex.h>Inherits:
Decoder
Hex decoder.
Public Attributes
| Return | Name | Description |
|---|---|---|
char | lastbyte |
lastbyte
char lastbytePublic Methods
| Return | Name | Description |
|---|---|---|
Decoder inline | ||
ssize_t | decode virtual inline | Decodes hex-encoded input to binary. Whitespace in the input is ignored. A trailing unpaired nibble is buffered and prepended on the next call. |
ssize_t | finalize virtual inline | No-op finalizer; hex decoding has no pending output state. |
bool | readnext inline | Reads the next non-whitespace character from inbuf, prepending any buffered lastbyte before consuming from the stream. |
int | nybble inline | Converts an ASCII hex character to its 4-bit integer value. |
bool | iswspace inline | Returns 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
inbufHex-encoded input buffer.nreadNumber of bytes to read from inbuf.outbufDestination 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
inbufInput buffer.nreadTotal bytes in inbuf.rposCurrent read position; advanced on each consumed byte.cOutput: 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
nASCII character ('0'-'9', 'a'-'f', 'A'-'F').
Returns
Integer value in the range [0, 15].
Exceptions
std::runtime_errorif 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
cCharacter to test.
Returns
true if c is whitespace.
