aboutsummaryrefslogtreecommitdiffstats
path: root/src/zsave.c
blob: 07d43fa341920c24b5b09b5a4afafe900ea9529f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* See LICENSE file for copyright and license details. */
#include "internals.h"


size_t
zsave(z_t a, void *buffer)
{
	if (buffer) {
		char *buf = buffer;
		*((int *)buf)    = a->sign, buf += sizeof(int);
		*((size_t *)buf) = a->used, buf += sizeof(size_t);
		if (EXPECT(!zzero(a), 1))
			zmemcpy((zahl_char_t *)buf, a->chars, a->used);
	}
	return sizeof(int) + sizeof(size_t) + (zzero(a) ? 0 : a->used * sizeof(zahl_char_t));
}