diff options
| author | Mattias Andrée <maandree@kth.se> | 2016-03-03 23:02:59 +0100 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2016-03-03 23:02:59 +0100 |
| commit | d6987458f21cf1890045f2606d0f8ec4d2225b44 (patch) | |
| tree | 90afabbea01b01c4dedcb41748eb534ce04fbf77 /src/internals.h | |
| parent | zsets: minor optimisation (diff) | |
| download | libzahl-d6987458f21cf1890045f2606d0f8ec4d2225b44.tar.gz libzahl-d6987458f21cf1890045f2606d0f8ec4d2225b44.tar.bz2 libzahl-d6987458f21cf1890045f2606d0f8ec4d2225b44.tar.xz | |
Cleanup and fix bug in ztrunc
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/internals.h')
| -rw-r--r-- | src/internals.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/internals.h b/src/internals.h index 2ab5cc7..6d05bc2 100644 --- a/src/internals.h +++ b/src/internals.h @@ -1,6 +1,9 @@ /* See LICENSE file for copyright and license details. */ #include "../zahl.h" +#include <string.h> +#include <stdlib.h> + #define BITS_PER_CHAR 32 #define LB_BITS_PER_CHAR 5 #define ZAHL_CHAR_MAX UINT32_MAX @@ -43,6 +46,23 @@ extern z_t libzahl_tmp_divmod_ds[BITS_PER_CHAR]; extern jmp_buf libzahl_jmp_buf; extern int libzahl_set_up; -#define FAILURE_JUMP() (longjmp(libzahl_jmp_buf, 1)) +#define FAILURE_JUMP() longjmp(libzahl_jmp_buf, 1) +#define zmemcpy(d, s, n) memcpy(d, s, (n) * sizeof(zahl_char_t)) +#define zmemmove(d, s, n) memmove(d, s, (n) * sizeof(zahl_char_t)) +#define zmemset(a, v, n) memset(a, v, (n) * sizeof(zahl_char_t)) +#define zmemcmp(a, b, n) memcmp(a, b, (n) * sizeof(zahl_char_t)) + +#define SET_SIGNUM(a, signum) ((a)->sign = (signum)) +#define SET(a, b) do { if (a != b) zset(a, b)} while (0) + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#define SET_SIGNUM(a, signum) ((a)->sign = (signum)) +static inline void +zahl_realloc(z_t *p, size_t n) +{ + p->chars = realloc(p->chars, n * sizeof(zahl_char_t)); + if (!p->chars) + FAILURE_JUMP(); + p->alloced = n; +} |
