SHARE
TWEET

Untitled

a guest Aug 12th, 2017 44 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "Cuba.h"
  2. #include <sstream>
  3.  
  4. using namespace std;
  5.  
  6. Cuba::Cuba()
  7. {
  8.     this -> profundidad = 0;
  9. }
  10.  
  11. Cuba::Cuba(long int tamanio)
  12. {
  13.     this -> tamanio     = tamanio;
  14.     this -> profundidad = 0;
  15. }
  16.  
  17. Cuba::~Cuba()
  18. {
  19. }
  20.  
  21. unsigned int Cuba::getProfundidad() const
  22. {
  23.     return this -> profundidad;
  24. }
  25.  
  26. void Cuba::setProfundidad(const unsigned int & profundidad)
  27. {
  28.     this -> profundidad = profundidad;
  29. }
  30.  
  31. void Cuba::incrementarProfundidad()
  32. {
  33.     profundidad++;
  34. }
  35.  
  36. void Cuba::decrementarProfundidad()
  37. {
  38.     profundidad--;
  39. }
  40.  
  41. bool Cuba::puedeAgregar(const Registro * registro) const
  42. {
  43.     stringstream s;
  44.  
  45.     ((RegistroIndice *) registro) -> serializar(s);
  46.  
  47.     return (this -> espacioLibre() >= (long int) (s.str().size()));
  48. }
  49.  
  50. /* Agrega el registro directamente -no verifica nada */
  51. void Cuba::agregarRegistro(Registro * registro)
  52. {
  53.     //TODO: ver si usamos el clonar o no
  54.     this -> listaRegistros.push_back(registro);
  55. }
  56.  
  57.     /**
  58.      * Reduce el atributo profundidad en 1 y combina las claves/referencias de dos cubas en una.
  59.      * Devuelve true si se lograron combinar, false en caso contrario.
  60.      */
  61. bool Cuba::combinar(Cuba &cuba){
  62.     bool respuesta;
  63.    
  64.     return respuesta;
  65. }
  66.  
  67.    /**
  68.      * Aumenta el atributo profundidad en 1 y separa la cuba actual en dos Cubas. Aquellas
  69.      * claves en las cuales el bit en la posicion profundidad valga 0, se quedan en la actual cuba,
  70.      * el resto de las claves con sus respectivas referencias van a la nueva Cuba.
  71.      */
  72.     //Cuba* dividir(const IndiceHashExtensible &indiceHash);
  73.  
  74.  
  75.  
  76. string Cuba::especializarSerializar() const
  77. {
  78.     stringstream buffer, tamano, especializacion;
  79.  
  80.     buffer << "C" << this -> profundidad;
  81.     tamano << buffer.str().size();
  82.     especializacion << tamano.str() << buffer.str();
  83.  
  84.     buffer.str(string());
  85.     buffer.clear();
  86.     tamano.str(string());
  87.     tamano.clear();
  88.  
  89.     return especializacion.str();
  90. }
  91.  
  92. void Cuba::especializarHidratar(stringstream & s)
  93. {
  94.     stringstream aux;
  95.  
  96.     aux << this -> obtenerComponente(s);
  97.     aux >> this -> profundidad;
  98. }
RAW Paste Data
Top