/************************************************/
/*                                              */
/* File        : rockfifo_private.h             */
/* Description : ROCK FIFO specific library     */
/*               private part                   */
/*                                              */
/* Author: Sfiligoi Igor                        */
/*                                              */
/* Created      : 17.02.1997                    */
/* Last modified: 19.03.1997                    */
/*                                              */
/************************************************/

#ifndef ROCKFIFO_PRIVATE_H
#define ROCKFIFO_PRIVATE_H

#include "rockfifo.h"

	/* return the number of elements held in the cache */
unsigned int rock_fifo_cache_get_nrels(ROCK_FIFO_id fifo_id);

void rock_fifo_flags(ROCK_FIFO_id       fifo_id,  /* IN : fifo id */
		     ROCKB_EDFIFO_bits *flags);   /* OUT: only ff,hf and ef elements are valid */


int rock_fifo_cache_read(ROCK_FIFO_id fifo_id,	/* IN : fifo id */
			 unsigned int nrels,	/* IN : nr. of elements to read */
			 unsigned int *data);	/* OUT: data from the cache, must be allocated by caller */

int rock_fifo_cache_read_bits(ROCK_FIFO_id fifo_id,	/* IN : fifo id */
			      unsigned int nrels,	/* IN : nr. of elements to read */
			      ROCK_EDFIFO_bits *data);	/* OUT: data from the cache, must be allocated by caller */

int rock_fifo_cache_return_bits(ROCK_FIFO_id  fifo_id,	/* IN : fifo_id */
				ROCK_EDFIFO_bits *data,	/* IN : data to be returned to the cache */
				unsigned int  nrels);	/* IN : nr. of elements of data to return */


	/* fill the cache with at least nrels elements */
	/* works best if the cache is empty */
int rock_fifo_fillcache(ROCK_FIFO_id fifo_id,	/* IN : fifo id */
		        unsigned int nrels);	/* IN : fill the cache at least with the nr elements */
						/*      if more than ROCK_FIFO_FIFO_SIZE, truncated to ROCK_FIFO_FIFO_SIZE */ 


#endif /* ROCKFIFO_PRIVATE_H */