+ char *name; /* Name of record type */
+ void *(*init)(Res res, RecType recType); /* Init function - called once */
+ void (*config)(void *clientData, Res res, const char *args); /* Config */
+ void (*destroy)(void *clientData); /* Destroy function */
+ int (*extract)(void *clientData,
+ struct recExtractCtrl *ctrl); /* Extract proc */
+ int (*retrieve)(void *clientData,
+ struct recRetrieveCtrl *ctrl); /* Retrieve proc */
+};
+
+#define RECCTRL_EXTRACT_OK 0
+#define RECCTRL_EXTRACT_EOF 1
+#define RECCTRL_EXTRACT_ERROR_GENERIC 2
+#define RECCTRL_EXTRACT_ERROR_NO_SUCH_FILTER 3
+
+typedef struct recTypeClass *RecTypeClass;
+typedef struct recTypes *RecTypes;
+
+RecTypeClass recTypeClass_create (Res res, NMEM nmem);
+void recTypeClass_destroy(RecTypeClass rtc);
+void recTypeClass_info(RecTypeClass rtc, void *cd,
+ void (*cb)(void *cd, const char *s));
+
+RecTypes recTypes_init(RecTypeClass rtc, data1_handle dh);
+void recTypes_destroy(RecTypes recTypes);
+void recTypes_default_handlers(RecTypes recTypes, Res res);