X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/2ab8041933e77875de62bc73e76febc528af258e..b192ca855bf9015796ec8f9093d8c872fffbcd5c:/src/btree.h diff --git a/src/btree.h b/src/btree.h index a67fa4c..afcec63 100644 --- a/src/btree.h +++ b/src/btree.h @@ -79,10 +79,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 +97,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 +125,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;