]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/clave.h
tagged 1.1
[z.facultad/75.52/treemulator.git] / src / clave.h
1
2 #ifndef _CLAVE_H_
3 #define _CLAVE_H_
4
5 #include "common.h"
6 #include <string>
7
8 /** Clase abstracta para manejo de Claves */
9 class Clave {
10         public:
11                 virtual ~Clave () {}
12
13                 void SetBlockData (int i) { block_data = i; }
14                 uint GetBlockData () { return block_data; }
15
16                 /** Retorna el tamaño en bytes que ocupa la clave */
17                 virtual uint Size () const = 0;
18                 /** Retorna un array de bytes de Size() de longitud.
19                  * 
20                  *  El contenido del array es la clave en formato RAW
21                  *  para guardar en disco.
22                  *
23                  *  El array debe ser liberado por el llamador.
24                  */
25                 virtual uchar *ToArray () const = 0;
26                 virtual uchar *ToRaw (uint &size) const = 0;
27
28                 /** Retorna un clon de la clave actual */
29                 virtual Clave *Clone () const = 0;
30
31                 virtual bool operator < (const Clave &k) const = 0;
32                 virtual bool operator == (const Clave &k) const = 0;
33                 virtual operator std::string () const = 0;
34         protected:
35                 uint block_data;
36 };
37
38 #endif
39