Added --with-yc option to configure. For the data1_node in data1.h:
[yaz-moved-to-github.git] / asn / prt-dat.c
1 /*
2  * This file is part of the YAZ toolkit:
3  * Copyright (c) 1998, Index Data.
4  * See the file LICENSE for details.
5  * Sebastian Hammer, Adam Dickmeiss
6  *
7  * Contribution by Ronald van Der Meer (RVDM):
8  *  Databasix Information Systems B.V., Utrecht, The Netherlands.
9  *
10  * $Log: prt-dat.c,v $
11  * Revision 1.2  1998-02-11 11:53:32  adam
12  * Changed code so that it compiles as C++.
13  *
14  * Revision 1.1  1998/02/10 15:31:46  adam
15  * Implemented date and time structure. Changed the Update Extended
16  * Service.
17  *
18  */
19
20 #include <proto.h>
21
22 int z_MonthAndDay(ODR o, Z_MonthAndDay **p, int opt)
23 {
24     if (!odr_sequence_begin(o, p, sizeof(**p)))
25         return opt && odr_ok(o);
26     return
27         odr_implicit(o, odr_integer, &(*p)->month, ODR_CONTEXT, 2, 0) &&
28         odr_implicit(o, odr_integer, &(*p)->day, ODR_CONTEXT, 3, 1) &&
29         odr_sequence_end(o);
30 }
31
32 int z_Quarter(ODR o, Z_Quarter **p, int opt)
33 {
34     static Odr_arm arm[] =
35     {
36         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Quarter_first, (Odr_fun)odr_null},
37         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Quarter_second, (Odr_fun)odr_null},
38         {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Quarter_third, (Odr_fun)odr_null},
39         {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Quarter_fourth, (Odr_fun)odr_null},
40         {-1, -1, -1, -1, 0}
41     };
42
43     if (!odr_initmember(o, p, sizeof(**p)))
44         return opt && odr_ok(o);
45     if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
46         return 1;
47     *p = 0;
48     return opt && odr_ok(o);
49 }
50
51 int z_Season(ODR o, Z_Season **p, int opt)
52 {
53     static Odr_arm arm[] =
54     {
55         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Season_winter, (Odr_fun)odr_null},
56         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Season_spring, (Odr_fun)odr_null},
57         {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Season_summer, (Odr_fun)odr_null},
58         {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Season_autumn, (Odr_fun)odr_null},
59         {-1, -1, -1, -1, 0}
60     };
61
62     if (!odr_initmember(o, p, sizeof(**p)))
63         return opt && odr_ok(o);
64     if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
65         return 1;
66     *p = 0;
67     return opt && odr_ok(o);
68 }
69
70 int z_PartOfYear(ODR o, Z_PartOfYear **p, int opt)
71 {
72     static Odr_arm arm[] =
73     {
74         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_PartOfYear_monthAndDay,
75                 (Odr_fun) z_MonthAndDay},
76         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_PartOfYear_julianDay,
77                 (Odr_fun) odr_integer},
78         {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_PartOfYear_weekNumber,
79                 (Odr_fun) odr_integer},
80         {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_PartOfYear_quarter,
81                 (Odr_fun) z_Quarter},
82         {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_PartOfYear_season,
83                 (Odr_fun) z_Season},
84         {-1, -1, -1, -1, 0}
85     };
86
87     if (!odr_initmember(o, p, sizeof(**p)))
88         return opt && odr_ok(o);
89     if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
90         return 1;
91     *p = 0;
92     return opt && odr_ok(o);
93 }
94
95 int z_Era(ODR o, Z_Era **p, int opt)
96 {
97     static Odr_arm arm[] =
98     {
99         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Era_decade, (Odr_fun)odr_null},
100         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Era_century, (Odr_fun)odr_null},
101         {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Era_millennium, (Odr_fun)odr_null},
102         {-1, -1, -1, -1, 0}
103     };
104
105     if (!odr_initmember(o, p, sizeof(**p)))
106         return opt && odr_ok(o);
107     if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
108         return 1;
109     *p = 0;
110     return opt && odr_ok(o);
111 }
112
113 int z_DateFlags(ODR o, Z_DateFlags **p, int opt)
114 {
115     if (!odr_sequence_begin(o, p, sizeof(**p)))
116         return opt && odr_ok(o);
117     return
118         odr_implicit(o, odr_null, &(*p)->circa, ODR_CONTEXT, 1, 1) &&
119         odr_implicit(o, z_Era, &(*p)->era, ODR_CONTEXT, 2, 1) &&
120         odr_sequence_end(o);
121 }
122
123 int z_Date(ODR o, Z_Date **p, int opt)
124 {
125     if (!odr_sequence_begin(o, p, sizeof(**p)))
126         return opt && odr_ok(o);
127     return
128         odr_implicit(o, odr_integer, &(*p)->year, ODR_CONTEXT, 1, 0) &&
129         odr_implicit(o, z_PartOfYear, &(*p)->partOfYear, ODR_CONTEXT, 1, 1) &&
130         odr_implicit(o, z_DateFlags, &(*p)->flags, ODR_CONTEXT, 2, 1) &&
131         odr_sequence_end(o);
132 }
133
134 int z_Zone(ODR o, Z_Zone **p, int opt)
135 {
136     static Odr_arm arm[] =
137     {
138         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Zone_local, (Odr_fun)odr_null},
139         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Zone_utc, (Odr_fun)odr_null},
140         {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Zone_utcOffset, (Odr_fun)odr_integer},
141         {-1, -1, -1, -1, 0}
142     };
143
144     if (!odr_initmember(o, p, sizeof(**p)))
145         return opt && odr_ok(o);
146     if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
147         return 1;
148     *p = 0;
149     return opt && odr_ok(o);
150 }
151
152 int z_Time(ODR o, Z_Time **p, int opt)
153 {
154     if (!odr_sequence_begin(o, p, sizeof(**p)))
155         return opt && odr_ok(o);
156     return
157         odr_implicit(o, odr_integer, &(*p)->hour, ODR_CONTEXT, 1, 0) &&
158         odr_implicit(o, odr_integer, &(*p)->minute, ODR_CONTEXT, 2, 1) &&
159         odr_implicit(o, odr_integer, &(*p)->second, ODR_CONTEXT, 3, 1) &&
160         odr_implicit(o, z_IntUnit, &(*p)->partOfSecond, ODR_CONTEXT, 4, 1) &&
161         odr_implicit(o, z_Zone, &(*p)->zone, ODR_CONTEXT, 5, 1) &&
162         odr_sequence_end(o);
163 }
164
165 int z_DateTime(ODR o, Z_DateTime **p, int opt)
166 {
167     if (!odr_sequence_begin(o, p, sizeof(**p)))
168         return opt && odr_ok(o);
169     return
170         odr_implicit(o, z_Date, &(*p)->z3950Date, ODR_CONTEXT, 1, 1) &&
171         odr_implicit(o, z_Time, &(*p)->z3950Time, ODR_CONTEXT, 2, 1) &&
172         odr_sequence_end(o);
173 }
174