]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/clave_fija.cpp
tagged 1.0-pre2
[z.facultad/75.52/treemulator.git] / src / clave_fija.cpp
index 67edc4c85512d6adeaf8b4ca44ab0bc3f08233b0..d947e2a4cb82405c07dc0a0d2497d3e5ff49d484 100644 (file)
@@ -2,26 +2,29 @@
 #include <string>
 #include "clave_fija.h"
 
-ClaveFija::ClaveFija (int n)
+ClaveFija::ClaveFija (int n, uint bd)
 {
        data = n;
+       block_data = bd;
 }
 
 ClaveFija::ClaveFija (uchar *n)
 {
        memcpy (&data, n, sizeof(int));
+       memcpy (&block_data, n+sizeof(int), sizeof(int));
 }
 
 uint ClaveFija::Size () const
 {
-       return sizeof (int);
+       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;
 }
 
@@ -31,3 +34,33 @@ Clave *ClaveFija::Clone () const
        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;
+}
+