• Main Page
  • Data Structures
  • Files

z-core.c

Go to the documentation of this file.
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 (