]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/btree_data.h
db8ecc180a318834906762505a294b9d42e65aed
[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                 uint getChild () { return hijo; }
23                 void setChild (uint c) { hijo = c; }
24
25                 bool operator < (const BTreeData &data) const;
26                 bool operator == (const BTreeData &data) const;
27                 virtual operator std::string () const {
28                         std::string out = (*clave);
29                         std::stringstream ss;
30                         ss << "(" << out ;
31                         ss << ")" << "[" << hijo << "]";
32                         ss >> out;
33                         return out;
34                 }
35         protected:
36                 Clave *clave;
37                 uint hijo;
38 };
39
40 /** Dato a guardar en las hojas */
41 class BTreeLeafData:public BTreeData {
42         public:
43                 BTreeLeafData (Clave *k) { clave = k; }
44                 BTreeLeafData (uchar *node) { clave = new ClaveFija (node); }
45                 virtual ~BTreeLeafData ();
46
47                 virtual uint Size () const;
48                 virtual uchar *ToArray () const;
49                 virtual operator std::string () const {
50                         if (clave) {
51                                 return (*clave);
52                         }
53                         return "NoKey";
54                 }
55 };
56
57 class BTreeChildData:public BTreeData {
58         public:
59                 BTreeChildData (uint child):BTreeData () { hijo = child; clave = NULL; }
60                 BTreeChildData (uchar *node);
61                 virtual ~BTreeChildData ();
62
63                 virtual uint Size () const;
64                 virtual uchar *ToArray () const;
65                 virtual operator std::string () const {
66                         std::string out;
67                         std::stringstream ss;
68                         ss << "|" << hijo << "|";
69                         ss >> out;
70                         return out;
71                 }
72 };
73
74 #endif
75