/** Dato a guardar en los nodos */
class BTreeData {
public:
+ BTreeData () {}
BTreeData (uchar *node);
+ BTreeData (Clave *k, uint child);
virtual ~BTreeData ();
- virtual uint Size ();
- virtual uchar *ToArray ();
+ virtual uint Size () const;
+ virtual uchar *ToArray () const;
+
+ Clave* getClave () { return clave; }
+
+ bool operator < (const BTreeData &data) const;
+ virtual operator std::string () const {
+ std::string out = (*clave);
+ std::stringstream ss;
+ ss << out << " ";
+ ss << hijo;
+ ss >> out;
+ return out;
+ }
protected:
Clave *clave;
- uint hijo_izquierdo;
+ uint hijo;
};
/** Dato a guardar en las hojas */
-class BTreeLeafData:BTreeData {
+class BTreeLeafData:public BTreeData {
public:
+ BTreeLeafData (Clave *k) { clave = k; }
+ BTreeLeafData (uchar *node) { clave = new ClaveFija (node); }
virtual ~BTreeLeafData ();
- virtual uint Size ();
- virtual uchar *ToArray ();
+ virtual uint Size () const;
+ virtual uchar *ToArray () const;
+ virtual operator std::string () const {
+ if (clave) {
+ return (*clave);
+ }
+ return "NoKey";
+ }
+};
+
+class BTreeChildData:public BTreeData {
+ public:
+ BTreeChildData (uint child):BTreeData () { hijo = child; }
+ BTreeChildData (uchar *node);
+ virtual ~BTreeChildData ();
+
+ virtual uint Size () const;
+ virtual uchar *ToArray () const;
+ virtual operator std::string () const {
+ std::string out;
+ std::stringstream ss;
+ ss << hijo;
+ ss >> out;
+ return out;
+ }
};
#endif