]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/btree_data.h
b07f6f59f364e38fbcf2555370ca5c30dd4e5d3e
[z.facultad/75.52/treemulator.git] / src / btree_data.h
1
2 #ifndef _B_TREE_DATA
3 #define _B_TREE_DATA
4
5 #include <iostream>
6 #include <stdlib.h>
7 #include "clave.h"
8 #include "clave_fija.h"
9
10 /** Dato a guardar en los nodos */
11 class BTreeData {
12         public:
13                 BTreeData () {}
14                 BTreeData (uchar *node);
15                 BTreeData (Clave *k, uint child);
16                 virtual ~BTreeData ();
17
18                 virtual uint Size () const;
19                 virtual uchar *ToArray () const;
20
21                 Clave* getClave () { return clave; }
22
23                 bool operator < (const BTreeData &data) const;
24                 virtual operator std::string () const {
25                         std::string out = (*clave);
26                         std::stringstream ss;
27                         ss << "(" << out << ") ";
28                         ss << "[" << hijo << "]";
29                         ss >> out;
30                         return out;
31                 }
32         protected:
33                 Clave *clave;
34                 uint hijo;
35 };
36
37 /** Dato a guardar en las hojas */
38 class BTreeLeafData:public BTreeData {
39         public:
40                 BTreeLeafData (Clave *k) { clave = k; }
41                 BTreeLeafData (uchar *node) { clave = new ClaveFija (node); }
42                 virtual ~BTreeLeafData ();
43
44                 virtual uint Size () const;
45                 virtual uchar *ToArray () const;
46                 virtual operator std::string () const {
47                         if (clave) {
48                                 return (*clave);
49                         }
50                         return "NoKey";
51                 }
52 };
53
54 class BTreeChildData:public BTreeData {
55         public:
56                 BTreeChildData (uint child):BTreeData () { hijo = child; }
57                 BTreeChildData (uchar *node);
58                 virtual ~BTreeChildData ();
59
60                 virtual uint Size () const;
61                 virtual uchar *ToArray () const;
62                 virtual operator std::string () const {
63                         std::string out;
64                         std::stringstream ss;
65                         ss << "|" << hijo << "|";
66                         ss >> out;
67                         return out;
68                 }
69 };
70
71 #endif
72