X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/a86378ad0949572fd260f105f3e02f2c3e1370a0..8699d7e1ccbda4282f8ba693422f337be31d100b:/src/btree_data.cpp?ds=sidebyside diff --git a/src/btree_data.cpp b/src/btree_data.cpp index dd6f709..46917d6 100644 --- a/src/btree_data.cpp +++ b/src/btree_data.cpp @@ -12,23 +12,32 @@ BTreeData::BTreeData (uchar *node) memcpy (&hijo, node, sizeof (uint)); } +BTreeData::BTreeData (Clave *k, uint child) +{ + clave = k; + hijo = child; +} + BTreeData::~BTreeData () { } -uint BTreeData::Size () +uint BTreeData::Size () const { uint s = sizeof (uint); if (clave) s += clave->Size (); - + else std::cout << "No tengo clave\n"; return s; } -uchar* BTreeData::ToArray () +uchar* BTreeData::ToArray () const { uchar *out = new uchar[Size()]; - memcpy (out, clave->ToArray (), clave->Size ()); - memcpy (out+clave->Size (), &hijo, sizeof (uint)); + if (clave) { + memcpy (out, clave->ToArray (), clave->Size ()); + memcpy (out+clave->Size (), &hijo, sizeof (uint)); + } else + memcpy (out, &hijo, sizeof (uint)); return out; } @@ -42,13 +51,38 @@ BTreeLeafData::~BTreeLeafData () { } -uint BTreeLeafData::Size () +uint BTreeLeafData::Size () const { + if (!clave) { + std::cout << "BTreeLeafData::Size : No tengo clave!" << std::endl; + return 0; + } return clave->Size (); } -uchar* BTreeLeafData::ToArray () +uchar* BTreeLeafData::ToArray () const { return clave->ToArray (); } +BTreeChildData::BTreeChildData (uchar *node) +{ + memcpy (&hijo, node, sizeof (uint)); +} + +BTreeChildData::~BTreeChildData () +{ +} + +uint BTreeChildData::Size () const +{ + return sizeof (uint); +} + +uchar* BTreeChildData::ToArray () const +{ + uchar *out = new uchar[Size()]; + memcpy (out, &hijo, sizeof (uint)); + return out; +} +