00001
00007 #include <yaz/z-opac.h>
00008
00009 int z_OPACRecord (ODR o, Z_OPACRecord **p, int opt, const char *name)
00010 {
00011 if (!odr_sequence_begin (o, p, sizeof(**p), name))
00012 return odr_missing(o, opt, name) && odr_ok (o);
00013 return
00014 odr_implicit_tag (o, z_External,
00015 &(*p)->bibliographicRecord, ODR_CONTEXT, 1, 1, "bibliographicRecord") &&
00016 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
00017 (odr_sequence_of(o, (Odr_fun) z_HoldingsRecord, &(*p)->holdingsData,
00018 &(*p)->num_holdingsData, "holdingsData") || odr_ok(o)) &&
00019 odr_sequence_end (o);
00020 }
00021
00022 int z_HoldingsRecord (ODR o, Z_HoldingsRecord **p, int opt, const char *name)
00023 {
00024 static Odr_arm arm[] = {
00025 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_HoldingsRecord_marcHoldingsRecord,
00026 (Odr_fun) z_External, "marcHoldingsRecord"},
00027 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_HoldingsRecord_holdingsAndCirc,
00028 (Odr_fun) z_HoldingsAndCircData, "holdingsAndCirc"},
00029 {-1, -1, -1, -1, (Odr_fun) 0, 0}
00030 };
00031 if (!odr_initmember(o, p, sizeof(**p)))
00032 return odr_missing(o, opt, name);
00033 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
00034 return 1;
00035 if(o->direction == ODR_DECODE)
00036 *p = 0;
00037 return odr_missing(o, opt, name);
00038 }
00039
00040 int z_HoldingsAndCircData (ODR o, Z_HoldingsAndCircData **p, int opt, const char *name)
00041 {
00042 if (!odr_sequence_begin (o, p, sizeof(**p), name))
00043 return odr_missing(o, opt, name) && odr_ok (o);
00044 return
00045 odr_implicit_tag (o, z_InternationalString,
00046 &(*p)->typeOfRecord, ODR_CONTEXT, 1, 1, "typeOfRecord") &&
00047 odr_implicit_tag (o, z_InternationalString,
00048 &(*p)->encodingLevel, ODR_CONTEXT, 2, 1, "encodingLevel") &&
00049 odr_implicit_tag (o, z_InternationalString,
00050 &(*p)->format, ODR_CONTEXT, 3, 1, "format") &&
00051 odr_implicit_tag (o, z_InternationalString,
00052 &(*p)->receiptAcqStatus, ODR_CONTEXT, 4, 1, "receiptAcqStatus") &&
00053 odr_implicit_tag (o, z_InternationalString,
00054 &(*p)->generalRetention, ODR_CONTEXT, 5, 1, "generalRetention") &&
00055 odr_implicit_tag (o, z_InternationalString,
00056 &(*p)->completeness, ODR_CONTEXT, 6, 1, "completeness") &&
00057 odr_implicit_tag (o, z_InternationalString,
00058 &(*p)->dateOfReport, ODR_CONTEXT, 7, 1, "dateOfReport") &&
00059 odr_implicit_tag (o, z_InternationalString,
00060 &(*p)->nucCode, ODR_CONTEXT, 8, 1, "nucCode") &&
00061 odr_implicit_tag (o, z_InternationalString,
00062 &(*p)->localLocation, ODR_CONTEXT, 9, 1, "localLocation") &&
00063 odr_implicit_tag (o, z_InternationalString,
00064 &(*p)->shelvingLocation, ODR_CONTEXT, 10, 1, "shelvingLocation") &&
00065 odr_implicit_tag (o, z_InternationalString,
00066 &(*p)->callNumber, ODR_CONTEXT, 11, 1, "callNumber") &&
00067 odr_implicit_tag (o, z_InternationalString,
00068 &(*p)->shelvingData, ODR_CONTEXT, 12, 1, "shelvingData") &&
00069 odr_implicit_tag (o, z_InternationalString,
00070 &(*p)->copyNumber, ODR_CONTEXT, 13, 1, "copyNumber") &&
00071 odr_implicit_tag (o, z_InternationalString,
00072 &(*p)->publicNote, ODR_CONTEXT, 14, 1, "publicNote") &&
00073 odr_implicit_tag (o, z_InternationalString,
00074 &(*p)->reproductionNote, ODR_CONTEXT, 15, 1, "reproductionNote") &&
00075 odr_implicit_tag (o, z_InternationalString,
00076 &(*p)->termsUseRepro, ODR_CONTEXT, 16, 1, "termsUseRepro") &&
00077 odr_implicit_tag (o, z_InternationalString,
00078 &(*p)->enumAndChron, ODR_CONTEXT, 17, 1, "enumAndChron") &&
00079 odr_implicit_settag (o, ODR_CONTEXT, 18) &&
00080 (odr_sequence_of(o, (Odr_fun) z_Volume, &(*p)->volumes,
00081 &(*p)->num_volumes, "volumes") || odr_ok(o)) &&
00082 odr_implicit_settag (o, ODR_CONTEXT, 19) &&
00083 (odr_sequence_of(o, (Odr_fun) z_CircRecord, &(*p)->circulationData,
00084 &(*p)->num_circulationData, "circulationData") || odr_ok(o)) &&
00085 odr_sequence_end (o);
00086 }
00087
00088 int z_Volume (ODR o, Z_Volume **p, int opt, const char *name)
00089 {
00090 if (!odr_sequence_begin (o, p, sizeof(**p), name))
00091 return odr_missing(o, opt, name) && odr_ok (o);
00092 return
00093 odr_implicit_tag (o, z_InternationalString,
00094 &(*p)->enumeration, ODR_CONTEXT, 1, 1, "enumeration") &&
00095 odr_implicit_tag (o, z_InternationalString,
00096 &(*p)->chronology, ODR_CONTEXT, 2, 1, "chronology") &&
00097 odr_implicit_tag (o, z_InternationalString,
00098 &(*p)->enumAndChron, ODR_CONTEXT, 3, 1, "enumAndChron") &&
00099 odr_sequence_end (o);
00100 }
00101
00102 int z_CircRecord (ODR o, Z_CircRecord **p, int opt, const char *name)
00103 {
00104 if (!odr_sequence_begin (o, p, sizeof(**p), name))
00105 return odr_missing(o, opt, name) && odr_ok (o);
00106 return
00107 odr_implicit_tag (o, odr_bool,
00108 &(*p)->availableNow, ODR_CONTEXT, 1, 0, "availableNow") &&
00109 odr_implicit_tag (o, z_InternationalString,
00110 &(*p)->availablityDate, ODR_CONTEXT, 2, 1, "availablityDate") &&
00111 odr_implicit_tag (o, z_InternationalString,
00112 &(*p)->availableThru, ODR_CONTEXT, 3, 1, "availableThru") &&
00113 odr_implicit_tag (o, z_InternationalString,
00114 &(*p)->restrictions, ODR_CONTEXT, 4, 1, "restrictions") &&
00115 odr_implicit_tag (o, z_InternationalString,
00116 &(*p)->itemId, ODR_CONTEXT, 5, 1, "itemId") &&
00117 odr_implicit_tag (o, odr_bool,
00118 &(*p)->renewable, ODR_CONTEXT, 6, 0, "renewable") &&
00119 odr_implicit_tag (o, odr_bool,
00120 &(*p)->onHold, ODR_CONTEXT, 7, 0, "onHold") &&
00121 odr_implicit_tag (o, z_InternationalString,
00122 &(*p)->enumAndChron, ODR_CONTEXT, 8, 1, "enumAndChron") &&
00123 odr_implicit_tag (o, z_InternationalString,
00124 &(*p)->midspine, ODR_CONTEXT, 9, 1, "midspine") &&
00125 odr_implicit_tag (o, z_InternationalString,
00126 &(*p)->temporaryLocation, ODR_CONTEXT, 10, 1, "temporaryLocation") &&
00127 odr_sequence_end (o);
00128 }