+ /** Tipos de clave a usar */
+ enum {
+ KEY_FIXED,
+ 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 ();
+
+ void WriteBlock (uchar *block, uint num);
+ uchar *ReadBlock (uint num);
+ uchar *NewBlock (uint &num);