]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
bufford andando.
authorLeandro Lucarella <llucax@gmail.com>
Sat, 29 May 2004 06:42:45 +0000 (06:42 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sat, 29 May 2004 06:42:45 +0000 (06:42 +0000)
emufs/external_sort/bufford.c
emufs/external_sort/bufford.h
emufs/external_sort/bufford.txt
emufs/external_sort/bufford_test.c

index 4f7135c79262c89bdad0fdf673d2aa10d86de935..0ea8f884265b2c381762c77ca5123f1f577dd258 100644 (file)
@@ -144,7 +144,22 @@ BUFFORD* bufford_new(size_t size, size_t reg_size, CMP_FUNC cmp)
        b->cmp      = cmp;
        b->size     = 0;        
        b->root     = 0;
-       b->max_size = size / reg_size;
+       b->max_size = size;
+       b->reg_size = reg_size;
+       return b;
+}
+
+BUFFORD* bufford_new_bytes_size(size_t size, size_t reg_size, CMP_FUNC cmp)
+{
+       BUFFORD* b = malloc(sizeof(BUFFORD));
+       if (!b) return 0;
+       assert(cmp);
+       assert(reg_size > 0);
+       assert(size > reg_size);
+       b->cmp      = cmp;
+       b->size     = 0;        
+       b->root     = 0;
+       b->max_size = size / (reg_size + sizeof(BUFFORD_NODE));
        b->reg_size = reg_size;
        return b;
 }
index 1a3cd751c1643882abd02bae38f6c3214092f706..99ce0e2c265966ecb37bf0ee90034e0f00df8ff1 100644 (file)
@@ -66,15 +66,24 @@ typedef struct
 }
 BUFFORD;
 
-/** Crea un nuevo buffer ordenado.
+/** Crea un nuevo buffer ordenado con una cantidad máxima de registros.
  * 
- * \param size Tamaño máximo (en bytes) del buffer.
+ * \param size Tamaño máximo (en cantidad de registros) del buffer.
  * \param reg_size Tamaño del registro que almacena.
  * \param cmp Función de comparación a usar.
  * \return Nuevo buffer ordenado o 0 si no hay más memoria.
  */
 BUFFORD* bufford_new(size_t size, size_t reg_size, CMP_FUNC cmp);
 
+/** Crea un nuevo buffer ordenado con una cantidad máxima de memoria a usar.
+ * 
+ * \param size Tamaño máximo (en bytes) del buffer.
+ * \param reg_size Tamaño del registro que almacena.
+ * \param cmp Función de comparación a usar.
+ * \return Nuevo buffer ordenado o 0 si no hay más memoria.
+ */
+BUFFORD* bufford_new_bytes_size(size_t size, size_t reg_size, CMP_FUNC cmp);
+
 /** Borra un buffer ordenado liberando su memoria. */
 void bufford_delete(BUFFORD* buff);
 
index acc5e8737f809ac1fd85a6980f33211925f3c0bd..4f7655c4d92586fdeefc65d39bf55fb8cc145e80 100644 (file)
 4
 99
 21
+9
+31
+3890
+1
+13
+761
+82
+93
+194
+57
+289
+59
+5
index ba3ea9697f9fcc88f385082b7abe797ff478c668..b0a039a73342410c9fe2c6be26e5eefcacb057f9 100644 (file)
@@ -2,16 +2,6 @@
 #include "bufford.h"
 #include <stdio.h>
 
-/*
-typedef struct
-{
-       int id;
-       int estado;
-       int nrofac;
-}
-RECORD;
-*/
-
 int cmp(void* x, void* y)
 {
        int xx = *(int*)x;
@@ -33,7 +23,7 @@ void buffer_dump(BUFFORD* b)
 int main(int argc, char* argv[])
 {
        FILE* fp;
-       BUFFORD* b = bufford_new(sizeof(int) * 8, sizeof(int), &cmp);
+       BUFFORD* b = bufford_new(8, sizeof(int), &cmp);
        if (!b) return 1;
        fp = fopen(argv[1], "r");
        while (1) {