revise hashvector_contents to optionally create the target vector
[rrq/rrqmisc.git] / vector / itemkeyfun.h
index ee71ca5d9eae255ae218bda731fc27906eaa4202..7bbe62579d4313045aa1591ee44a27b692834010 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef itemkeyfun_H
 #define itemkeyfun_H
 
+#include <stdio.h>
+
 /**
  * \struct itemkeyfun
  *
@@ -13,9 +15,9 @@
  * items that have that key. Different keys may yield the same
  * hashcode.
  */
-typedef struct _itemkeyfun {
+typedef struct {
 
-#define SELF struct _itemkeyfun *this
+#define SELF void *this
     /**
      * This callback function should return the hashcode of a key. The
      * hashcode is used for indexing into the backing vector for
@@ -48,6 +50,12 @@ typedef struct _itemkeyfun {
      */
     void (*releasekey)(SELF,void *key);
 
+    /**
+     * This callback function writes a representation of an item into
+     * a character buffer.
+     */
+    int (*tostring)(SELF,void *item,char *buffer,int limit);
+
 #undef SELF
 } itemkeyfun;