Blame libparanoia/isort.h

Packit 45fded
/*
Packit 45fded
 * This file has been modified for the cdrkit suite.
Packit 45fded
 *
Packit 45fded
 * The behaviour and appearence of the program code below can differ to a major
Packit 45fded
 * extent from the version distributed by the original author(s).
Packit 45fded
 *
Packit 45fded
 * For details, see Changelog file distributed with the cdrkit package. If you
Packit 45fded
 * received this file from another source then ask the distributing person for
Packit 45fded
 * a log of modifications.
Packit 45fded
 *
Packit 45fded
 */
Packit 45fded
Packit 45fded
/* @(#)isort.h	1.10 04/02/18 J. Schilling from cdparanoia-III-alpha9.8 */
Packit 45fded
/*
Packit 45fded
 *	Modifications to make the code portable Copyright (c) 2002 J. Schilling
Packit 45fded
 */
Packit 45fded
/*
Packit 45fded
 * CopyPolicy: GNU Public License 2 applies
Packit 45fded
 * Copyright (C) by Monty (xiphmont@mit.edu)
Packit 45fded
 */
Packit 45fded
Packit 45fded
#ifndef	_ISORT_H_
Packit 45fded
#define	_ISORT_H_
Packit 45fded
Packit 45fded
typedef struct sort_link {
Packit 45fded
	struct sort_link *next;
Packit 45fded
} sort_link;
Packit 45fded
Packit 45fded
typedef struct sort_info {
Packit 45fded
	Int16_t		*vector;	/* vector */
Packit 45fded
					/* vec storage doesn't belong to us */
Packit 45fded
Packit 45fded
	long		*abspos;	/* pointer for side effects */
Packit 45fded
	long		size;		/* vector size */
Packit 45fded
Packit 45fded
	long		maxsize;	/* maximum vector size */
Packit 45fded
Packit 45fded
	long		sortbegin;	/* range of contiguous sorted area */
Packit 45fded
	long		lo;
Packit 45fded
	long		hi;		/* current post, overlap range */
Packit 45fded
	int		val;		/* ...and val */
Packit 45fded
Packit 45fded
	/*
Packit 45fded
	 * sort structs
Packit 45fded
	 */
Packit 45fded
	sort_link	**head;		/* sort buckets (65536) */
Packit 45fded
Packit 45fded
	long		*bucketusage;	/* of used buckets (65536) */
Packit 45fded
	long		lastbucket;
Packit 45fded
	sort_link	*revindex;
Packit 45fded
Packit 45fded
} sort_info;
Packit 45fded
Packit 45fded
extern sort_info	*sort_alloc(long size);
Packit 45fded
extern void		sort_unsortall(sort_info * i);
Packit 45fded
extern void		sort_setup(sort_info * i, Int16_t * vector, long *abspos, 
Packit 45fded
								  long size, long sortlo, long sorthi);
Packit 45fded
extern void		sort_free(sort_info * i);
Packit 45fded
extern sort_link	*sort_getmatch(sort_info * i, long post, long overlap, 
Packit 45fded
											int value);
Packit 45fded
extern sort_link	*sort_nextmatch(sort_info * i, sort_link * prev);
Packit 45fded
Packit 45fded
#define	is(i)		((i)->size)
Packit 45fded
#define	ib(i)		(*(i)->abspos)
Packit 45fded
#define	ie(i)		((i)->size + *(i)->abspos)
Packit 45fded
#define	iv(i)		((i)->vector)
Packit 45fded
#define	ipos(i, l)	((l) - (i)->revindex)
Packit 45fded
Packit 45fded
#endif