Renamed logf function to yaz_log. Removed VC++ project files.
[yaz-moved-to-github.git] / asn / prt-add.c
1 /*
2  * Copyright (c) 1995-1999, Index Data
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: prt-add.c,v $
7  * Revision 1.5  1999-04-20 09:56:47  adam
8  * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
9  * Modified all encoders/decoders to reflect this change.
10  *
11  * Revision 1.4  1998/02/11 11:53:32  adam
12  * Changed code so that it compiles as C++.
13  *
14  * Revision 1.3  1998/01/05 09:04:57  adam
15  * Fixed bugs in encoders/decoders - Not operator (!) missing.
16  *
17  * Revision 1.2  1997/04/30 08:52:02  quinn
18  * Null
19  *
20  * Revision 1.1  1996/10/10  11:52:18  quinn
21  * Added SearchResult additionalInfo
22  *
23  *
24  */
25
26 #include <proto.h>
27
28 int z_ResultsByDBList (ODR o, Z_ResultsByDBList **p, int opt, const char *name)
29 {
30     if (!odr_initmember (o, p, sizeof(**p)))
31         return opt && odr_ok(o);
32     if (odr_sequence_of (o, z_DatabaseName, &(*p)->elements,
33         &(*p)->num, 0))
34         return 1;
35     *p = 0;
36     return opt && odr_ok(o);
37 }
38
39 int z_ResultsByDB_elem (ODR o, Z_ResultsByDB_elem **p, int opt,
40                         const char *name)
41 {
42     static Odr_arm arm[] = {
43         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ResultsByDB_all,
44          (Odr_fun)odr_null, 0},
45         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ResultsByDB_list,
46          (Odr_fun)z_ResultsByDBList, 0},
47         {-1, -1, -1, -1, 0, 0}
48     };
49     if (!odr_sequence_begin (o, p, sizeof(**p), 0))
50         return opt && odr_ok (o);
51     return
52         odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, 0) &&
53         odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
54         odr_constructed_end (o) &&
55         odr_implicit (o, odr_integer,
56                       &(*p)->count, ODR_CONTEXT, 2, 1) &&
57         odr_implicit (o, z_InternationalString,
58                       &(*p)->resultSetName, ODR_CONTEXT, 3, 1) &&
59         odr_sequence_end (o);
60 }
61
62 int z_ResultsByDB (ODR o, Z_ResultsByDB **p, int opt, const char *name)
63 {
64     if (!odr_initmember (o, p, sizeof(**p)))
65         return opt && odr_ok(o);
66     if (odr_sequence_of (o, (Odr_fun)z_ResultsByDB_elem, &(*p)->elements,
67                          &(*p)->num, 0))
68         return 1;
69     *p = 0;
70     return opt && odr_ok(o);
71 }
72
73 int z_QueryExpressionTerm (ODR o, Z_QueryExpressionTerm **p, int opt,
74                            const char *name)
75 {
76     if (!odr_sequence_begin (o, p, sizeof(**p), 0))
77         return opt && odr_ok (o);
78     return
79         odr_explicit (o, z_Term,
80                       &(*p)->queryTerm, ODR_CONTEXT, 1, 0) &&
81         odr_implicit (o, z_InternationalString,
82                       &(*p)->termComment, ODR_CONTEXT, 2, 1) &&
83         odr_sequence_end (o);
84 }
85
86 int z_QueryExpression (ODR o, Z_QueryExpression **p, int opt,
87                        const char *name)
88 {
89     static Odr_arm arm[] = {
90         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryExpression_term,
91          (Odr_fun)z_QueryExpressionTerm, 0},
92         {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_QueryExpression_query,
93          (Odr_fun)z_Query, 0},
94         {-1, -1, -1, -1, 0, 0}
95     };
96     if (!odr_initmember(o, p, sizeof(**p)))
97         return opt && odr_ok(o);
98     if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0))
99         return 1;
100     *p = 0;
101     return opt && odr_ok(o);
102 }
103
104 int z_SearchInfoReport_elem (ODR o, Z_SearchInfoReport_elem **p, int opt,
105                              const char *name)
106 {
107     if (!odr_sequence_begin (o, p, sizeof(**p), 0))
108         return opt && odr_ok (o);
109     return
110         odr_implicit (o, z_InternationalString,
111                       &(*p)->subqueryId, ODR_CONTEXT, 1, 1) &&
112         odr_implicit (o, odr_bool,
113                       &(*p)->fullQuery, ODR_CONTEXT, 2, 0) &&
114         odr_explicit (o, z_QueryExpression,
115                       &(*p)->subqueryExpression, ODR_CONTEXT, 3, 1) &&
116         odr_explicit (o, z_QueryExpression,
117                       &(*p)->subqueryInterpretation, ODR_CONTEXT, 4, 1) &&
118         odr_explicit (o, z_QueryExpression,
119                       &(*p)->subqueryRecommendation, ODR_CONTEXT, 5, 1) &&
120         odr_implicit (o, odr_integer,
121                       &(*p)->subqueryCount, ODR_CONTEXT, 6, 1) &&
122         odr_implicit (o, z_IntUnit,
123                       &(*p)->subqueryWeight, ODR_CONTEXT, 7, 1) &&
124         odr_implicit (o, z_ResultsByDB,
125                       &(*p)->resultsByDB, ODR_CONTEXT, 8, 1) &&
126         odr_sequence_end (o);
127 }
128
129 int z_SearchInfoReport (ODR o, Z_SearchInfoReport **p, int opt,
130                         const char *name)
131 {
132     if (!odr_initmember (o, p, sizeof(**p)))
133         return opt && odr_ok(o);
134     if (odr_sequence_of (o, (Odr_fun)z_SearchInfoReport_elem, &(*p)->elements,
135                          &(*p)->num, 0))
136         return 1;
137     *p = 0;
138     return opt && odr_ok(o);
139 }