/* alias para codear menos :) */
-/** Encabezado del archivo BTree */
+/** Encabezado del archivo BTree
+ *
+ * Esta estructura es para comodidad de manejo, aunque en disco
+ * ocupe block_size de tamaño.
+ */
struct BTreeFileHeader {
uint block_size;
};
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 {
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 ();
std::list<BTreeData *> ReadKeys (uchar *node, BTreeNodeHeader &node_header);
void WriteKeys (uchar *node, BTreeNodeHeader &node_header, std::list<BTreeData *> &keys);
+ void DeleteKeys (std::list<BTreeData *> &keys);
+
std::string filename;
BTreeFileHeader header;
int key_type;
/* DEBUG */
+ public:
void PrintNode (uint num);
};