BTreeData::~BTreeData ()
{
+ if (clave)
+ delete clave;
}
uint BTreeData::Size () const
{
uchar *out = new uchar[Size()];
if (clave) {
- memcpy (out, clave->ToArray (), clave->Size ());
+ uchar *n = clave->ToArray ();
+ memcpy (out, n, clave->Size ());
memcpy (out+clave->Size (), &hijo, sizeof (uint));
+ delete [] n;
} else
memcpy (out, &hijo, sizeof (uint));
return out;
return (*clave) == (*(data.clave));
}
+bool BTreeData::Abrev (BTreeData *anterior)
+{
+ if (anterior == NULL) return false;
+
+ ClaveVariable *c = (ClaveVariable *)clave;
+ return c->Abrev (dynamic_cast<ClaveVariable *>(anterior->getClave ()));
+}
+
+bool BTreeData::DesAbrev (BTreeData *anterior)
+{
+ if (anterior == NULL) return false;
+
+ ClaveVariable *c = (ClaveVariable *)clave;
+ return c->DesAbrev (dynamic_cast<ClaveVariable *>(anterior->getClave ()));
+}
+
BTreeLeafData::BTreeLeafData (uchar *node, int key_type)
{
if (key_type == BTree::KEY_FIXED)