X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/040dbe0b9f316dd73d5d481dd5f889b04e1629bb..6fcd86dce909f05de818fdd78d76e70aabc3ad22:/src/btree.h?ds=sidebyside diff --git a/src/btree.h b/src/btree.h index 6764a63..cacd29b 100644 --- a/src/btree.h +++ b/src/btree.h @@ -44,9 +44,7 @@ * tomar una idea simimar) */ -#include -#include -#include +#include /* alias para codear menos :) */ typedef unsigned char uchar; @@ -75,46 +73,33 @@ typedef struct _btree_header_ { unsigned int item_count; } BTreeHeader; -typedef struct _btree_ { - char *filename; - BTreeFileHeader header; - - /** Apunta al archivo de datos, asi se abre solo 1 vez - * - * \TODO Ver si vale la pena - */ - FILE *fp; -} BTree; - /** Crea un nuevo arbol B * * \param filename Nombre del archivo a crear * \param block_size TamaƱo de bloque a utilizar * \return Un nuevo arbol B creado o NULL en caso de error */ -BTree *btree_create (const char *filename, unsigned int block_size); - -/** Abre un arbol B existente - * - * \param filename Nombre del archivo a abrir - * \return El arbol abierto o NULL en caso de error - */ -BTree *btree_open (const char *filename); - -/** Agrega una clave en el arbol - * - * \TODO Definir parametros - */ -int btree_add (BTree *); - -/** Borra una clave del arbol - * - * \TODO Definir parametros - */ -int btree_del (BTree *); - -/** Cierra el arbol y libera los recursos */ -int btree_close (BTree *); +class BTree { + public: + BTree (const char *filename, unsigned int block_size, bool create_new_file = false); + ~BTree (); + + void AddKey (); + void DelKey (); + + private: + void write_tree_header (); + void write_block (uchar *block, uint num); + + std::string filename; + BTreeFileHeader header; + + /** Apunta al archivo de datos, asi se abre solo 1 vez + * + * \TODO Ver si vale la pena + */ + FILE *fp; +}; #endif // _B_TREE_H