]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/btree.h
Paso todo a C++
[z.facultad/75.52/treemulator.git] / src / btree.h
index 6764a63d5f0ef8bc559df9e650691cff6781c0ad..cacd29b9c6463a2309d373865233b5026decae68 100644 (file)
@@ -44,9 +44,7 @@
  *    tomar una idea simimar)
  */
 
  *    tomar una idea simimar)
  */
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <string>
 
 /* alias para codear menos :) */
 typedef unsigned char uchar;
 
 /* alias para codear menos :) */
 typedef unsigned char uchar;
@@ -75,46 +73,33 @@ typedef struct _btree_header_ {
        unsigned int item_count;
 } BTreeHeader;
 
        unsigned int item_count;
 } BTreeHeader;
 
-typedef struct _btree_ {
-       char *filename;
-       BTreeFileHeader header;
-
-       /** Apunta al archivo de datos, asi se abre solo 1 vez
-        *
-        *  \TODO Ver si vale la pena
-        */
-       FILE *fp;
-} BTree;
-
 /** Crea un nuevo arbol B
  *
  *  \param filename Nombre del archivo a crear
  *  \param block_size Tamaño de bloque a utilizar
  *  \return Un nuevo arbol B creado o NULL en caso de error
  */
 /** Crea un nuevo arbol B
  *
  *  \param filename Nombre del archivo a crear
  *  \param block_size Tamaño de bloque a utilizar
  *  \return Un nuevo arbol B creado o NULL en caso de error
  */
-BTree *btree_create (const char *filename, unsigned int block_size);
-
-/** Abre un arbol B existente
- *
- *  \param filename Nombre del archivo a abrir
- *  \return El arbol abierto o NULL en caso de error
- */
-BTree *btree_open (const char *filename);
-
-/** Agrega una clave en el arbol
- *
- *  \TODO Definir parametros
- */
-int btree_add (BTree *);
-
-/** Borra una clave del arbol
- *
- *  \TODO Definir parametros
- */
-int btree_del (BTree *);
-
-/** Cierra el arbol y libera los recursos */
-int btree_close (BTree *);
+class BTree {
+       public:
+               BTree (const char *filename, unsigned int block_size, bool create_new_file = false);
+               ~BTree ();
+
+               void AddKey ();
+               void DelKey ();
+
+       private:
+               void write_tree_header ();
+               void write_block (uchar *block, uint num);
+
+               std::string filename;
+               BTreeFileHeader header;
+
+               /** Apunta al archivo de datos, asi se abre solo 1 vez
+                *
+                *  \TODO Ver si vale la pena
+                */
+               FILE *fp;
+};
 
 #endif // _B_TREE_H
 
 
 #endif // _B_TREE_H