X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/6d49476dc3816c4ba38637bc21f44693ca66af32..113597e3c369b18fa4e73a0b9744398a0e9e0a79:/src/btree.h diff --git a/src/btree.h b/src/btree.h index 8d86583..95180b0 100644 --- a/src/btree.h +++ b/src/btree.h @@ -46,18 +46,20 @@ #include #include +#include #include "common.h" #include "clave.h" +#include "clave_fija.h" /* alias para codear menos :) */ /** Encabezado del archivo BTree */ -typedef struct _btree_file_ { +struct BTreeFileHeader { uint block_size; -} BTreeFileHeader; +}; /** Encabezado de un bloque */ -typedef struct _btree_header_ { +struct BTreeNodeHeader { /** Indica a que nivel corresponde un bloque * * nivel == 0 : una hoja @@ -73,7 +75,7 @@ typedef struct _btree_header_ { /** Cantidad de elementos en el nodo */ unsigned int item_count; -} BTreeNodeHeader; +}; /** Crea un nuevo arbol B * @@ -83,11 +85,11 @@ typedef struct _btree_header_ { */ class BTree { public: - BTree (const char *filename, unsigned int block_size, bool create_new_file = false); + BTree (const std::string &filename, unsigned int block_size, bool create_new_file = false); ~BTree (); - void AddKey (Clave &k); - void DelKey (Clave &k); + void AddKey (const Clave &k); + void DelKey (const Clave &k); private: void write_tree_header (); @@ -98,6 +100,8 @@ class BTree { void ReadNodoHeader (uchar *node, BTreeNodeHeader *header); void WriteNodoHeader (uchar *node, BTreeNodeHeader *header); + std::list ReadKeys (uchar *node, BTreeNodeHeader &node_header); + std::string filename; BTreeFileHeader header;