]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/btree_data.cpp
Agrego clave variable.
[z.facultad/75.52/treemulator.git] / src / btree_data.cpp
index 1203d6c98a8c62392acc959268667df7ef7c3cb3..a5d9b6805706311ca288279c5030f83f582adb22 100644 (file)
@@ -1,12 +1,16 @@
 
 #include "btree_data.h"
 
 #include "btree_data.h"
+#include "btree.h"
 
 
-BTreeData::BTreeData (uchar *node)
+BTreeData::BTreeData (uchar *node, int tree_type)
 {
        /* TODO : Aca deberia detectar el tipo de clave (necesito
         * info desde el arbol
         */
 {
        /* TODO : Aca deberia detectar el tipo de clave (necesito
         * info desde el arbol
         */
-       clave = new ClaveFija (node);
+       if (tree_type == BTree::KEY_FIXED)
+               clave = new ClaveFija (node);
+       else
+               clave = new ClaveVariable (node);
        node += clave->Size ();
 
        memcpy (&hijo, node, sizeof (uint));
        node += clave->Size ();
 
        memcpy (&hijo, node, sizeof (uint));
@@ -48,6 +52,20 @@ bool BTreeData::operator < (const BTreeData &data) const
        return (*clave) < (*(data.clave));
 }
 
        return (*clave) < (*(data.clave));
 }
 
+bool BTreeData::operator == (const BTreeData &data) const
+{
+       if (!data.clave) return false;
+
+       return (*clave) == (*(data.clave));
+}
+
+BTreeLeafData::BTreeLeafData (uchar *node, int key_type)
+{
+       if (key_type == BTree::KEY_FIXED)
+               clave = new ClaveFija (node);
+       else
+               clave = new ClaveVariable (node);
+}
 
 BTreeLeafData::~BTreeLeafData ()
 {
 
 BTreeLeafData::~BTreeLeafData ()
 {