1 /**
2  * @file
3  * @brief Message IO functions - handles size buffers
4  */
5 
6 /*
7 Copyright (C) 1997-2001 Id Software, Inc.
8 
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 
18 See the GNU General Public License for more details.
19 
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23 
24 */
25 
26 #include "common.h"
27 #include "msg.h"
28 
SZ_Init(sizebuf_t * buf,byte * data,int length)29 void SZ_Init (sizebuf_t* buf, byte*  data, int length)
30 {
31 	OBJZERO(*buf);
32 	buf->data = data;
33 	buf->maxsize = length;
34 }
35 
SZ_Clear(sizebuf_t * buf)36 void SZ_Clear (sizebuf_t* buf)
37 {
38 	buf->cursize = 0;
39 }
40 
SZ_GetSpace(sizebuf_t * buf,int length)41 static void* SZ_GetSpace (sizebuf_t* buf, int length)
42 {
43 	void* data;
44 
45 	if (buf->cursize + length > buf->maxsize)
46 		Com_Error(ERR_FATAL, "SZ_GetSpace: overflow");
47 
48 	data = buf->data + buf->cursize;
49 	buf->cursize += length;
50 
51 	return data;
52 }
53 
SZ_Write(sizebuf_t * buf,const void * data,int length)54 void SZ_Write (sizebuf_t* buf, const void* data, int length)
55 {
56 	memcpy(SZ_GetSpace(buf, length), data, length);
57 }
58