ustr-b.h
#ifndef USTR_B_H
#define USTR_B_H 1
#include "ustr-main.h"
#if USTR_CONF_HAVE_STDINT_H
USTR_CONF_EI_PROTO int ustr_add_b_uint16(struct Ustr **, uint_least16_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO int ustr_add_b_uint32(struct Ustr **, uint_least32_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO int ustr_add_b_uint64(struct Ustr **, uint_least64_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO uint_least16_t ustr_parse_b_uint16(const struct Ustr*,size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO uint_least32_t ustr_parse_b_uint32(const struct Ustr*,size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO uint_least64_t ustr_parse_b_uint64(const struct Ustr*,size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO
int ustrp_add_b_uint16(struct Ustr_pool *, struct Ustrp **, uint_least16_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO
int ustrp_add_b_uint32(struct Ustr_pool *, struct Ustrp **, uint_least32_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO
int ustrp_add_b_uint64(struct Ustr_pool *, struct Ustrp **, uint_least64_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO
uint_least16_t ustrp_parse_b_uint16(const struct Ustrp *, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO
uint_least32_t ustrp_parse_b_uint32(const struct Ustrp *, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_EI_PROTO
uint_least64_t ustrp_parse_b_uint64(const struct Ustrp *, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
#if USTR_CONF_COMPILE_USE_INLINE
USTR_CONF_II_PROTO int ustr_add_b_uint16(struct Ustr **ps1, uint_least16_t data)
{
unsigned char buf[2];
buf[1] = data & 0xFF; data >>= 8;
buf[0] = data & 0xFF;
return (ustr_add_buf(ps1, buf, sizeof(buf)));
}
USTR_CONF_II_PROTO int ustr_add_b_uint32(struct Ustr **ps1, uint_least32_t data)
{
unsigned char buf[4];
buf[3] = data & 0xFF; data >>= 8;
buf[2] = data & 0xFF; data >>= 8;
buf[1] = data & 0xFF; data >>= 8;
buf[0] = data & 0xFF;
return (ustr_add_buf(ps1, buf, sizeof(buf)));
}
USTR_CONF_II_PROTO int ustr_add_b_uint64(struct Ustr **ps1, uint_least64_t data)
{
unsigned char buf[8];
buf[7] = data & 0xFF; data >>= 8;
buf[6] = data & 0xFF; data >>= 8;
buf[5] = data & 0xFF; data >>= 8;
buf[4] = data & 0xFF; data >>= 8;
buf[3] = data & 0xFF; data >>= 8;
buf[2] = data & 0xFF; data >>= 8;
buf[1] = data & 0xFF; data >>= 8;
buf[0] = data & 0xFF;
return (ustr_add_buf(ps1, buf, sizeof(buf)));
}
USTR_CONF_II_PROTO
uint_least16_t ustr_parse_b_uint16(const struct Ustr *s1, size_t off)
{
uint_least16_t ret = 0;
const unsigned char *ptr = 0;
size_t len = ustr_len(s1);
USTR_ASSERT_RET(off <= len, 0);
if (len < 2) return (ret);
if ((len - 2) < off) return (ret);
ptr = (const unsigned char *) ustr_cstr(s1);
ptr += off;
ret += *ptr++; ret <<= 8;
ret += *ptr++;
return (ret);
}
USTR_CONF_II_PROTO
uint_least32_t ustr_parse_b_uint32(const struct Ustr *s1, size_t off)
{
uint_least32_t ret = 0;
const unsigned char *ptr = 0;
size_t len = ustr_len(s1);
USTR_ASSERT_RET(off <= len, 0);
if (len < 4) return (ret);
if ((len - 4) < off) return (ret);
ptr = (const unsigned char *) ustr_cstr(s1);
ptr += off;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++;
return (ret);
}
USTR_CONF_II_PROTO
uint_least64_t ustr_parse_b_uint64(const struct Ustr *s1, size_t off)
{
uint_least64_t ret = 0;
const unsigned char *ptr = 0;
size_t len = ustr_len(s1);
USTR_ASSERT_RET(off <= len, 0);
if (len < 8) return (ret);
if ((len - 8) < off) return (ret);
ptr = (const unsigned char *) ustr_cstr(s1);
ptr += off;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++;
return (ret);
}
USTR_CONF_II_PROTO
int ustrp_add_b_uint16(struct Ustr_pool *p, struct Ustrp **ps1,
uint_least16_t data)
{
unsigned char buf[2];
buf[1] = data & 0xFF; data >>= 8;
buf[0] = data & 0xFF;
return (ustrp_add_buf(p, ps1, buf, sizeof(buf)));
}
USTR_CONF_II_PROTO
int ustrp_add_b_uint32(struct Ustr_pool *p, struct Ustrp **ps1,
uint_least32_t data)
{
unsigned char buf[4];
buf[3] = data & 0xFF; data >>= 8;
buf[2] = data & 0xFF; data >>= 8;
buf[1] = data & 0xFF; data >>= 8;
buf[0] = data & 0xFF;
return (ustrp_add_buf(p, ps1, buf, sizeof(buf)));
}
USTR_CONF_II_PROTO
int ustrp_add_b_uint64(struct Ustr_pool *p, struct Ustrp **ps1,
uint_least64_t data)
{
unsigned char buf[8];
buf[7] = data & 0xFF; data >>= 8;
buf[6] = data & 0xFF; data >>= 8;
buf[5] = data & 0xFF; data >>= 8;
buf[4] = data & 0xFF; data >>= 8;
buf[3] = data & 0xFF; data >>= 8;
buf[2] = data & 0xFF; data >>= 8;
buf[1] = data & 0xFF; data >>= 8;
buf[0] = data & 0xFF;
return (ustrp_add_buf(p, ps1, buf, sizeof(buf)));
}
USTR_CONF_II_PROTO
uint_least16_t ustrp_parse_b_uint16(const struct Ustrp *s1, size_t off)
{
uint_least16_t ret = 0;
const unsigned char *ptr = 0;
size_t len = ustrp_len(s1);
USTR_ASSERT_RET(off <= len, 0);
if (len < 2) return (ret);
if ((len - 2) < off) return (ret);
ptr = (const unsigned char *) ustrp_cstr(s1);
ptr += off;
ret += *ptr++; ret <<= 8;
ret += *ptr++;
return (ret);
}
USTR_CONF_II_PROTO
uint_least32_t ustrp_parse_b_uint32(const struct Ustrp *s1, size_t off)
{
uint_least32_t ret = 0;
const unsigned char *ptr = 0;
size_t len = ustrp_len(s1);
USTR_ASSERT_RET(off <= len, 0);
if (len < 4) return (ret);
if ((len - 4) < off) return (ret);
ptr = (const unsigned char *) ustrp_cstr(s1);
ptr += off;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++;
return (ret);
}
USTR_CONF_II_PROTO
uint_least64_t ustrp_parse_b_uint64(const struct Ustrp *s1, size_t off)
{
uint_least64_t ret = 0;
const unsigned char *ptr = 0;
size_t len = ustrp_len(s1);
USTR_ASSERT_RET(off <= len, 0);
if (len < 8) return (ret);
if ((len - 8) < off) return (ret);
ptr = (const unsigned char *) ustrp_cstr(s1);
ptr += off;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++; ret <<= 8;
ret += *ptr++;
return (ret);
}
#endif
#endif
#endif