all: $(TARGET)
-$(TARGET): main.o btree.o clave_fija.o
- g++ -o $(TARGET) main.o btree.o clave_fija.o
+$(TARGET): main.o btree.o clave_fija.o btree_data.o
+ g++ -o $(TARGET) main.o btree.o clave_fija.o btree_data.o
clean:
rm -rf *.o $(TARGET)
--- /dev/null
+
+#include "btree_data.h"
+
+BTreeData::BTreeData (uchar *node)
+{
+ /* TODO : Aca deberia detectar el tipo de clave (necesito
+ * info desde el arbol
+ */
+ clave = new ClaveFija (node);
+ node += clave->Size ();
+
+ memcpy (&hijo_izquierdo, node, sizeof (uint));
+}
+
+BTreeData::~BTreeData ()
+{
+}
+
+uint BTreeData::Size ()
+{
+ uint s = sizeof (uint);
+ if (clave) s += clave->Size ();
+
+ return s;
+}
+
+uchar* BTreeData::ToArray ()
+{
+ uchar *out = new uchar[Size()];
+ memcpy (out, clave->ToArray (), clave->Size ());
+ memcpy (out+clave->Size (), &hijo_izquierdo, sizeof (uint));
+ return out;
+}
+
+BTreeLeafData::~BTreeLeafData ()
+{
+}
+
+uint BTreeLeafData::Size ()
+{
+ return clave->Size ();
+}
+
+uchar* BTreeLeafData::ToArray ()
+{
+ return clave->ToArray ();
+}
--- /dev/null
+
+#ifndef _B_TREE_DATA
+#define _B_TREE_DATA
+
+#include <iostream>
+#include <stdlib.h>
+#include "clave.h"
+#include "clave_fija.h"
+
+/** Dato a guardar en los nodos */
+class BTreeData {
+ public:
+ BTreeData (uchar *node);
+ virtual ~BTreeData ();
+
+ virtual uint Size ();
+ virtual uchar *ToArray ();
+ protected:
+ Clave *clave;
+ uint hijo_izquierdo;
+};
+
+/** Dato a guardar en las hojas */
+class BTreeLeafData:BTreeData {
+ public:
+ virtual ~BTreeLeafData ();
+
+ virtual uint Size ();
+ virtual uchar *ToArray ();
+};
+
+#endif
+