* tomar una idea simimar)
*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <string>
/* alias para codear menos :) */
typedef unsigned char uchar;
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