]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/btree.h
char* a std::string en constructor de BTree
[z.facultad/75.52/treemulator.git] / src / btree.h
index cacd29b9c6463a2309d373865233b5026decae68..081c43687c884a4b69fd00fdc3b5878409cc335b 100644 (file)
  *    tomar una idea simimar)
  */
 
  *    tomar una idea simimar)
  */
 
+#include <iostream>
 #include <string>
 #include <string>
+#include "common.h"
+#include "clave.h"
 
 /* alias para codear menos :) */
 
 /* alias para codear menos :) */
-typedef unsigned char uchar;
 
 /** Encabezado del archivo BTree */
 
 /** Encabezado del archivo BTree */
-typedef struct _btree_file_ {
-       unsigned int block_size;
-} BTreeFileHeader;
+struct BTreeFileHeader {
+       uint block_size;
+};
 
 /** Encabezado de un bloque */
 
 /** Encabezado de un bloque */
-typedef struct _btree_header_ {
+struct BTreeNodeHeader {
        /** Indica a que nivel corresponde un bloque
         *
         *  nivel == 0 : una hoja
        /** Indica a que nivel corresponde un bloque
         *
         *  nivel == 0 : una hoja
@@ -71,7 +73,7 @@ typedef struct _btree_header_ {
 
        /** Cantidad de elementos en el nodo */
        unsigned int item_count;
 
        /** Cantidad de elementos en el nodo */
        unsigned int item_count;
-} BTreeHeader;
+};
 
 /** Crea un nuevo arbol B
  *
 
 /** Crea un nuevo arbol B
  *
@@ -81,16 +83,21 @@ typedef struct _btree_header_ {
  */
 class BTree {
        public:
  */
 class BTree {
        public:
-               BTree (const char *filename, unsigned int block_size, bool create_new_file = false);
+               BTree (const std::string &filename, unsigned int block_size, bool create_new_file = false);
                ~BTree ();
 
                ~BTree ();
 
-               void AddKey ();
-               void DelKey ();
+               void AddKey (Clave &k);
+               void DelKey (Clave &k);
 
        private:
                void write_tree_header ();
                void write_block (uchar *block, uint num);
 
 
        private:
                void write_tree_header ();
                void write_block (uchar *block, uint num);
 
+               uchar *ReadBlock (uint num);
+
+               void ReadNodoHeader (uchar *node, BTreeNodeHeader *header);
+               void WriteNodoHeader (uchar *node, BTreeNodeHeader *header);
+
                std::string filename;
                BTreeFileHeader header;
 
                std::string filename;
                BTreeFileHeader header;