#ifndef __BFB_H
#define __BFB_H

/*****************************/
/* Bloques de fichero básico */
/*****************************/

#include "tipos.h"


/* tipo BFB							*/
/*								*/
/*	Tipo de datos para manejar bloques de fichero básico	*/


/* Tamaño del nombre de fichero */
#define LONG_NOMBRE 9


/* Estructura de un BFB */

struct BloqueFicheroBasico
{
  BYTE  estado;			/* estado del bloque (libre, ocupado) */
  char	nombre [LONG_NOMBRE];	/* nombre del fichero */
  WORD	id;			/* identificador */
  DWORD bloque;			/* bloque de datos del fichero */
};

typedef struct BloqueFicheroBasico BFB;

#define BFB_LIBRE 0
#define BFB_OCUPADO 1

#define TAM_BFB	(sizeof(BFB))


/* Funciones de manipulación de BFB */

/*	Estas funciones equivalen a las operaciones primitivas	*/
/*	del tipo abstracto de datos BFB, si el lenguaje C	*/
/*	tuviera soporte de TADs.				*/

/* Inicio y fin de sesión */

void BFB_empieza_sesion (void);
void BFB_termina_sesion (void);


/* Transferencias con el disco */

void BFB_recoge ( BFB* bfb, IFB fichero );
void BFB_guarda ( const BFB* bfb, IFB fichero );


/* Alteraciones del BFB */

void BFB_construye ( BFB* bfb, int numero );
void BFB_cambia_longitud ( BFB* bfb, WORD num_bloques );


#endif