1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
/* Copyright (c) 2007 James Antill -- See LICENSE file for terms. */
#ifndef USTR_MAIN_INTERNAL_H
#define USTR_MAIN_INTERNAL_H 1
#ifndef USTR_MAIN_H
# error " You should include ustr-main.h before this file, or just ustr.h"
#endif
#include <errno.h> /* EDOM, EILSEQ, ERANGE, hopefully ENOMEM, etc. */
#ifdef ENOMEM
# define USTR__ENOMEM ENOMEM
#else
# define USTR__ENOMEM EDOM /* ENOMEM isn't in ISO 9899:1999, *sigh* */
#endif
#ifdef EINVAL
# define USTR__EINVAL EINVAL
#else
# define USTR__EINVAL ERANGE /* EINVAL isn't in ISO 9899:1999, *sigh* */
#endif
/* default sized is 1 byte... */
#define USTR__DUPX_DEF \
USTR_CONF_HAS_SIZE, USTR_CONF_REF_BYTES, \
USTR_CONF_EXACT_BYTES, USTR_FALSE
#define USTR__DUPX_FROM(x) \
(ustr_alloc(x) ? \
(ustr_sized(x) ? ustr__sz_get(x) : 0) : USTR_CONF_HAS_SIZE), \
(ustr_alloc(x) ? USTR__REF_LEN(x) : USTR_CONF_REF_BYTES), \
(ustr_alloc(x) ? ustr_exact(x) : USTR_CONF_EXACT_BYTES), ustr_enomem(x)
#define USTR__ASSERT_MALLOC_CHECK_MEM(p, s1) ((p) || \
USTR_CNTL_MALLOC_CHECK_MEM_USTR(s1))
USTR_CONF_e_PROTO int ustr__dupx_cmp_eq(size_t, size_t, int, int,
size_t, size_t, int, int)
USTR__COMPILE_ATTR_CONST() USTR__COMPILE_ATTR_WARN_UNUSED_RET();
USTR_CONF_e_PROTO size_t ustr__sz_get(const struct Ustr *)
USTR__COMPILE_ATTR_PURE() USTR__COMPILE_ATTR_WARN_UNUSED_RET()
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO size_t ustr__nb(size_t num)
USTR__COMPILE_ATTR_CONST() USTR__COMPILE_ATTR_WARN_UNUSED_RET();
USTR_CONF_e_PROTO
int ustrp__assert_valid(int, const struct Ustr *)
USTR__COMPILE_ATTR_PURE() USTR__COMPILE_ATTR_WARN_UNUSED_RET()
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO
size_t ustrp__assert_valid_subustr(int, const struct Ustr *, size_t, size_t)
USTR__COMPILE_ATTR_PURE() USTR__COMPILE_ATTR_WARN_UNUSED_RET()
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO void ustr__embed_val_set(unsigned char *, size_t, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO int ustr__ref_set(struct Ustr *, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO void ustr__len_set(struct Ustr *s1, size_t len)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO void ustr__sz_set(struct Ustr *, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO int ustr__ref_add(struct Ustr *)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO size_t ustr__ref_del(struct Ustr *s1)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO void ustrp__free(struct Ustr_pool *, struct Ustr *);
USTR_CONF_e_PROTO
void ustrp__sc_free2(struct Ustr_pool *p, struct Ustr **ps1, struct Ustr *s2)
USTR__COMPILE_ATTR_NONNULL_L((2, 3));
USTR_CONF_e_PROTO size_t ustr__ns(size_t num)
USTR__COMPILE_ATTR_CONST() USTR__COMPILE_ATTR_WARN_UNUSED_RET();
USTR_CONF_e_PROTO void ustr__terminate(unsigned char *, int, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO
struct Ustr *ustrp__dupx_undef(struct Ustr_pool *, size_t, size_t, int, int,
size_t)
USTR__COMPILE_ATTR_WARN_UNUSED_RET();
USTR_CONF_e_PROTO
int ustrp__rw_realloc(struct Ustr_pool *, struct Ustr **, int, size_t, size_t)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO void ustr__memcpy(struct Ustr *, size_t, const void *,size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO void ustr__memset(struct Ustr *, size_t, int, size_t)
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO int ustrp__realloc(struct Ustr_pool *, struct Ustr **, size_t)
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO int ustr__rw_mod(struct Ustr *, size_t, size_t *, size_t *,
size_t *, size_t *, int *)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO int ustrp__del(struct Ustr_pool *, struct Ustr **, size_t)
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO
int ustrp__del_subustr(struct Ustr_pool *, struct Ustr **, size_t, size_t)
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO
struct Ustr *ustrp__dupx_empty(struct Ustr_pool *, size_t, size_t, int, int)
USTR__COMPILE_ATTR_WARN_UNUSED_RET();
USTR_CONF_e_PROTO
struct Ustr *ustrp__dupx_buf(struct Ustr_pool *, size_t, size_t, int, int,
const void *, size_t)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((6));
USTR_CONF_e_PROTO
struct Ustr *ustrp__dup(struct Ustr_pool *, const struct Ustr *)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO
struct Ustr *ustrp__dupx(struct Ustr_pool *, size_t, size_t, int ,
int, const struct Ustr *)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((6));
USTR_CONF_e_PROTO
struct Ustr *ustrp__dupx_subustr(struct Ustr_pool *,
size_t, size_t, int, int,
const struct Ustr *, size_t, size_t)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((6));
USTR_CONF_e_PROTO
struct Ustr *ustrp__dup_subustr(struct Ustr_pool *,
const struct Ustr *, size_t, size_t)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO
struct Ustr *ustrp__dupx_rep_chr(struct Ustr_pool *, size_t, size_t, int, int,
char, size_t)
USTR__COMPILE_ATTR_WARN_UNUSED_RET();
USTR_CONF_e_PROTO
int ustrp__add_undef(struct Ustr_pool *, struct Ustr **, size_t)
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO
int ustrp__add_buf(struct Ustr_pool *, struct Ustr **, const void *, size_t)
USTR__COMPILE_ATTR_NONNULL_L((2, 3));
USTR_CONF_e_PROTO int ustr__treat_as_buf(const struct Ustr *, size_t, size_t)
USTR__COMPILE_ATTR_PURE() USTR__COMPILE_ATTR_WARN_UNUSED_RET()
USTR__COMPILE_ATTR_NONNULL_A();
USTR_CONF_e_PROTO
int ustrp__add(struct Ustr_pool *, struct Ustr **, const struct Ustr *)
USTR__COMPILE_ATTR_NONNULL_L((2, 3));
USTR_CONF_e_PROTO
int ustrp__add_subustr(struct Ustr_pool *, struct Ustr **,
const struct Ustr *, size_t, size_t)
USTR__COMPILE_ATTR_NONNULL_L((2, 3));
USTR_CONF_e_PROTO
int ustrp__add_rep_chr(struct Ustr_pool *p, struct Ustr **, char, size_t)
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO void ustrp__sc_del(struct Ustr_pool *, struct Ustr **)
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO void ustrp__sc_free(struct Ustr_pool *, struct Ustr **)
USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO int ustrp__sc_ensure_owner(struct Ustr_pool *, struct Ustr **)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((2));
USTR_CONF_e_PROTO char *ustrp__sc_wstr(struct Ustr_pool *, struct Ustr **)
USTR__COMPILE_ATTR_WARN_UNUSED_RET() USTR__COMPILE_ATTR_NONNULL_L((2));
#endif
|