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