]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/clave_fija.cpp
El block_data ahora es manejado por BTree.
[z.facultad/75.52/treemulator.git] / src / clave_fija.cpp
index 05c98143d3a406295b49cb768fe8bfa24e0f76d2..ea8c09e6763f8f42db9ae4f4feaa256b37c2e473 100644 (file)
@@ -2,16 +2,64 @@
 #include <string>
 #include "clave_fija.h"
 
-uint ClaveFija::Size ()
+ClaveFija::ClaveFija (int n)
 {
-       return sizeof (int);
+       data = n;
 }
 
-uchar *ClaveFija::ToArray ()
+ClaveFija::ClaveFija (uchar *n)
+{
+       memcpy (&data, n, sizeof(int));
+       memcpy (&block_data, n+sizeof(int), sizeof(int));
+}
+
+uint ClaveFija::Size () const
+{
+       return sizeof (int)+sizeof(uint);
+}
+
+uchar *ClaveFija::ToArray () const
 {
        uchar *out;
-       out = new uchar[sizeof(int)];
+       out = new uchar[Size ()];
        memcpy (out, &data, sizeof(int));
+       memcpy (out+sizeof (int), &block_data, sizeof(int));
+       return out;
+}
+
+Clave *ClaveFija::Clone () const
+{
+       ClaveFija *k = new ClaveFija (*this);
+       return k;
+}
+
+bool ClaveFija::operator < (const Clave &c) const
+{
+       return data < ((ClaveFija&)c).data;
+}
+
+bool ClaveFija::operator == (const Clave &c) const
+{
+       return data == ((ClaveFija&)c).data;
+}
+               
+uchar *ClaveFija::ToRaw (uint &size) const
+{
+       std::stringstream ss;
+
+       ss << "[";
+       ss << 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;
 }