X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/8699d7e1ccbda4282f8ba693422f337be31d100b..2ab8041933e77875de62bc73e76febc528af258e:/src/btree.h?ds=sidebyside diff --git a/src/btree.h b/src/btree.h index 023c5d7..a67fa4c 100644 --- a/src/btree.h +++ b/src/btree.h @@ -50,6 +50,7 @@ #include "common.h" #include "clave.h" #include "clave_fija.h" +#include "clave_variable.h" #include "btree_data.h" /* alias para codear menos :) */ @@ -86,14 +87,22 @@ struct BTreeNodeHeader { */ class BTree { public: - BTree (const std::string &filename, unsigned int block_size, bool create_new_file = false); + BTree (const std::string &filename, unsigned int block_size, int k_t = KEY_FIXED, bool create_new_file = false); ~BTree (); + /** Tipos de clave a usar */ + enum { + KEY_FIXED, + KEY_VARIABLE + }; + void AddKey (const Clave &k); void DelKey (const Clave &k); - private: + 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); void WriteFileHeader (); @@ -109,6 +118,7 @@ class BTree { std::string filename; BTreeFileHeader header; + int key_type; /** Apunta al archivo de datos, asi se abre solo 1 vez *