#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;
+}
+
+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;
}