*** empty log message ***
[yaz-moved-to-github.git] / retrieval / d1_handle.c
1 /*
2  * Copyright (c) 1995-1997, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: d1_handle.c,v $
7  * Revision 1.3  1998-02-11 11:53:35  adam
8  * Changed code so that it compiles as C++.
9  *
10  * Revision 1.2  1997/09/30 11:50:04  adam
11  * Added handler data1_get_map_buf that is used by data1_nodetomarc.
12  *
13  * Revision 1.1  1997/09/17 12:28:24  adam
14  * Introduced new 'global' data1 handle.
15  *
16  */
17
18 #include <stdio.h>
19 #include <stdlib.h>
20
21 #include <log.h>
22 #include <data1.h>
23
24 struct data1_handle_info {
25     WRBUF wrbuf;
26     char *tab_path;
27
28     char *read_buf;
29     int read_len;
30
31     data1_absyn_cache absyn_cache;
32
33     char *map_buf;
34     int map_len;
35
36     NMEM mem;
37 };
38
39 data1_handle data1_create (void)
40 {
41     data1_handle p = (data1_handle)xmalloc (sizeof(*p));
42     if (!p)
43         return NULL;
44     p->tab_path = NULL;
45     p->wrbuf = wrbuf_alloc();
46     p->read_buf = NULL;
47     p->read_len = 0;
48     p->map_buf = NULL;
49     p->map_len = 0;
50     p->absyn_cache = NULL;
51     p->mem = nmem_create ();
52     return p;
53 }
54
55 NMEM data1_nmem_get (data1_handle dh)
56 {
57     return dh->mem;
58 }
59
60 data1_absyn_cache *data1_absyn_cache_get (data1_handle dh)
61 {
62     return &dh->absyn_cache;
63 }
64
65 void data1_destroy (data1_handle dh)
66 {
67     if (!dh)
68         return;
69     wrbuf_free (dh->wrbuf, 1);
70     if (dh->tab_path)
71         xfree (dh->tab_path);
72     if (dh->read_buf)
73         xfree (dh->read_buf);
74     if (dh->map_buf)
75         xfree (dh->map_buf);
76     nmem_destroy (dh->mem);
77     
78     xfree (dh);
79 }
80
81 WRBUF data1_get_wrbuf (data1_handle dp)
82 {
83     return dp->wrbuf;
84 }
85
86 char **data1_get_read_buf (data1_handle dp, int **lenp)
87 {
88     *lenp = &dp->read_len;
89     logf (LOG_DEBUG, "data1_get_read_buf lenp=%u", **lenp);
90     return &dp->read_buf;
91 }
92
93 char **data1_get_map_buf (data1_handle dp, int **lenp)
94 {
95     *lenp = &dp->map_len;
96     logf (LOG_DEBUG, "data1_get_map_buf lenp=%u", **lenp);
97     return &dp->map_buf;
98 }
99
100 void data1_set_tabpath (data1_handle dp, const char *p)
101 {
102     if (dp->tab_path)
103     {
104         xfree (dp->tab_path);
105         dp->tab_path = NULL;
106     }
107     if (p)
108     {
109         dp->tab_path = (char *)xmalloc (strlen(p)+1);
110         strcpy (dp->tab_path, p);
111     }
112 }
113
114 const char *data1_get_tabpath (data1_handle dp)
115 {
116     return dp->tab_path;
117 }
118