BTree::BTree (const char *name, unsigned int block_size, bool create_new_file)
{
uchar *node;
-
+ BTreeNodeHeader nh;
fp = fopen (name, "wb");
if (!fp) {
/* Creo el primer bloque vacio */
node = new uchar[block_size];
+ ReadNodoHeader (node, &nh);
+ nh.level = 0;
+ nh.free_space = block_size - sizeof (BTreeNodeHeader);
+ nh.item_count = 0;
+ WriteNodoHeader (node, &nh);
write_block (node, 0);
+
delete [] node;
}
void BTree::write_tree_header ()
{
fseek (fp, 0L, SEEK_SET);
- fwrite (&header, 1, sizeof (BTreeHeader), fp);
+ fwrite (&header, 1, sizeof (BTreeFileHeader), fp);
}
void BTree::write_block (uchar *block, uint num)
{
- fseek (fp, num*header.block_size + sizeof (BTreeHeader), SEEK_SET);
+ fseek (fp, num*header.block_size + sizeof (BTreeFileHeader), SEEK_SET);
fwrite (block, 1, header.block_size, fp);
}
void BTree::AddKey () {}
void BTree::DelKey () {}
+void BTree::ReadNodoHeader (uchar *node, BTreeNodeHeader *header)
+{
+ memcpy (header, node, sizeof (BTreeNodeHeader));
+}
+
+void BTree::WriteNodoHeader (uchar *node, BTreeNodeHeader *header)
+{
+ memcpy (node, header, sizeof (BTreeNodeHeader));
+}
+