]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/clave_fija.cpp
UNDO: Cambio constructor por metodo estatico.
[z.facultad/75.52/treemulator.git] / src / clave_fija.cpp
index a954e2451ef81b29d71ad559c3078ebe85056c4c..ea8c09e6763f8f42db9ae4f4feaa256b37c2e473 100644 (file)
@@ -10,18 +10,56 @@ ClaveFija::ClaveFija (int n)
 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;
 }