]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/btree.h
Agrego ToRaw a las claves.
[z.facultad/75.52/treemulator.git] / src / btree.h
index f7613f42d2fc5c2c58995ebd3fc730bac5d58673..ef9f24232358b9150b5c56e56fed967305e30688 100644 (file)
@@ -73,6 +73,7 @@
 #include "clave_fija.h"
 #include "clave_variable.h"
 #include "btree_data.h"
 #include "clave_fija.h"
 #include "clave_variable.h"
 #include "btree_data.h"
+#include "exception.h"
 
 /* alias para codear menos :) */
 
 
 /* alias para codear menos :) */
 
@@ -121,7 +122,7 @@ struct BTreeFindResult {
  */
 class BTree {
        public:
  */
 class BTree {
        public:
-               BTree (const std::string &filename, unsigned int block_size, int k_t = KEY_FIXED, bool create_new_file = false);
+               BTree (const std::string &filename, unsigned int block_size, int t_t = TYPE_UNIQUE, int k_t = KEY_FIXED, bool create_new_file = false);
                ~BTree ();
 
                /** Tipos de clave a usar */
                ~BTree ();
 
                /** Tipos de clave a usar */
@@ -130,6 +131,11 @@ class BTree {
                        KEY_VARIABLE  /**< Utilización de clave de longitud variable */
                };
 
                        KEY_VARIABLE  /**< Utilización de clave de longitud variable */
                };
 
+               enum {
+                       TYPE_UNIQUE,
+                       TYPE_SELECTIVE
+               };
+       
                /** Agrega una nueva clave al árbol. */
                void AddKey (const Clave &k);
                /** Elimina una clave del árbol. */
                /** Agrega una nueva clave al árbol. */
                void AddKey (const Clave &k);
                /** Elimina una clave del árbol. */
@@ -153,7 +159,7 @@ class BTree {
                void FindBrothers (uint node_num, uint padre, uint &left, uint &right);
                Clave *ReplaceKeyInFather (uint node_num, uint padre, Clave *k);
                Clave *GetKey (uint node_num, char maxmin);
                void FindBrothers (uint node_num, uint padre, uint &left, uint &right);
                Clave *ReplaceKeyInFather (uint node_num, uint padre, Clave *k);
                Clave *GetKey (uint node_num, char maxmin);
-               void JoinNodes (uint node1, uint node2, uint padre);
+               void JoinNodes (uint node1, uint node2, uint padre, int);
 
                /* Funciones de Búsqueda */
                BTreeFindResult *FindKeyR (const Clave *k, uint node);
 
                /* Funciones de Búsqueda */
                BTreeFindResult *FindKeyR (const Clave *k, uint node);
@@ -175,9 +181,14 @@ class BTree {
                void WriteKeys (uchar *node, BTreeNodeHeader &node_header, std::list<BTreeData *> &keys);
                void DeleteKeys (std::list<BTreeData *> &keys);
 
                void WriteKeys (uchar *node, BTreeNodeHeader &node_header, std::list<BTreeData *> &keys);
                void DeleteKeys (std::list<BTreeData *> &keys);
 
+               /* Abreviacion de Claves */
+               void AbrevKey (std::list<BTreeData *> &lst);
+               void DeAbrevKey (std::list<BTreeData *> &lst);
+
                std::string filename;
                BTreeFileHeader header;
                int key_type;
                std::string filename;
                BTreeFileHeader header;
                int key_type;
+               int tree_type;
 
                /** Apunta al archivo de datos, asi se abre solo 1 vez
                 *
 
                /** Apunta al archivo de datos, asi se abre solo 1 vez
                 *