]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/emufs.h
Cambios Realizados (son varios, read carefuly):
[z.facultad/75.06/emufs.git] / emufs / emufs.h
index f8a70673bb190a8c8099ce39fc9245d8f61ba789..0ce08de1e1e1f9af9051bb70fe7deedfbd311f66 100644 (file)
@@ -50,6 +50,24 @@ typedef enum {
        T3  /**< Archivo de bloque parametrizado y registro fijo. */
 } EMUFS_TYPE;
 
+/** Tipo de identificador de registro. */
+typedef unsigned long EMUFS_REG_ID;
+
+/** Tipo de tamaño de registro. */
+typedef unsigned long EMUFS_REG_SIZE;
+
+/** Tipo de identificador de bloque. */
+typedef unsigned long EMUFS_BLOCK_ID;
+
+/** Tipo de tamaño de bloque. */
+typedef unsigned long EMUFS_BLOCK_SIZE;
+
+/** Tipo de espacio libre. */
+typedef unsigned long EMUFS_FREE;
+
+/** Tipo de offset. */
+typedef unsigned long EMUFS_OFFSET;
+
 /** Tipo Abstracto para menajo de archivos.
  *
  *  Esta estructura es utilizada para acceder a cualquier tipo de archivo.
@@ -70,11 +88,12 @@ typedef enum {
  */
 typedef struct _emu_fs_t {
        EMUFS_TYPE tipo;
-       unsigned long tam_bloque; /**< Tamaño de bloque. 0 Si no tiene bloques */
-       int (*leer_bloque)(struct _emu_fs_t *, int, void *); /**< Método para leer un bloque */
-       int (*leer_registro)(struct _emu_fs_t *, int, void *, unsigned long); /**< Método para leer un registro */
-       int (*grabar_registro)(struct _emu_fs_t *, void *, unsigned long ); /**< Método para grabar un registro */
-       int (*borrar_registro)(struct _emu_fs_t *, int, unsigned long ); /**< Método para borrar un registro */
+       EMUFS_BLOCK_SIZE tam_bloque; /**< Tamaño de bloque. 0 Si no tiene bloques */
+    EMUFS_REG_SIZE tam_reg; /**< Tamaño de registro. 0 Si son registros variables */   
+       int (*leer_bloque)(struct _emu_fs_t*, EMUFS_BLOCK_ID, void*); /**< Método para leer un bloque */
+       int (*leer_registro)(struct _emu_fs_t*, EMUFS_REG_ID, void *, EMUFS_REG_SIZE); /**< Método para leer un registro */
+       EMUFS_REG_ID (*grabar_registro)(struct _emu_fs_t*, void*, EMUFS_REG_SIZE); /**< Método para grabar un registro */
+       int (*borrar_registro)(struct _emu_fs_t*, EMUFS_REG_ID); /**< Método para borrar un registro */
        char *nombre; /**< Nombre del archivo */
 } EMUFS;
 
@@ -83,27 +102,31 @@ int emufs_crear_archivo_auxiliar(const char*, const char*);
 
 /** Crea un nuevo archivo EMUFS.
  *
- *  Un archivo EMUFS está compuesto por 4 archivos a nivel del sistema operativo.
- *  Un archivo principal con extensión .dat y 3 archivos auxiliares para manejo interno.
+ *  Un archivo EMUFS está compuesto por 4 archivos a nivel del SO.
+ *  Un archivo principal con extensión .dat y 3 archivos auxiliares para
+ *  manejo interno.
  *
- *  El parámetro filename que recive esta función en el nombre virtual que se utilizará, ya
- *  que las extensiones serán puestas automáticamente for EMUFS.
+ *  El parámetro filename que recive esta función en el nombre virtual que se
+ *  utilizará, ya que las extensiones serán puestas automáticamente for EMUFS.
  *
  *  Un ejemplo:
  *  \code
  *  EMUFS *fp  emufs_crear("archivo", T3, 100, 100);
  *  \endcode
  *
- *  En el ejemplo anterior se tiene que nuestro filesystem virtual se llamará archivo.
+ *  En el ejemplo anterior se tiene que nuestro filesystem virtual se llamará
+ *  archivo.
  *
- *  Los últimos 2 parámetros serán ignorados si el tipo de archivo no utiliza dicho parámetro.
+ *  Los últimos 2 parámetros serán ignorados si el tipo de archivo no utiliza
+ *  dicho parámetro.
  *
  *  \param filename Nombre del archivo virtual.
  *  \param tipo Tipo de archivo.
  *  \param tam_bloque Tamaño del bloque.
  *  \param tam_reg Tamaño del registro.
  */
-EMUFS *emufs_crear(const char *filename, char tipo, unsigned long tam_bloque, unsigned long tam_reg);
+EMUFS *emufs_crear(const char *filename, EMUFS_TYPE tipo,
+               EMUFS_BLOCK_SIZE tam_bloque, EMUFS_REG_SIZE tam_reg);
 
 /** Abre un archivo EMUFS.
  *