]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/btree_data.cpp
Agrego ChildData
[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
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         std::cout << "BTreeLeafData::Size()" << std::endl;
57         if (!clave) {
58                 std::cout << "BTreeLeafData::Size : No tengo clave!" << std::endl;
59                 return 0;
60         }
61         return clave->Size ();
62 }
63
64 uchar* BTreeLeafData::ToArray () const
65 {
66         return clave->ToArray ();
67 }
68
69 BTreeChildData::BTreeChildData (uchar *node)
70 {
71         memcpy (&hijo, node, sizeof (uint));
72 }
73
74 BTreeChildData::~BTreeChildData ()
75 {
76 }
77
78 uint BTreeChildData::Size () const
79 {
80         std::cout << "BTreeChildData::Size()" << std::endl;
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