2 * Copyright (C) 1994-1999, Index Data
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.4 1999-05-20 12:57:18 adam
8 * Implemented TCL filter. Updated recctrl system.
10 * Revision 1.3 1998/10/16 08:14:36 adam
11 * Updated record control system.
13 * Revision 1.2 1996/10/29 14:03:16 adam
14 * Include zebrautl.h instead of alexutil.h.
16 * Revision 1.1 1996/10/11 10:57:24 adam
17 * New module recctrl. Used to manage records (extract/retrieval).
19 * Revision 1.5 1996/06/04 10:18:59 adam
20 * Minor changes - removed include of ctype.h.
22 * Revision 1.4 1995/12/04 17:59:24 adam
23 * More work on regular expression conversion.
25 * Revision 1.3 1995/12/04 14:22:30 adam
26 * Extra arg to recType_byName.
27 * Started work on new regular expression parsed input to
30 * Revision 1.2 1995/11/15 14:46:19 adam
31 * Started work on better record management system.
33 * Revision 1.1 1995/09/27 12:22:28 adam
34 * More work on extract in record control.
35 * Field name is not in isam keys but in prefix in dictionary words.
48 struct recTypeEntry *next;
55 struct recTypeEntry *entries;
58 RecTypes recTypes_init (data1_handle dh)
60 RecTypes p = (RecTypes) nmem_malloc (data1_nmem_get (dh), sizeof(*p));
67 void recTypes_destroy (RecTypes rts)
69 struct recTypeEntry *rte;
71 for (rte = rts->entries; rte; rte = rte->next)
73 (*(rte->recType)->destroy)(rte->clientData);
76 void recTypes_add_handler (RecTypes rts, RecType rt)
78 struct recTypeEntry *rte;
80 rte = nmem_malloc (data1_nmem_get (rts->dh), sizeof(*rte));
85 rte->next = rts->entries;
89 RecType recType_byName (RecTypes rts, const char *name, char *subType,
92 struct recTypeEntry *rte;
96 strcpy (tmpname, name);
97 if ((p = strchr (tmpname, '.')))
100 strcpy (subType, p+1);
104 for (rte = rts->entries; rte; rte = rte->next)
105 if (!strcmp (rte->recType->name, tmpname))
111 (*(rte->recType)->init)(rte->recType);
113 *clientDataP = rte->clientData;
119 void recTypes_default_handlers (RecTypes rts)
121 recTypes_add_handler (rts, recTypeGrs);
122 recTypes_add_handler (rts, recTypeText);