]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/clave_variable.cpp
El block_data ahora es manejado por BTree.
[z.facultad/75.52/treemulator.git] / src / clave_variable.cpp
index 47d81ba5f292f1b2461b8b26f02f6d6a8bb816e1..e4452b08e83fe30d4263a03147f2da51af510864 100644 (file)
@@ -19,11 +19,15 @@ ClaveVariable::ClaveVariable (uchar *n)
        str[len] = '\0';
        data = std::string ((const char *)(str));
        delete [] str;
        str[len] = '\0';
        data = std::string ((const char *)(str));
        delete [] str;
+       n += data.size () * sizeof (uchar);
+       memcpy (&block_data, n, sizeof (uint));
+
+       raw_data = data;
 }
 
 uint ClaveVariable::Size () const
 {
 }
 
 uint ClaveVariable::Size () const
 {
-       return data.size ()+sizeof (uint);
+       return data.size ()*sizeof (uchar)+sizeof (uint)*2;
 }
 
 uchar *ClaveVariable::ToArray () const
 }
 
 uchar *ClaveVariable::ToArray () const
@@ -31,8 +35,13 @@ uchar *ClaveVariable::ToArray () const
        uchar *out;
        uint len = data.size ();
        out = new uchar[Size ()];
        uchar *out;
        uint len = data.size ();
        out = new uchar[Size ()];
+       int x = 0;
        memcpy (out, &len, sizeof (uint));
        memcpy (out, &len, sizeof (uint));
-       memcpy (out+sizeof(uint), data.c_str (), data.size ());
+       x += sizeof (uint);
+       memcpy (out+x, data.c_str (), data.size ()*sizeof (uchar));
+       x += data.size () * sizeof (uchar);
+       memcpy (out+x, &block_data, sizeof (uint));
+
        return out;
 }
 
        return out;
 }
 
@@ -82,7 +91,6 @@ bool ClaveVariable::DesAbrev (ClaveVariable *c)
        if (pos <= 0) return false;
 
        std::string siguales = data.substr (0, pos);
        if (pos <= 0) return false;
 
        std::string siguales = data.substr (0, pos);
-       std::cout << siguales << std::endl;
        int iguales = atoi (siguales.c_str ());
 
        std::string primera_parte = c->data.substr (0, iguales);
        int iguales = atoi (siguales.c_str ());
 
        std::string primera_parte = c->data.substr (0, iguales);
@@ -113,3 +121,26 @@ std::string ClaveVariable::abreviar(std::string &p, std::string &a, int &iguales
        return std::string (actual);
 }
 
        return std::string (actual);
 }
 
+uchar *ClaveVariable::ToRaw (uint &size) const
+{
+       std::stringstream ss;
+
+       ss << "[";
+       ss << data.size ();
+       ss << "]";
+       ss << "[";
+       ss << raw_data;
+       ss << "]";
+       ss << "[";
+       ss << block_data;
+       ss << "]";
+
+       std::string s = ss.str ();
+
+       uchar *out = new uchar[s.size ()];
+       memcpy (out, s.c_str (), s.size ());
+
+       size = s.size ();
+       return out;
+}
+