]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/btree_data.cpp
7ba3448c1d17b01ab52f48582386587c4cba8f9f
[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 bool BTreeData::operator == (const BTreeData &data) const
52 {
53         if (!data.clave) return false;
54
55         return (*clave) == (*(data.clave));
56 }
57
58 BTreeLeafData::~BTreeLeafData ()
59 {
60 }
61
62 uint BTreeLeafData::Size () const
63 {
64         if (!clave) {
65                 std::cout << "BTreeLeafData::Size : No tengo clave!" << std::endl;
66                 return 0;
67         }
68         return clave->Size ();
69 }
70
71 uchar* BTreeLeafData::ToArray () const
72 {
73         return clave->ToArray ();
74 }
75
76 BTreeChildData::BTreeChildData (uchar *node)
77 {
78         memcpy (&hijo, node, sizeof (uint));
79 }
80
81 BTreeChildData::~BTreeChildData ()
82 {
83 }
84
85 uint BTreeChildData::Size () const
86 {
87         return sizeof (uint);
88 }
89
90 uchar* BTreeChildData::ToArray () const
91 {
92         uchar *out = new uchar[Size()];
93         memcpy (out, &hijo, sizeof (uint));
94         return out;
95 }
96