]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/btree_data.cpp
1203d6c98a8c62392acc959268667df7ef7c3cb3
[z.facultad/75.52/treemulator.git] / src / btree_data.cpp
1
2 #include "btree_data.h"
3
4 BTreeData::BTreeData (uchar *node)
5 {
6         /* TODO : Aca deberia detectar el tipo de clave (necesito
7          * info desde el arbol
8          */
9         clave = new ClaveFija (node);
10         node += clave->Size ();
11
12         memcpy (&hijo, node, sizeof (uint));
13 }
14
15 BTreeData::BTreeData (Clave *k, uint child)
16 {
17         clave = k;
18         hijo = child;
19 }
20
21 BTreeData::~BTreeData ()
22 {
23 }
24
25 uint BTreeData::Size () const
26 {
27         uint s = sizeof (uint);
28         if (clave) s += clave->Size ();
29         else std::cout << "No tengo clave\n";
30         return s;
31 }
32
33 uchar* BTreeData::ToArray () const
34 {
35         uchar *out = new uchar[Size()];
36         if (clave) {
37                 memcpy (out, clave->ToArray (), clave->Size ());
38                 memcpy (out+clave->Size (), &hijo, sizeof (uint));
39         } else
40                 memcpy (out, &hijo, sizeof (uint));
41         return out;
42 }
43
44 bool BTreeData::operator < (const BTreeData &data) const
45 {
46         if (!data.clave) return false;
47
48         return (*clave) < (*(data.clave));
49 }
50
51
52 BTreeLeafData::~BTreeLeafData ()
53 {
54 }
55
56 uint BTreeLeafData::Size () const
57 {
58         if (!clave) {
59                 std::cout << "BTreeLeafData::Size : No tengo clave!" << std::endl;
60                 return 0;
61         }
62         return clave->Size ();
63 }
64
65 uchar* BTreeLeafData::ToArray () const
66 {
67         return clave->ToArray ();
68 }
69
70 BTreeChildData::BTreeChildData (uchar *node)
71 {
72         memcpy (&hijo, node, sizeof (uint));
73 }
74
75 BTreeChildData::~BTreeChildData ()
76 {
77 }
78
79 uint BTreeChildData::Size () const
80 {
81         return sizeof (uint);
82 }
83
84 uchar* BTreeChildData::ToArray () const
85 {
86         uchar *out = new uchar[Size()];
87         memcpy (out, &hijo, sizeof (uint));
88         return out;
89 }
90