La idea es que el manejo sea transparente a travez del tipo "Clave" y toda
la magia la haga los objetitos.
all: $(TARGET)
-$(TARGET): main.o btree.o
- g++ -o $(TARGET) main.o btree.o
+$(TARGET): main.o btree.o clave_fija.o
+ g++ -o $(TARGET) main.o btree.o clave_fija.o
+
*/
#include <string>
+#include "common.h"
/* alias para codear menos :) */
-typedef unsigned char uchar;
/** Encabezado del archivo BTree */
typedef struct _btree_file_ {
--- /dev/null
+
+#ifndef _CLAVE_H_
+#define _CLAVE_H_
+
+/* Clave para agregar a un arbol B */
+#include "common.h"
+
+class Clave {
+ public:
+ virtual ~Clave () {}
+
+ virtual uint Size () = 0;
+ virtual uchar *ToArray () = 0;
+};
+
+#endif
+
--- /dev/null
+
+#include <string>
+#include "clave_fija.h"
+
+uint ClaveFija::Size ()
+{
+ return sizeof (int);
+}
+
+uchar *ClaveFija::ToArray ()
+{
+ uchar *out;
+ out = new uchar[sizeof(int)];
+ memcpy (out, &data, sizeof(int));
+ return out;
+}
+
--- /dev/null
+
+#ifndef _CLAVE_FIJA_H_
+#define _CLAVE_FIJA_H_
+
+#include "clave.h"
+
+class ClaveFija : Clave {
+ public :
+ virtual ~ClaveFija () {}
+
+ virtual uint Size ();
+ virtual uchar *ToArray ();
+
+ private:
+ int data;
+};
+
+#endif
+
--- /dev/null
+
+#ifndef _COMMON_H_
+#define _COMMON_H_
+
+typedef unsigned char uchar;
+typedef unsigned int uint;
+
+#endif
+