aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxutil/marshal.h
blob: 9a9d465b9b5358a38dabf3ebd8fc445c4bc48082 (plain)
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
/* $Id: marshal.h,v 1.1 2003/10/17 15:48:43 mjw Exp $ */
#ifndef _SP_MARSHAL_H_
#define _SP_MARSHAL_H_

#include "iostream.h"

/** A 16-bit uint in network order, e.g. a port number. */
typedef uint16_t net16_t;

/** A 32-bit uint in network order, e.g. an IP address. */
typedef uint32_t net32_t;

extern int marshal_flush(IOStream *io);

extern int marshal_bytes(IOStream *io, void *s, uint32_t s_n);
extern int unmarshal_bytes(IOStream *io, void *s, uint32_t s_n);

extern int marshal_uint8(IOStream *io, uint8_t x);
extern int unmarshal_uint8(IOStream *io, uint8_t *x);

extern int marshal_uint16(IOStream *io, uint16_t x);
extern int unmarshal_uint16(IOStream *io, uint16_t *x);

extern int marshal_uint32(IOStream *io, uint32_t x);
extern int unmarshal_uint32(IOStream *io, uint32_t *x);

extern int marshal_int32(IOStream *io, int32_t x);
extern int unmarshal_int32(IOStream *io, int32_t *x);

extern int marshal_uint64(IOStream *io, uint64_t x);
extern int unmarshal_uint64(IOStream *io, uint64_t *x);

extern int marshal_net16(IOStream *io, net16_t x);
extern int unmarshal_net16(IOStream *io, net16_t *x);

extern int marshal_net32(IOStream *io, net32_t x);
extern int unmarshal_net32(IOStream *io, net32_t *x);

extern int marshal_string(IOStream *io, char *s, uint32_t s_n);
extern int unmarshal_string(IOStream *io, char *s, uint32_t s_n);
extern int unmarshal_new_string(IOStream *io, char **s, uint32_t *s_n);

#endif /* ! _SP_MARSHAL_H_ */