|
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
|