/*-------------------------------------------------------------------------
 *
 * lselect.h--
 *    definitions for the replacement selection algorithm.
 *
 *
 * Copyright (c) 1994, Regents of the University of California
 *
 * lselect.h,v 1.1.1.1 1994/11/07 05:19:46 andrew Exp
 *
 *-------------------------------------------------------------------------
 */
#ifndef	LSELECT_H
#define	LSELECT_H

#include "c.h"
#include "access/htup.h"

struct	leftist {
    short	lt_dist; 	/* distance to leaf/empty node */
    short	lt_devnum; 	/* device number of tuple */
    HeapTuple	lt_tuple;
    struct	leftist	*lt_left;
    struct	leftist	*lt_right;
};

extern	struct	leftist	*Tuples;

extern struct leftist *lmerge(struct leftist *pt, struct leftist *qt);
extern HeapTuple gettuple(struct leftist **treep, short *devnum);
extern int puttuple(struct leftist **treep, HeapTuple newtuple, int devnum);
extern void dumptuples(FILE *file);
extern int tuplecmp(HeapTuple ltup, HeapTuple rtup);

#ifdef EBUG
extern void checktree(struct leftist *tree);
extern int checktreer(struct leftist *tree, int level);
#endif /* EBUG */

#endif 	/* LSELECT_H */
