]> git.llucax.com Git - z.facultad/75.52/treemulator.git/commitdiff
Agrego Clone a las claves.
authorRicardo Markiewicz <rmarkie@fi.uba.ar>
Tue, 13 Sep 2005 16:02:16 +0000 (16:02 +0000)
committerRicardo Markiewicz <rmarkie@fi.uba.ar>
Tue, 13 Sep 2005 16:02:16 +0000 (16:02 +0000)
Como el ctor de copia no me sirve dado la herencia, necesito
una forma de clonar claves independientemente de su tipo.

src/btree.cpp
src/clave.h
src/clave_fija.cpp
src/clave_fija.h

index c7d3b4bf4c456203435a8e231f94961fa9f395d8..21609bf6b48388b6f2308948f930e3488682fd49 100644 (file)
@@ -62,6 +62,8 @@ void BTree::AddKey (const Clave &k)
        
        if (root_header.free_space >= k.Size ()) {
                std::cout << "Hay lugar para meter la clave" << std::endl;
+               /* TODO : Insertar ordenado */
+               node_keys.push_back (k.Clone ());
        } else {
                std::cout << "__NO__ hay lugar para meter la clave" << std::endl;
        }
index 7cf3ceb4e0ca67423703439d36de7a6c5f2c5ace..be75a7ce90fd699ed9efc46f9a3a8bc3d2fb19eb 100644 (file)
@@ -9,8 +9,9 @@ class Clave {
        public:
                virtual ~Clave () {}
 
-               virtual uint Size () = 0;
-               virtual uchar *ToArray () = 0;
+               virtual uint Size () const = 0;
+               virtual uchar *ToArray () const = 0;
+               virtual Clave *Clone () const = 0;
 };
 
 #endif
index a954e2451ef81b29d71ad559c3078ebe85056c4c..67edc4c85512d6adeaf8b4ca44ab0bc3f08233b0 100644 (file)
@@ -25,3 +25,9 @@ uchar *ClaveFija::ToArray () const
        return out;
 }
 
+Clave *ClaveFija::Clone () const
+{
+       ClaveFija *k = new ClaveFija (*this);
+       return k;
+}
+
index aa6e712084e162bd85c33324a2adfc8e84d86fd4..280f24b588458e04ef49bd0feac7e02f33704d86 100644 (file)
@@ -12,6 +12,7 @@ class ClaveFija : public Clave {
 
                uint Size () const;
                uchar *ToArray () const;
+               Clave *Clone () const;
 
        private:
                int data;