| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | /*	This file is part of the software similarity tester SIM.	Written by Dick Grune, Vrije Universiteit, Amsterdam.	$Id: tokenarray.c,v 1.2 2001/11/13 12:55:59 dick Exp $*/#include	<malloc.h>#include	"error.h"#include	"lex.h"#include	"tokenarray.h"#define	TK_INCR		10000		/* increment of token array size */TOKEN *TokenArray;			/* to be filled by malloc */static unsigned int tk_size;		/* size of TokenArray[] */static unsigned int tk_free;		/* next free position in TokenArray[] */voidInitTokenArray(void) {	tk_size = TK_INCR;	TokenArray = (TOKEN *)malloc(sizeof (TOKEN) * tk_size);	if (!TokenArray) fatal("out of memory");	tk_free = 1;		/* don't use position 0 */}voidStoreToken(void) {	if (tk_free == tk_size) {		/* allocated array is full; try to increase its size */		unsigned int new_size = tk_size + TK_INCR;		register TOKEN *new_array = (TOKEN *)realloc(			(char *)TokenArray,			sizeof (TOKEN) * new_size		);		if (new_size < tk_free)			fatal("internal error: TK_INCR causes numeric overflow");		if (!new_array) {			/* we failed */			fatal("out of memory");		}		TokenArray = new_array, tk_size = new_size;	}	/* now we are sure there is room enough */	TokenArray[tk_free++] = lex_token;}unsigned intTextLength(void) {	return tk_free;}
 |