]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/btree.h
tagged 1.1
[z.facultad/75.52/treemulator.git] / src / btree.h
index 5d05ae43226c6550642c56fe8c5c37ad515638da..9e492139317a15351162c43f5c3637fc42a767cf 100644 (file)
  *  ocupe block_size de tamaño.
  */
 struct BTreeFileHeader {
  *  ocupe block_size de tamaño.
  */
 struct BTreeFileHeader {
+       char magic[7];
        uint block_size;
        uint block_size;
+       int tree_type;
+       int key_type;
+       uint block_data_counter;
 };
 
 /** Encabezado de un bloque */
 };
 
 /** Encabezado de un bloque */
@@ -247,6 +251,8 @@ struct BTreeFindResult {
 class BTree {
        public:
                BTree (const std::string &filename, unsigned int block_size, int t_t = TYPE_IDENTIFICACION, int k_t = KEY_FIXED, bool create_new_file = false);
 class BTree {
        public:
                BTree (const std::string &filename, unsigned int block_size, int t_t = TYPE_IDENTIFICACION, int k_t = KEY_FIXED, bool create_new_file = false);
+               BTree (const std::string &filename);
+
                ~BTree ();
 
                /** Tipos de clave a usar */
                ~BTree ();
 
                /** Tipos de clave a usar */
@@ -292,6 +298,7 @@ class BTree {
 
                /* Funciones de manejo de archivo */
                void WriteFileHeader ();
 
                /* Funciones de manejo de archivo */
                void WriteFileHeader ();
+               void ReadFileHeader ();
 
                /* Manejo de Bloques */
                void WriteBlock (uchar *block, uint num);
 
                /* Manejo de Bloques */
                void WriteBlock (uchar *block, uint num);
@@ -313,14 +320,16 @@ class BTree {
 
                std::string filename;
                BTreeFileHeader header;
 
                std::string filename;
                BTreeFileHeader header;
-               int key_type;
-               int tree_type;
+
+               uint GetNextBlockData ();
 
                /** Apunta al archivo de datos, asi se abre solo 1 vez
                 *
                 *  \todo Ver si vale la pena
                 */
                FILE *fp;
 
                /** Apunta al archivo de datos, asi se abre solo 1 vez
                 *
                 *  \todo Ver si vale la pena
                 */
                FILE *fp;
+               std::list<uint> deleted_nodes;
+               std::list<uint> deleted_block_data;
 
 
                /* DEBUG */
 
 
                /* DEBUG */