]> git.llucax.com Git - z.facultad/75.52/treemulator.git/commitdiff
Paso el block_data a BTree en lugar de Clave.
authorRicardo Markiewicz <rmarkie@fi.uba.ar>
Wed, 23 Nov 2005 01:53:24 +0000 (01:53 +0000)
committerRicardo Markiewicz <rmarkie@fi.uba.ar>
Wed, 23 Nov 2005 01:53:24 +0000 (01:53 +0000)
src/btree.cpp
src/clave.h
src/clave_fija.cpp
src/clave_fija.h
src/clave_variable.cpp
src/clave_variable.h
src/main.cpp
src/main_var.cpp

index e78a91e406688633f1818fad4464e9776f9b8c03..77967bf45ce1471d2a90793753067547f96f7a47 100644 (file)
@@ -97,14 +97,20 @@ void BTree::WriteBlock (uchar *block, uint num)
 void BTree::AddKey (const Clave &k)
 {
        uint left, right;
-       Clave *kout;
+       Clave *kout, *in;
+
+       in = k.Clone ();
+       /* TODO : Hacer un contador con recuperacion */
+       in->SetBlockData (0);
 
        try {
-               kout = AddKeyR (k.Clone (), 0, left, right);
+               kout = AddKeyR (in->Clone (), 0, left, right);
        } catch (Exception *e) {
                throw e;
        }
 
+       delete in;
+
        if (kout) {
                unsigned short level;
                /* Debo dejar la raiz en el nodo 0, por lo que paso el nodo
index 27e948780d3ca50693d80e11fb6a139d30302a36..1d746b86a48c3dd94aec27b035b9e26ba5fcde1c 100644 (file)
@@ -10,6 +10,8 @@ class Clave {
        public:
                virtual ~Clave () {}
 
+               void SetBlockData (int i) { block_data = i; }
+
                /** Retorna el tamaño en bytes que ocupa la clave */
                virtual uint Size () const = 0;
                /** Retorna un array de bytes de Size() de longitud.
index d947e2a4cb82405c07dc0a0d2497d3e5ff49d484..ea8c09e6763f8f42db9ae4f4feaa256b37c2e473 100644 (file)
@@ -2,10 +2,9 @@
 #include <string>
 #include "clave_fija.h"
 
-ClaveFija::ClaveFija (int n, uint bd)
+ClaveFija::ClaveFija (int n)
 {
        data = n;
-       block_data = bd;
 }
 
 ClaveFija::ClaveFija (uchar *n)
index d04baf90d07ec3e846372d1fef0d4615c40db688..e70cd526941f7e93c8d3b4996cc89105c2c09428 100644 (file)
@@ -9,7 +9,7 @@
 class ClaveFija : public Clave {
        public :
                ClaveFija (uchar *n);
-               ClaveFija (int n, uint data);
+               ClaveFija (int n);
                virtual ~ClaveFija () {}
 
                uint Size () const;
index 4479a156f133bedc90938abe5fd8d295d6a05914..e4452b08e83fe30d4263a03147f2da51af510864 100644 (file)
@@ -3,10 +3,9 @@
 #include "clave_variable.h"
 #include <iostream>
 
-ClaveVariable::ClaveVariable (const std::string &s, uint bd)
+ClaveVariable::ClaveVariable (const std::string &s)
 {
        data = s;
-       block_data = bd;
 }
 
 ClaveVariable::ClaveVariable (uchar *n)
index b92448b333c42d6e34dadccf06863a343956064b..224f4e0f50d111ca6b9d18ae7e4ed47cb02abb4c 100644 (file)
@@ -13,7 +13,7 @@
 class ClaveVariable : public Clave {
        public :
                ClaveVariable (uchar *n);
-               ClaveVariable (const std::string &s, uint bd);
+               ClaveVariable (const std::string &s);
                virtual ~ClaveVariable () {}
 
                uint Size () const;
index e4f0326247d6bca4a35cd7d90df7c599666bb024..a16a24ea0252bf5b1ea84a8843829d91d1f7313d 100644 (file)
@@ -29,7 +29,7 @@ int main  (int argc, char *argv[])
 
        it = lst.begin ();
        while (it != lst.end ()) {
-               ClaveFija c(*it, 0);
+               ClaveFija c(*it);
 
                double l = Random::Double (0.0f, 1.0f);
                std::cout << l << " >= " << paltas << std::endl;
@@ -45,7 +45,7 @@ int main  (int argc, char *argv[])
                } else {
                        /* Tengo que borrar una clave entre 0 e "i" de la lista
                         * porque son las que ya agregue. */
-                       ClaveFija c(km.GetRandom (), 0);
+                       ClaveFija c(km.GetRandom ());
 
                        try {
                                tree.DelKey (c);
@@ -64,7 +64,7 @@ int main  (int argc, char *argv[])
        int bien = 0;
        int mal = 0;
        while (it != l.end ()) {
-               ClaveFija c(*it, 0);
+               ClaveFija c(*it);
                BTreeFindResult *r;
 
                r = tree.FindKey (c);
index 8202096542959e524efcfce48441e7261c5c5e76..d7082c94fc04a3772eca17b0284056767ce2bbc9 100644 (file)
@@ -29,7 +29,7 @@ int main  (int argc, char *argv[])
 
        it = lst.begin ();
        while (it != lst.end ()) {
-               ClaveVariable c(*it, 0);
+               ClaveVariable c(*it);
 
                double l = Random::Double (0.0f, 1.0f);
                std::cout << l << " >= " << paltas << std::endl;
@@ -47,7 +47,7 @@ int main  (int argc, char *argv[])
                } else {
                        /* Tengo que borrar una clave entre 0 e "i" de la lista
                         * porque son las que ya agregue. */
-                       ClaveVariable c(km.GetRandom (), 0);
+                       ClaveVariable c(km.GetRandom ());
 
                        try {
                                tree.DelKey (c);
@@ -66,7 +66,7 @@ int main  (int argc, char *argv[])
        int bien = 0;
        int mal = 0;
        while (it != l.end ()) {
-               ClaveVariable c(*it, 0);
+               ClaveVariable c(*it);
                BTreeFindResult *r;
 
                r = tree.FindKey (c);