]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/btree_data.h
Mejoro la ventana para ver el arbol.
[z.facultad/75.52/treemulator.git] / src / btree_data.h
index 44a3a775884ca79770308185843d5cb5f3e5275f..5bbfc27d6e80bd3efa85384b488d0a33cd4d41d9 100644 (file)
 /** Dato a guardar en los nodos */
 class BTreeData {
        public:
 /** Dato a guardar en los nodos */
 class BTreeData {
        public:
-               BTreeData () { clave = NULL; }
+               BTreeData () {}
                BTreeData (uchar *node);
                BTreeData (uchar *node);
+               BTreeData (Clave *k, uint child);
                virtual ~BTreeData ();
 
                virtual ~BTreeData ();
 
-               virtual uint Size ();
-               virtual uchar *ToArray ();
+               virtual uint Size () const;
+               virtual uchar *ToArray () const;
 
                Clave* getClave () { return clave; }
 
                Clave* getClave () { return clave; }
+               uint getChild () { return hijo; }
 
                bool operator < (const BTreeData &data) const;
                virtual operator std::string () const {
 
                bool operator < (const BTreeData &data) const;
                virtual operator std::string () const {
-                       if (clave) {
-                               return (*clave);
-                       }
-                       return "NoKey";
+                       std::string out = (*clave);
+                       std::stringstream ss;
+                       ss << "(" << out ;
+                       ss << ")" << "[" << hijo << "]";
+                       ss >> out;
+                       return out;
                }
        protected:
                Clave *clave;
                }
        protected:
                Clave *clave;
@@ -34,12 +38,35 @@ class BTreeData {
 /** Dato a guardar en las hojas */
 class BTreeLeafData:public BTreeData {
        public:
 /** Dato a guardar en las hojas */
 class BTreeLeafData:public BTreeData {
        public:
-               BTreeLeafData (Clave *k):BTreeData () { clave = k; }
+               BTreeLeafData (Clave *k) { clave = k; }
                BTreeLeafData (uchar *node) { clave = new ClaveFija (node); }
                virtual ~BTreeLeafData ();
 
                BTreeLeafData (uchar *node) { clave = new ClaveFija (node); }
                virtual ~BTreeLeafData ();
 
-               virtual uint Size ();
-               virtual uchar *ToArray ();
+               virtual uint Size () const;
+               virtual uchar *ToArray () const;
+               virtual operator std::string () const {
+                       if (clave) {
+                               return (*clave);
+                       }
+                       return "NoKey";
+               }
+};
+
+class BTreeChildData:public BTreeData {
+       public:
+               BTreeChildData (uint child):BTreeData () { hijo = child; clave = NULL; }
+               BTreeChildData (uchar *node);
+               virtual ~BTreeChildData ();
+
+               virtual uint Size () const;
+               virtual uchar *ToArray () const;
+               virtual operator std::string () const {
+                       std::string out;
+                       std::stringstream ss;
+                       ss << "|" << hijo << "|";
+                       ss >> out;
+                       return out;
+               }
 };
 
 #endif
 };
 
 #endif