00001 00007 #include <yaz/z-core.h> 00008 00009 int z_APDU (ODR o, Z_APDU **p, int opt, const char *name) 00010 { 00011 static Odr_arm arm[] = { 00012 {ODR_IMPLICIT, ODR_CONTEXT, 20, Z_APDU_initRequest, 00013 (Odr_fun) z_InitRequest, "initRequest"}, 00014 {ODR_IMPLICIT, ODR_CONTEXT, 21, Z_APDU_initResponse, 00015 (Odr_fun) z_InitResponse, "initResponse"}, 00016 {ODR_IMPLICIT, ODR_CONTEXT, 22, Z_APDU_searchRequest, 00017 (Odr_fun) z_SearchRequest, "searchRequest"}, 00018 {ODR_IMPLICIT, ODR_CONTEXT, 23, Z_APDU_searchResponse, 00019 (Odr_fun) z_SearchResponse, "searchResponse"}, 00020 {ODR_IMPLICIT, ODR_CONTEXT, 24, Z_APDU_presentRequest, 00021 (Odr_fun) z_PresentRequest, "presentRequest"}, 00022 {ODR_IMPLICIT, ODR_CONTEXT, 25, Z_APDU_presentResponse, 00023 (Odr_fun) z_PresentResponse, "presentResponse"}, 00024 {ODR_IMPLICIT, ODR_CONTEXT, 26, Z_APDU_deleteResultSetRequest, 00025 (Odr_fun) z_DeleteResultSetRequest, "deleteResultSetRequest"}, 00026 {ODR_IMPLICIT, ODR_CONTEXT, 27, Z_APDU_deleteResultSetResponse, 00027 (Odr_fun) z_DeleteResultSetResponse, "deleteResultSetResponse"}, 00028 {ODR_IMPLICIT, ODR_CONTEXT, 28, Z_APDU_accessControlRequest, 00029 (Odr_fun) z_AccessControlRequest, "accessControlRequest"}, 00030 {ODR_IMPLICIT, ODR_CONTEXT, 29, Z_APDU_accessControlResponse, 00031 (Odr_fun) z_AccessControlResponse, "accessControlResponse"}, 00032 {ODR_IMPLICIT, ODR_CONTEXT, 30, Z_APDU_resourceControlRequest, 00033 (Odr_fun) z_ResourceControlRequest, "resourceControlRequest"}, 00034 {ODR_IMPLICIT, ODR_CONTEXT, 31, Z_APDU_resourceControlResponse, 00035 (Odr_fun) z_ResourceControlResponse, "resourceControlResponse"}, 00036 {ODR_IMPLICIT, ODR_CONTEXT, 32, Z_APDU_triggerResourceControlRequest, 00037 (Odr_fun) z_TriggerResourceControlRequest, "triggerResourceControlRequest"}, 00038 {ODR_IMPLICIT, ODR_CONTEXT, 33, Z_APDU_resourceReportRequest, 00039 (Odr_fun) z_ResourceReportRequest, "resourceReportRequest"}, 00040 {ODR_IMPLICIT, ODR_CONTEXT, 34, Z_APDU_resourceReportResponse, 00041 (Odr_fun) z_ResourceReportResponse, "resourceReportResponse"}, 00042 {ODR_IMPLICIT, ODR_CONTEXT, 35, Z_APDU_scanRequest, 00043 (Odr_fun) z_ScanRequest, "scanRequest"}, 00044 {ODR_IMPLICIT, ODR_CONTEXT, 36, Z_APDU_scanResponse, 00045 (Odr_fun) z_ScanResponse, "scanResponse"}, 00046 {ODR_IMPLICIT, ODR_CONTEXT, 43, Z_APDU_sortRequest, 00047 (Odr_fun) z_SortRequest, "sortRequest"}, 00048 {ODR_IMPLICIT, ODR_CONTEXT, 44, Z_APDU_sortResponse, 00049 (Odr_fun) z_SortResponse, "sortResponse"}, 00050 {ODR_IMPLICIT, ODR_CONTEXT, 45, Z_APDU_segmentRequest, 00051 (Odr_fun) z_Segment, "segmentRequest"}, 00052 {ODR_IMPLICIT, ODR_CONTEXT, 46, Z_APDU_extendedServicesRequest, 00053 (Odr_fun) z_ExtendedServicesRequest, "extendedServicesRequest"}, 00054 {ODR_IMPLICIT, ODR_CONTEXT, 47, Z_APDU_extendedServicesResponse, 00055 (Odr_fun) z_ExtendedServicesResponse, "extendedServicesResponse"}, 00056 {ODR_IMPLICIT, ODR_CONTEXT, 48, Z_APDU_close, 00057 (Odr_fun) z_Close, "close"}, 00058 {ODR_IMPLICIT, ODR_CONTEXT, 49, Z_APDU_duplicateDetectionRequest, 00059 (Odr_fun) z_DuplicateDetectionRequest, "duplicateDetectionRequest"}, 00060 {ODR_IMPLICIT, ODR_CONTEXT, 50, Z_APDU_duplicateDetectionResponse, 00061 (Odr_fun) z_DuplicateDetectionResponse, "duplicateDetectionResponse"}, 00062 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00063 }; 00064 if (!odr_initmember(o, p, sizeof(**p))) 00065 return odr_missing(o, opt, name); 00066 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00067 return 1; 00068 if(o->direction == ODR_DECODE) 00069 *p = 0; 00070 return odr_missing(o, opt, name); 00071 } 00072 00073 int z_InitRequest (ODR o, Z_InitRequest **p, int opt, const char *name) 00074 { 00075 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00076 return odr_missing(o, opt, name) && odr_ok (o); 00077 return 00078 z_ReferenceId(o, &(*p)->referenceId, 1, "referenceId") && 00079 z_ProtocolVersion(o, &(*p)->protocolVersion, 0, "protocolVersion") && 00080 z_Options(o, &(*p)->options, 0, "options") && 00081 odr_implicit_tag (o, odr_integer, 00082 &(*p)->preferredMessageSize, ODR_CONTEXT, 5, 0, "preferredMessageSize") && 00083 odr_implicit_tag (o, odr_integer, 00084 &(*p)->maximumRecordSize, ODR_CONTEXT, 6, 0, "maximumRecordSize") && 00085 odr_explicit_tag (o, z_IdAuthentication, 00086 &(*p)->idAuthentication, ODR_CONTEXT, 7, 1, "idAuthentication") && 00087 odr_implicit_tag (o, z_InternationalString, 00088 &(*p)->implementationId, ODR_CONTEXT, 110, 1, "implementationId") && 00089 odr_implicit_tag (o, z_InternationalString, 00090 &(*p)->implementationName, ODR_CONTEXT, 111, 1, "implementationName") && 00091 odr_implicit_tag (o, z_InternationalString, 00092 &(*p)->implementationVersion, ODR_CONTEXT, 112, 1, "implementationVersion") && 00093 odr_explicit_tag (o, z_External, 00094 &(*p)->userInformationField, ODR_CONTEXT, 11, 1, "userInformationField") && 00095 z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") && 00096 odr_sequence_end (o); 00097 } 00098 00099 int z_IdPass (ODR o, Z_IdPass **p, int opt, const char *name) 00100 { 00101 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00102 return odr_missing(o, opt, name) && odr_ok (o); 00103 return 00104 odr_implicit_tag (o, z_InternationalString, 00105 &(*p)->groupId, ODR_CONTEXT, 0, 1, "groupId") && 00106 odr_implicit_tag (o, z_InternationalString, 00107 &(*p)->userId, ODR_CONTEXT, 1, 1, "userId") && 00108 odr_implicit_tag (o, z_InternationalString, 00109 &(*p)->password, ODR_CONTEXT, 2, 1, "password") && 00110 odr_sequence_end (o); 00111 } 00112 00113 int z_IdAuthentication (ODR o, Z_IdAuthentication **p, int opt, const char *name) 00114 { 00115 static Odr_arm arm[] = { 00116 {-1, -1, -1, Z_IdAuthentication_open, 00117 (Odr_fun) odr_visiblestring, "open"}, 00118 {-1, -1, -1, Z_IdAuthentication_idPass, 00119 (Odr_fun) z_IdPass, "idPass"}, 00120 {-1, -1, -1, Z_IdAuthentication_anonymous, 00121 (Odr_fun) odr_null, "anonymous"}, 00122 {-1, -1, -1, Z_IdAuthentication_other, 00123 (Odr_fun) z_External, "other"}, 00124 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00125 }; 00126 if (!odr_initmember(o, p, sizeof(**p))) 00127 return odr_missing(o, opt, name); 00128 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00129 return 1; 00130 if(o->direction == ODR_DECODE) 00131 *p = 0; 00132 return odr_missing(o, opt, name); 00133 } 00134 00135 int z_InitResponse (ODR o, Z_InitResponse **p, int opt, const char *name) 00136 { 00137 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00138 return odr_missing(o, opt, name) && odr_ok (o); 00139 return 00140 z_ReferenceId(o, &(*p)->referenceId, 1, "referenceId") && 00141 z_ProtocolVersion(o, &(*p)->protocolVersion, 0, "protocolVersion") && 00142 z_Options(o, &(*p)->options, 0, "options") && 00143 odr_implicit_tag (o, odr_integer, 00144 &(*p)->preferredMessageSize, ODR_CONTEXT, 5, 0, "preferredMessageSize") && 00145 odr_implicit_tag (o, odr_integer, 00146 &(*p)->maximumRecordSize, ODR_CONTEXT, 6, 0, "maximumRecordSize") && 00147 odr_implicit_tag (o, odr_bool, 00148 &(*p)->result, ODR_CONTEXT, 12, 0, "result") && 00149 odr_implicit_tag (o, z_InternationalString, 00150 &(*p)->implementationId, ODR_CONTEXT, 110, 1, "implementationId") && 00151 odr_implicit_tag (o, z_InternationalString, 00152 &(*p)->implementationName, ODR_CONTEXT, 111, 1, "implementationName") && 00153 odr_implicit_tag (o, z_InternationalString, 00154 &(*p)->implementationVersion, ODR_CONTEXT, 112, 1, "implementationVersion") && 00155 odr_explicit_tag (o, z_External, 00156 &(*p)->userInformationField, ODR_CONTEXT, 11, 1, "userInformationField") && 00157 z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") && 00158 odr_sequence_end (o); 00159 } 00160 00161 int z_ProtocolVersion (ODR o, Z_ProtocolVersion **p, int opt, const char *name) 00162 { 00163 return odr_implicit_tag (o, odr_bitstring, p, ODR_CONTEXT, 3, opt, name); 00164 } 00165 00166 int z_Options (ODR o, Z_Options **p, int opt, const char *name) 00167 { 00168 return odr_implicit_tag (o, odr_bitstring, p, ODR_CONTEXT, 4, opt, name); 00169 } 00170 00171 int z_SearchRequest (ODR o, Z_SearchRequest **p, int opt, const char *name) 00172 { 00173 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00174 return odr_missing(o, opt, name) && odr_ok (o); 00175 return 00176 z_ReferenceId(o, &(*p)->referenceId, 1, "referenceId") && 00177 odr_implicit_tag (o, odr_integer, 00178 &(*p)->smallSetUpperBound, ODR_CONTEXT, 13, 0, "smallSetUpperBound") && 00179 odr_implicit_tag (o, odr_integer, 00180 &(*p)->largeSetLowerBound, ODR_CONTEXT, 14, 0, "largeSetLowerBound") && 00181 odr_implicit_tag (o, odr_integer, 00182 &(*p)->mediumSetPresentNumber, ODR_CONTEXT, 15, 0, "mediumSetPresentNumber") && 00183 odr_implicit_tag (o, odr_bool, 00184 &(*p)->replaceIndicator, ODR_CONTEXT, 16, 0, "replaceIndicator") && 00185 odr_implicit_tag (o, z_InternationalString, 00186 &(*p)->resultSetName, ODR_CONTEXT, 17, 0, "resultSetName") && 00187 odr_implicit_settag (o, ODR_CONTEXT, 18) && 00188 odr_sequence_of(o, (Odr_fun) z_DatabaseName, &(*p)->databaseNames, 00189 &(*p)->num_databaseNames, "databaseNames") && 00190 odr_explicit_tag (o, z_ElementSetNames, 00191 &(*p)->smallSetElementSetNames, ODR_CONTEXT, 100, 1, "smallSetElementSetNames") && 00192 odr_explicit_tag (o, z_ElementSetNames, 00193 &(*p)->mediumSetElementSetNames, ODR_CONTEXT, 101, 1, "mediumSetElementSetNames") && 00194 odr_implicit_tag (o, odr_oid, 00195 &(*p)->preferredRecordSyntax, ODR_CONTEXT, 104, 1, "preferredRecordSyntax") && 00196 odr_explicit_tag (o, z_Query, 00197 &(*p)->query, ODR_CONTEXT, 21, 0, "query") && 00198 odr_implicit_tag (o, z_OtherInformation, 00199 &(*p)->additionalSearchInfo, ODR_CONTEXT, 203, 1, "additionalSearchInfo") && 00200 z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") && 00201 odr_sequence_end (o); 00202 } 00203 00204 int z_Query (ODR o, Z_Query **p, int opt, const char *name) 00205 { 00206 static Odr_arm arm[] = { 00207 {ODR_EXPLICIT, ODR_CONTEXT, 0, Z_Query_type_0, 00208 (Odr_fun) z_ANY_type_0, "type_0"}, 00209 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Query_type_1, 00210 (Odr_fun) z_RPNQuery, "type_1"}, 00211 {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_Query_type_2, 00212 (Odr_fun) odr_octetstring, "type_2"}, 00213 {ODR_EXPLICIT, ODR_CONTEXT, 100, Z_Query_type_100, 00214 (Odr_fun) odr_octetstring, "type_100"}, 00215 {ODR_IMPLICIT, ODR_CONTEXT, 101, Z_Query_type_101, 00216 (Odr_fun) z_RPNQuery, "type_101"}, 00217 {ODR_EXPLICIT, ODR_CONTEXT, 102, Z_Query_type_102, 00218 (Odr_fun) odr_octetstring, "type_102"}, 00219 {ODR_IMPLICIT, ODR_CONTEXT, 104, Z_Query_type_104, 00220 (Odr_fun) z_External, "type_104"}, 00221 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00222 }; 00223 if (!odr_initmember(o, p, sizeof(**p))) 00224 return odr_missing(o, opt, name); 00225 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00226 return 1; 00227 if(o->direction == ODR_DECODE) 00228 *p = 0; 00229 return odr_missing(o, opt, name); 00230 } 00231 00232 int z_RPNQuery (ODR o, Z_RPNQuery **p, int opt, const char *name) 00233 { 00234 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00235 return odr_missing(o, opt, name) && odr_ok (o); 00236 return 00237 z_AttributeSetId(o, &(*p)->attributeSetId, 0, "attributeSetId") && 00238 z_RPNStructure(o, &(*p)->RPNStructure, 0, "RPNStructure") && 00239 odr_sequence_end (o); 00240 } 00241 00242 int z_Complex (ODR o, Z_Complex **p, int opt, const char *name) 00243 { 00244 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00245 return odr_missing(o, opt, name) && odr_ok (o); 00246 return 00247 z_RPNStructure(o, &(*p)->s1, 0, "s1") && 00248 z_RPNStructure(o, &(*p)->s2, 0, "s2") && 00249 z_Operator(o, &(*p)->roperator, 0, "roperator") && 00250 odr_sequence_end (o); 00251 } 00252 00253 int z_RPNStructure (ODR o, Z_RPNStructure **p, int opt, const char *name) 00254 { 00255 static Odr_arm arm[] = { 00256 {ODR_EXPLICIT, ODR_CONTEXT, 0, Z_RPNStructure_simple, 00257 (Odr_fun) z_Operand, "simple"}, 00258 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_RPNStructure_complex, 00259 (Odr_fun) z_Complex, "complex"}, 00260 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00261 }; 00262 if (!odr_initmember(o, p, sizeof(**p))) 00263 return odr_missing(o, opt, name); 00264 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00265 return 1; 00266 if(o->direction == ODR_DECODE) 00267 *p = 0; 00268 return odr_missing(o, opt, name); 00269 } 00270 00271 int z_Operand (ODR o, Z_Operand **p, int opt, const char *name) 00272 { 00273 static Odr_arm arm[] = { 00274 {-1, -1, -1, Z_Operand_APT, 00275 (Odr_fun) z_AttributesPlusTerm, "attributesPlusTerm"}, 00276 {-1, -1, -1, Z_Operand_resultSetId, 00277 (Odr_fun) z_ResultSetId, "resultSetId"}, 00278 {-1, -1, -1, Z_Operand_resultAttr, 00279 (Odr_fun) z_ResultSetPlusAttributes, "resultAttr"}, 00280 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00281 }; 00282 if (!odr_initmember(o, p, sizeof(**p))) 00283 return odr_missing(o, opt, name); 00284 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00285 return 1; 00286 if(o->direction == ODR_DECODE) 00287 *p = 0; 00288 return odr_missing(o, opt, name); 00289 } 00290 00291 int z_AttributesPlusTerm (ODR o, Z_AttributesPlusTerm **p, int opt, const char *name) 00292 { 00293 if (!odr_implicit_settag (o, ODR_CONTEXT, 102) || 00294 !odr_sequence_begin (o, p, sizeof(**p), name)) 00295 return odr_missing(o, opt, name); 00296 return 00297 z_AttributeList(o, &(*p)->attributes, 0, "attributes") && 00298 z_Term(o, &(*p)->term, 0, "term") && 00299 odr_sequence_end (o); 00300 } 00301 00302 int z_ResultSetPlusAttributes (ODR o, Z_ResultSetPlusAttributes **p, int opt, const char *name) 00303 { 00304 if (!odr_implicit_settag (o, ODR_CONTEXT, 214) || 00305 !odr_sequence_begin (o, p, sizeof(**p), name)) 00306 return odr_missing(o, opt, name); 00307 return 00308 z_ResultSetId(o, &(*p)->resultSet, 0, "resultSet") && 00309 z_AttributeList(o, &(*p)->attributes, 0, "attributes") && 00310 odr_sequence_end (o); 00311 } 00312 00313 int z_AttributeList (ODR o, Z_AttributeList **p, int opt, const char *name) 00314 { 00315 if (!odr_initmember (o, p, sizeof(**p))) 00316 return odr_missing(o, opt, name); 00317 odr_implicit_settag (o, ODR_CONTEXT, 44); 00318 if (odr_sequence_of (o, (Odr_fun) z_AttributeElement, &(*p)->attributes, 00319 &(*p)->num_attributes, name)) 00320 return 1; 00321 if(o->direction == ODR_DECODE) 00322 *p = 0; 00323 return odr_missing(o, opt, name); 00324 } 00325 00326 int z_Term (ODR o, Z_Term **p, int opt, const char *name) 00327 { 00328 static Odr_arm arm[] = { 00329 {ODR_IMPLICIT, ODR_CONTEXT, 45, Z_Term_general, 00330 (Odr_fun) odr_octetstring, "general"}, 00331 {ODR_IMPLICIT, ODR_CONTEXT, 215, Z_Term_numeric, 00332 (Odr_fun) odr_integer, "numeric"}, 00333 {ODR_IMPLICIT, ODR_CONTEXT, 216, Z_Term_characterString, 00334 (Odr_fun) z_InternationalString, "characterString"}, 00335 {ODR_IMPLICIT, ODR_CONTEXT, 217, Z_Term_oid, 00336 (Odr_fun) odr_oid, "oid"}, 00337 {ODR_IMPLICIT, ODR_CONTEXT, 218, Z_Term_dateTime, 00338 (Odr_fun) odr_generalizedtime, "dateTime"}, 00339 {ODR_IMPLICIT, ODR_CONTEXT, 219, Z_Term_external, 00340 (Odr_fun) z_External, "external"}, 00341 {ODR_IMPLICIT, ODR_CONTEXT, 220, Z_Term_integerAndUnit, 00342 (Odr_fun) z_IntUnit, "integerAndUnit"}, 00343 {ODR_IMPLICIT, ODR_CONTEXT, 221, Z_Term_null, 00344 (Odr_fun) odr_null, "null"}, 00345 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00346 }; 00347 if (!odr_initmember(o, p, sizeof(**p))) 00348 return odr_missing(o, opt, name); 00349 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00350 return 1; 00351 if(o->direction == ODR_DECODE) 00352 *p = 0; 00353 return odr_missing(o, opt, name); 00354 } 00355 00356 int z_Operator (ODR o, Z_Operator **p, int opt, const char *name) 00357 { 00358 static Odr_arm arm[] = { 00359 {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Operator_and, 00360 (Odr_fun) odr_null, "op_and"}, 00361 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Operator_or, 00362 (Odr_fun) odr_null, "op_or"}, 00363 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Operator_and_not, 00364 (Odr_fun) odr_null, "and_not"}, 00365 {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Operator_prox, 00366 (Odr_fun) z_ProximityOperator, "prox"}, 00367 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00368 }; 00369 if (!odr_constructed_begin(o, p, ODR_CONTEXT, 46, 0)) 00370 return odr_missing(o, opt, name); 00371 if (!odr_initmember(o, p, sizeof(**p))) 00372 return odr_missing(o, opt, name); 00373 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name) && 00374 odr_constructed_end(o)) 00375 return 1; 00376 if(o->direction == ODR_DECODE) 00377 *p = 0; 00378 return odr_missing(o, opt, name); 00379 } 00380 00381 int z_ComplexAttribute (ODR o, Z_ComplexAttribute **p, int opt, const char *name) 00382 { 00383 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00384 return odr_missing(o, opt, name) && odr_ok (o); 00385 return 00386 odr_implicit_settag (o, ODR_CONTEXT, 1) && 00387 odr_sequence_of(o, (Odr_fun) z_StringOrNumeric, &(*p)->list, 00388 &(*p)->num_list, "list") && 00389 odr_implicit_settag (o, ODR_CONTEXT, 2) && 00390 (odr_sequence_of(o, (Odr_fun) odr_integer, &(*p)->semanticAction, 00391 &(*p)->num_semanticAction, "semanticAction") || odr_ok(o)) && 00392 odr_sequence_end (o); 00393 } 00394 00395 int z_AttributeElement (ODR o, Z_AttributeElement **p, int opt, const char *name) 00396 { 00397 static Odr_arm arm[] = { 00398 {ODR_IMPLICIT, ODR_CONTEXT, 121, Z_AttributeValue_numeric, 00399 (Odr_fun) odr_integer, "numeric"}, 00400 {ODR_IMPLICIT, ODR_CONTEXT, 224, Z_AttributeValue_complex, 00401 (Odr_fun) z_ComplexAttribute, "complex"}, 00402 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00403 }; 00404 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00405 return odr_missing(o, opt, name) && odr_ok (o); 00406 return 00407 odr_implicit_tag (o, z_AttributeSetId, 00408 &(*p)->attributeSet, ODR_CONTEXT, 1, 1, "attributeSet") && 00409 odr_implicit_tag (o, odr_integer, 00410 &(*p)->attributeType, ODR_CONTEXT, 120, 0, "attributeType") && 00411 odr_choice (o, arm, &(*p)->value, &(*p)->which, 0) && 00412 odr_sequence_end (o); 00413 } 00414 00415 int z_ProximityOperator (ODR o, Z_ProximityOperator **p, int opt, const char *name) 00416 { 00417 static Odr_arm arm[] = { 00418 {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProximityOperator_known, 00419 (Odr_fun) z_ProxUnit, "known"}, 00420 {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProximityOperator_private, 00421 (Odr_fun) odr_integer, "zprivate"}, 00422 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00423 }; 00424 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00425 return odr_missing(o, opt, name) && odr_ok (o); 00426 return 00427 odr_implicit_tag (o, odr_bool, 00428 &(*p)->exclusion, ODR_CONTEXT, 1, 1, "exclusion") && 00429 odr_implicit_tag (o, odr_integer, 00430 &(*p)->distance, ODR_CONTEXT, 2, 0, "distance") && 00431 odr_implicit_tag (o, odr_bool, 00432 &(*p)->ordered, ODR_CONTEXT, 3, 0, "ordered") && 00433 odr_implicit_tag (o, odr_integer, 00434 &(*p)->relationType, ODR_CONTEXT, 4, 0, "relationType") && 00435 odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 5, "proximityUnitCode") && 00436 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && 00437 odr_constructed_end (o) && 00438 odr_sequence_end (o); 00439 } 00440 00441 int z_ProxUnit (ODR o, Z_ProxUnit **p, int opt, const char *name) 00442 { 00443 return odr_integer (o, p, opt, name); 00444 } 00445 00446 int z_SearchResponse (ODR o, Z_SearchResponse **p, int opt, const char *name) 00447 { 00448 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00449 return odr_missing(o, opt, name) && odr_ok (o); 00450 return 00451 z_ReferenceId(o, &(*p)->referenceId, 1, "referenceId") && 00452 odr_implicit_tag (o, odr_integer, 00453 &(*p)->resultCount, ODR_CONTEXT, 23, 0, "resultCount") && 00454 odr_implicit_tag (o, odr_integer, 00455 &(*p)->numberOfRecordsReturned, ODR_CONTEXT, 24, 0, "numberOfRecordsReturned") && 00456 odr_implicit_tag (o, odr_integer, 00457 &(*p)->nextResultSetPosition, ODR_CONTEXT, 25, 0, "nextResultSetPosition") && 00458 odr_implicit_tag (o, odr_bool, 00459 &(*p)->searchStatus, ODR_CONTEXT, 22, 0, "searchStatus") && 00460 odr_implicit_tag (o, odr_integer, 00461 &(*p)->resultSetStatus, ODR_CONTEXT, 26, 1, "resultSetStatus") && 00462 z_PresentStatus(o, &(*p)->presentStatus, 1, "presentStatus") && 00463 z_Records(o, &(*p)->records, 1, "records") && 00464 odr_implicit_tag (o, z_OtherInformation, 00465 &(*p)->additionalSearchInfo, ODR_CONTEXT, 203, 1, "additionalSearchInfo") && 00466 z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") && 00467 odr_sequence_end (o); 00468 } 00469 00470 int z_RecordComposition (ODR o, Z_RecordComposition **p, int opt, const char *name) 00471 { 00472 static Odr_arm arm[] = { 00473 {ODR_EXPLICIT, ODR_CONTEXT, 19, Z_RecordComp_simple, 00474 (Odr_fun) z_ElementSetNames, "simple"}, 00475 {ODR_IMPLICIT, ODR_CONTEXT, 209, Z_RecordComp_complex, 00476 (Odr_fun) z_CompSpec, "complex"}, 00477 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00478 }; 00479 if (!odr_initmember(o, p, sizeof(**p))) 00480 return odr_missing(o, opt, name); 00481 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00482 return 1; 00483 if(o->direction == ODR_DECODE) 00484 *p = 0; 00485 return odr_missing(o, opt, name); 00486 } 00487 00488 int z_PresentRequest (ODR o, Z_PresentRequest **p, int opt, const char *name) 00489 { 00490 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00491 return odr_missing(o, opt, name) && odr_ok (o); 00492 return 00493 z_ReferenceId(o, &(*p)->referenceId, 1, "referenceId") && 00494 z_ResultSetId(o, &(*p)->resultSetId, 0, "resultSetId") && 00495 odr_implicit_tag (o, odr_integer, 00496 &(*p)->resultSetStartPoint, ODR_CONTEXT, 30, 0, "resultSetStartPoint") && 00497 odr_implicit_tag (o, odr_integer, 00498 &(*p)->numberOfRecordsRequested, ODR_CONTEXT, 29, 0, "numberOfRecordsRequested") && 00499 odr_implicit_settag (o, ODR_CONTEXT, 212) && 00500 (odr_sequence_of(o, (Odr_fun) z_Range, &(*p)->additionalRanges, 00501 &(*p)->num_ranges, "additionalRanges") || odr_ok(o)) && 00502 z_RecordComposition (o, &(*p)->recordComposition, 1, "recordComposition") && 00503 odr_implicit_tag (o, odr_oid, 00504 &(*p)->preferredRecordSyntax, ODR_CONTEXT, 104, 1, "preferredRecordSyntax") && 00505 odr_implicit_tag (o, odr_integer, 00506 &(*p)->maxSegmentCount, ODR_CONTEXT, 204, 1, "maxSegmentCount") && 00507 odr_implicit_tag (o, odr_integer, 00508 &(*p)->maxRecordSize, ODR_CONTEXT, 206, 1, "maxRecordSize") && 00509 odr_implicit_tag (o, odr_integer, 00510 &(*p)->maxSegmentSize, ODR_CONTEXT, 207, 1, "maxSegmentSize") && 00511 z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") && 00512 odr_sequence_end (o); 00513 } 00514 00515 int z_Segment (ODR o, Z_Segment **p, int opt, const char *name) 00516 { 00517 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00518 return odr_missing(o, opt, name) && odr_ok (o); 00519 return 00520 z_ReferenceId(o, &(*p)->referenceId, 1, "referenceId") && 00521 odr_implicit_tag (o, odr_integer, 00522 &(*p)->numberOfRecordsReturned, ODR_CONTEXT, 24, 0, "numberOfRecordsReturned") && 00523 odr_implicit_settag (o, ODR_CONTEXT, 0) && 00524 odr_sequence_of(o, (Odr_fun) z_NamePlusRecord, &(*p)->segmentRecords, 00525 &(*p)->num_segmentRecords, "segmentRecords") && 00526 z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") && 00527 odr_sequence_end (o); 00528 } 00529 00530 int z_PresentResponse (ODR o, Z_PresentResponse **p, int opt, const char *name) 00531 { 00532 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00533 return odr_missing(o, opt, name) && odr_ok (o); 00534 return 00535 z_ReferenceId(o, &(*p)->referenceId, 1, "referenceId") && 00536 odr_implicit_tag (o, odr_integer, 00537 &(*p)->numberOfRecordsReturned, ODR_CONTEXT, 24, 0, "numberOfRecordsReturned") && 00538 odr_implicit_tag (o, odr_integer, 00539 &(*p)->nextResultSetPosition, ODR_CONTEXT, 25, 0, "nextResultSetPosition") && 00540 z_PresentStatus(o, &(*p)->presentStatus, 0, "presentStatus") && 00541 z_Records(o, &(*p)->records, 1, "records") && 00542 z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") && 00543 odr_sequence_end (o); 00544 } 00545 00546 int z_NamePlusRecordList (ODR o, Z_NamePlusRecordList **p, int opt, const char *name) 00547 { 00548 if (!odr_initmember (o, p, sizeof(**p))) 00549 return odr_missing(o, opt, name); 00550 if (odr_sequence_of (o, (Odr_fun) z_NamePlusRecord, &(*p)->records, 00551 &(*p)->num_records, name)) 00552 return 1; 00553 if(o->direction == ODR_DECODE) 00554 *p = 0; 00555 return odr_missing(o, opt, name); 00556 } 00557 00558 int z_DiagRecs (ODR o, Z_DiagRecs **p, int opt, const char *name) 00559 { 00560 if (!odr_initmember (o, p, sizeof(**p))) 00561 return odr_missing(o, opt, name); 00562 if (odr_sequence_of (o, (Odr_fun) z_DiagRec, &(*p)->diagRecs, 00563 &(*p)->num_diagRecs, name)) 00564 return 1; 00565 if(o->direction == ODR_DECODE) 00566 *p = 0; 00567 return odr_missing(o, opt, name); 00568 } 00569 00570 int z_Records (ODR o, Z_Records **p, int opt, const char *name) 00571 { 00572 static Odr_arm arm[] = { 00573 {ODR_IMPLICIT, ODR_CONTEXT, 28, Z_Records_DBOSD, 00574 (Odr_fun) z_NamePlusRecordList, "databaseOrSurDiagnostics"}, 00575 {ODR_IMPLICIT, ODR_CONTEXT, 130, Z_Records_NSD, 00576 (Odr_fun) z_DefaultDiagFormat, "nonSurrogateDiagnostic"}, 00577 {ODR_IMPLICIT, ODR_CONTEXT, 205, Z_Records_multipleNSD, 00578 (Odr_fun) z_DiagRecs, "multipleNonSurDiagnostics"}, 00579 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00580 }; 00581 if (!odr_initmember(o, p, sizeof(**p))) 00582 return odr_missing(o, opt, name); 00583 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00584 return 1; 00585 if(o->direction == ODR_DECODE) 00586 *p = 0; 00587 return odr_missing(o, opt, name); 00588 } 00589 00590 int z_NamePlusRecord (ODR o, Z_NamePlusRecord **p, int opt, const char *name) 00591 { 00592 static Odr_arm arm[] = { 00593 {ODR_EXPLICIT, ODR_CONTEXT, 1, Z_NamePlusRecord_databaseRecord, 00594 (Odr_fun) z_External, "databaseRecord"}, 00595 {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_NamePlusRecord_surrogateDiagnostic, 00596 (Odr_fun) z_DiagRec, "surrogateDiagnostic"}, 00597 {ODR_EXPLICIT, ODR_CONTEXT, 3, Z_NamePlusRecord_startingFragment, 00598 (Odr_fun) z_FragmentSyntax, "startingFragment"}, 00599 {ODR_EXPLICIT, ODR_CONTEXT, 4, Z_NamePlusRecord_intermediateFragment, 00600 (Odr_fun) z_FragmentSyntax, "intermediateFragment"}, 00601 {ODR_EXPLICIT, ODR_CONTEXT, 5, Z_NamePlusRecord_finalFragment, 00602 (Odr_fun) z_FragmentSyntax, "finalFragment"}, 00603 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00604 }; 00605 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00606 return odr_missing(o, opt, name) && odr_ok (o); 00607 return 00608 odr_implicit_tag (o, z_DatabaseName, 00609 &(*p)->databaseName, ODR_CONTEXT, 0, 1, "databaseName") && 00610 odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, "record") && 00611 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && 00612 odr_constructed_end (o) && 00613 odr_sequence_end (o); 00614 } 00615 00616 int z_FragmentSyntax (ODR o, Z_FragmentSyntax **p, int opt, const char *name) 00617 { 00618 static Odr_arm arm[] = { 00619 {-1, -1, -1, Z_FragmentSyntax_externallyTagged, 00620 (Odr_fun) z_External, "externallyTagged"}, 00621 {-1, -1, -1, Z_FragmentSyntax_notExternallyTagged, 00622 (Odr_fun) odr_octetstring, "notExternallyTagged"}, 00623 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00624 }; 00625 if (!odr_initmember(o, p, sizeof(**p))) 00626 return odr_missing(o, opt, name); 00627 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00628 return 1; 00629 if(o->direction == ODR_DECODE) 00630 *p = 0; 00631 return odr_missing(o, opt, name); 00632 } 00633 00634 int z_DiagRec (ODR o, Z_DiagRec **p, int opt, const char *name) 00635 { 00636 static Odr_arm arm[] = { 00637 {-1, -1, -1, Z_DiagRec_defaultFormat, 00638 (Odr_fun) z_DefaultDiagFormat, "defaultFormat"}, 00639 {-1, -1, -1, Z_DiagRec_externallyDefined, 00640 (Odr_fun) z_External, "externallyDefined"}, 00641 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00642 }; 00643 if (!odr_initmember(o, p, sizeof(**p))) 00644 return odr_missing(o, opt, name); 00645 if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) 00646 return 1; 00647 if(o->direction == ODR_DECODE) 00648 *p = 0; 00649 return odr_missing(o, opt, name); 00650 } 00651 00652 int z_DefaultDiagFormat (ODR o, Z_DefaultDiagFormat **p, int opt, const char *name) 00653 { 00654 static Odr_arm arm[] = { 00655 {-1, -1, -1, Z_DefaultDiagFormat_v2Addinfo, 00656 (Odr_fun) odr_visiblestring, "v2Addinfo"}, 00657 {-1, -1, -1, Z_DefaultDiagFormat_v3Addinfo, 00658 (Odr_fun) z_InternationalString, "v3Addinfo"}, 00659 {-1, -1, -1, -1, (Odr_fun) 0, 0} 00660 }; 00661 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00662 return odr_missing(o, opt, name) && odr_ok (o); 00663 return 00664 odr_oid(o, &(*p)->diagnosticSetId, 0, "diagnosticSetId") && 00665 odr_integer(o, &(*p)->condition, 0, "condition") && 00666 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && 00667 odr_sequence_end (o); 00668 } 00669 00670 int z_Range (ODR o, Z_Range **p, int opt, const char *name) 00671 { 00672 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00673 return odr_missing(o, opt, name) && odr_ok (o); 00674 return 00675 odr_implicit_tag (o, odr_integer, 00676 &(*p)->startingPosition, ODR_CONTEXT, 1, 0, "startingPosition") && 00677 odr_implicit_tag (o, odr_integer, 00678 &(*p)->numberOfRecords, ODR_CONTEXT, 2, 0, "numberOfRecords") && 00679 odr_sequence_end (o); 00680 } 00681 00682 int z_DatabaseSpecificUnit (ODR o, Z_DatabaseSpecificUnit **p, int opt, const char *name) 00683 { 00684 if (!odr_sequence_begin (o, p, sizeof(**p), name)) 00685 return odr_missing(o, opt, name) && odr_ok (o); 00686 return 00687 z_DatabaseName(o, &(*p)->dbName, 0, "dbName") && 00688 z_ElementSetName(o, &(*p)->esn, 0, "esn") && 00689 odr_sequence_end (o); 00690 } 00691 00692 int z_DatabaseSpecific (