24 #define READ_BUFSIZE (8)
30 #define WRITE_BUFSIZE (8)
45 const uint8_t **source,
size_t *sourcelen,
46 uint8_t **dest,
size_t *destlen);
49 const uint8_t **source,
size_t *sourcelen,
50 uint8_t **dest,
size_t *destlen);
55 const uint8_t **source,
size_t *sourcelen,
56 uint8_t **dest,
size_t *destlen);
59 uint32_t ucs4, uint8_t **dest,
size_t *destlen);
61 uint32_t ucs4, uint8_t **s,
size_t *
len);
63 const uint8_t *s,
size_t len, uint32_t *ucs4);
73 static uint16_t ascii;
79 "US-ASCII",
SLEN(
"US-ASCII"));
82 if (ascii != 0 && ascii == match)
166 const uint8_t **source,
size_t *sourcelen,
167 uint8_t **dest,
size_t *destlen)
186 for (len = 0; len < c->
write_len; len++) {
199 while (*sourcelen > 0) {
205 while (towritelen > 0) {
221 for (len = 0; len < towritelen; len++)
285 const uint8_t **source,
size_t *sourcelen,
286 uint8_t **dest,
size_t *destlen)
296 *((uint32_t *) (
void *) *dest) =
306 if (*destlen < c->read_len * 4) {
319 while (*sourcelen > 0) {
321 source, sourcelen, dest, destlen);
379 const uint8_t **source,
size_t *sourcelen,
380 uint8_t **dest,
size_t *destlen)
390 ucs4, dest, destlen);
412 0xFFFD, dest, destlen);
437 uint32_t ucs4, uint8_t **dest,
size_t *destlen)
471 uint32_t ucs4, uint8_t **s,
size_t *
len)
507 const uint8_t *s,
size_t len, uint32_t *ucs4)
static parserutils_error charset_ascii_from_ucs4(charset_ascii_codec *c, uint32_t ucs4, uint8_t **s, size_t *len)
Convert a UCS4 (host endian) character to US-ASCII.
Codec factory component definition.
static parserutils_error charset_ascii_codec_encode(parserutils_charset_codec *codec, const uint8_t **source, size_t *sourcelen, uint8_t **dest, size_t *destlen)
Encode a chunk of UCS-4 (big endian) data into US-ASCII.
uint32_t write_buf[WRITE_BUFSIZE]
Buffer for partial output sequences (encode) (host-endian)
size_t read_len
Character length of read_buf.
static parserutils_error charset_ascii_to_ucs4(charset_ascii_codec *c, const uint8_t *s, size_t len, uint32_t *ucs4)
Convert a US-ASCII character to UCS4 (host endian)
static uint32_t endian_host_to_big(uint32_t host)
parserutils_error(* destroy)(parserutils_charset_codec *codec)
static parserutils_error charset_ascii_codec_destroy(parserutils_charset_codec *codec)
Destroy a US-ASCII codec.
uint32_t read_buf[READ_BUFSIZE]
Buffer for partial output sequences (decode) (host-endian)
parserutils_error(* decode)(parserutils_charset_codec *codec, const uint8_t **source, size_t *sourcelen, uint8_t **dest, size_t *destlen)
const parserutils_charset_handler charset_ascii_codec_handler
static parserutils_error charset_ascii_codec_output_decoded_char(charset_ascii_codec *c, uint32_t ucs4, uint8_t **dest, size_t *destlen)
Output a UCS-4 character (big endian)
parserutils_charset_codec_errormode errormode
error mode
parserutils_charset_codec base
Base class.
static parserutils_error charset_ascii_codec_decode(parserutils_charset_codec *codec, const uint8_t **source, size_t *sourcelen, uint8_t **dest, size_t *destlen)
Decode a chunk of US-ASCII data into UCS-4 (big endian)
static parserutils_error charset_ascii_codec_read_char(charset_ascii_codec *c, const uint8_t **source, size_t *sourcelen, uint8_t **dest, size_t *destlen)
Read a character from US-ASCII to UCS-4 (big endian)
static parserutils_error charset_ascii_codec_reset(parserutils_charset_codec *codec)
Clear a US-ASCII codec's encoding state.
static parserutils_error charset_ascii_codec_create(const char *charset, parserutils_charset_codec **codec)
Create a US-ASCII codec.
static uint32_t endian_big_to_host(uint32_t big)
static bool charset_ascii_codec_handles_charset(const char *charset)
Determine whether this codec handles a specific charset.
struct charset_ascii_codec charset_ascii_codec
US-ASCII charset codec.
struct parserutils_charset_codec::@3 handler
Vtable for handler code.
parserutils_error(* encode)(parserutils_charset_codec *codec, const uint8_t **source, size_t *sourcelen, uint8_t **dest, size_t *destlen)
Abort processing if unrepresentable character encountered.
Core charset codec definition; implementations extend this.
parserutils_error(* reset)(parserutils_charset_codec *codec)
uint16_t parserutils_charset_mibenum_from_name(const char *alias, size_t len)
Retrieve the MIB enum value assigned to an encoding name.
size_t write_len
Character length of write_buf.