X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/2ab8041933e77875de62bc73e76febc528af258e..d9f6b6c969656b47f1e6a051cfc65959bd5c069f:/src/btree.h?ds=sidebyside diff --git a/src/btree.h b/src/btree.h index a67fa4c..df427ed 100644 --- a/src/btree.h +++ b/src/btree.h @@ -55,7 +55,11 @@ /* alias para codear menos :) */ -/** Encabezado del archivo BTree */ +/** Encabezado del archivo BTree + * + * Esta estructura es para comodidad de manejo, aunque en disco + * ocupe block_size de tamaño. + */ struct BTreeFileHeader { uint block_size; }; @@ -79,10 +83,11 @@ struct BTreeNodeHeader { unsigned int item_count; }; -/** Crea un nuevo arbol B +/** Modelo del árbol B * * \param filename Nombre del archivo a crear * \param block_size Tamaño de bloque a utilizar + * \param k_t Tipo de clave a utilizar * \return Un nuevo arbol B creado o NULL en caso de error */ class BTree { @@ -96,13 +101,21 @@ class BTree { KEY_VARIABLE }; + /** Agrega una nueva clave al árbol. */ void AddKey (const Clave &k); + /** Elimina una clave del árbol. */ void DelKey (const Clave &k); + /** Busca si existe una clave en el árbol + * + * \TODO : Deberia retornar algun tipo de dato + */ + bool FindKey (const Clave &k); protected: Clave* AddKeyR (const Clave *k, uint node_num, uint &left_child, uint &right_child); Clave* AddKeyOtherR (const Clave *k, uint node_num, uint &left_child, uint &right_child); Clave* AddKeyLeafR (const Clave *k, uint node_num, uint &left_child, uint &right_child); + bool FindKeyR (const Clave *k, uint node); void WriteFileHeader (); @@ -116,6 +129,8 @@ class BTree { std::list ReadKeys (uchar *node, BTreeNodeHeader &node_header); void WriteKeys (uchar *node, BTreeNodeHeader &node_header, std::list &keys); + void DeleteKeys (std::list &keys); + std::string filename; BTreeFileHeader header; int key_type; @@ -128,6 +143,7 @@ class BTree { /* DEBUG */ + public: void PrintNode (uint num); };