Logo Search packages:      
Sourcecode: yaz version File versions

z-exp.c

/* Generated automatically by the YAZ ASN.1 Compiler 0.3 */
/* Module-C: RecordSyntax-explain */

#include <yaz/z-exp.h>

int z_ExplainRecord (ODR o, Z_ExplainRecord **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo,
            (Odr_fun) z_TargetInfo, "targetInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo,
            (Odr_fun) z_DatabaseInfo, "databaseInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo,
            (Odr_fun) z_SchemaInfo, "schemaInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo,
            (Odr_fun) z_TagSetInfo, "tagSetInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
            (Odr_fun) z_RecordSyntaxInfo, "recordSyntaxInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
            (Odr_fun) z_AttributeSetInfo, "attributeSetInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
            (Odr_fun) z_TermListInfo, "termListInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
            (Odr_fun) z_ExtendedServicesInfo, "extendedServicesInfo"},
            {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
            (Odr_fun) z_AttributeDetails, "attributeDetails"},
            {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
            (Odr_fun) z_TermListDetails, "termListDetails"},
            {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
            (Odr_fun) z_ElementSetDetails, "elementSetDetails"},
            {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
            (Odr_fun) z_RetrievalRecordDetails, "retrievalRecordDetails"},
            {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
            (Odr_fun) z_SortDetails, "sortDetails"},
            {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
            (Odr_fun) z_ProcessingInformation, "processing"},
            {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
            (Odr_fun) z_VariantSetInfo, "variants"},
            {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units,
            (Odr_fun) z_UnitInfo, "units"},
            {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
            (Odr_fun) z_CategoryList, "categoryList"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_initmember(o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_TargetInfo (ODR o, Z_TargetInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 1, 0, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->recentNews, ODR_CONTEXT, 2, 1, "recentNews") &&
            odr_implicit_tag (o, z_IconObject,
                  &(*p)->icon, ODR_CONTEXT, 3, 1, "icon") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->namedResultSets, ODR_CONTEXT, 4, 0, "namedResultSets") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0, "multipleDBsearch") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->maxResultSets, ODR_CONTEXT, 6, 1, "maxResultSets") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->maxResultSize, ODR_CONTEXT, 7, 1, "maxResultSize") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->maxTerms, ODR_CONTEXT, 8, 1, "maxTerms") &&
            odr_implicit_tag (o, z_IntUnit,
                  &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1, "timeoutInterval") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->welcomeMessage, ODR_CONTEXT, 10, 1, "welcomeMessage") &&
            odr_implicit_tag (o, z_ContactInfo,
                  &(*p)->contactInfo, ODR_CONTEXT, 11, 1, "contactInfo") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 12, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 13) &&
            (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->nicknames,
              &(*p)->num_nicknames, "nicknames") || odr_ok(o)) &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->usageRest, ODR_CONTEXT, 14, 1, "usageRest") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->paymentAddr, ODR_CONTEXT, 15, 1, "paymentAddr") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->hours, ODR_CONTEXT, 16, 1, "hours") &&
            odr_implicit_settag (o, ODR_CONTEXT, 17) &&
            (odr_sequence_of(o, (Odr_fun) z_DatabaseList, &(*p)->dbCombinations,
              &(*p)->num_dbCombinations, "dbCombinations") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 18) &&
            (odr_sequence_of(o, (Odr_fun) z_NetworkAddress, &(*p)->addresses,
              &(*p)->num_addresses, "addresses") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 101) &&
            (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->languages,
              &(*p)->num_languages, "languages") || odr_ok(o)) &&
            odr_implicit_tag (o, z_AccessInfo,
                  &(*p)->commonAccessInfo, ODR_CONTEXT, 19, 1, "commonAccessInfo") &&
            odr_sequence_end (o);
}

int z_DatabaseInfo (ODR o, Z_DatabaseInfo **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_DatabaseInfo_actualNumber,
            (Odr_fun) odr_integer, "actualNumber"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DatabaseInfo_approxNumber,
            (Odr_fun) odr_integer, "approxNumber"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_DatabaseName,
                  &(*p)->name, ODR_CONTEXT, 1, 0, "name") &&
            odr_implicit_tag (o, odr_null,
                  &(*p)->explainDatabase, ODR_CONTEXT, 2, 1, "explainDatabase") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) z_DatabaseName, &(*p)->nicknames,
              &(*p)->num_nicknames, "nicknames") || odr_ok(o)) &&
            odr_implicit_tag (o, z_IconObject,
                  &(*p)->icon, ODR_CONTEXT, 4, 1, "icon") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->userFee, ODR_CONTEXT, 5, 0, "userFee") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->available, ODR_CONTEXT, 6, 0, "available") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->titleString, ODR_CONTEXT, 7, 1, "titleString") &&
            odr_implicit_settag (o, ODR_CONTEXT, 8) &&
            (odr_sequence_of(o, (Odr_fun) z_HumanString, &(*p)->keywords,
              &(*p)->num_keywords, "keywords") || odr_ok(o)) &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 9, 1, "description") &&
            odr_implicit_tag (o, z_DatabaseList,
                  &(*p)->associatedDbs, ODR_CONTEXT, 10, 1, "associatedDbs") &&
            odr_implicit_tag (o, z_DatabaseList,
                  &(*p)->subDbs, ODR_CONTEXT, 11, 1, "subDbs") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->disclaimers, ODR_CONTEXT, 12, 1, "disclaimers") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->news, ODR_CONTEXT, 13, 1, "news") &&
            ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 14, "recordCount") &&
            odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
            odr_constructed_end (o)) || odr_ok(o)) &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->defaultOrder, ODR_CONTEXT, 15, 1, "defaultOrder") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->avRecordSize, ODR_CONTEXT, 16, 1, "avRecordSize") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->maxRecordSize, ODR_CONTEXT, 17, 1, "maxRecordSize") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->hours, ODR_CONTEXT, 18, 1, "hours") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->bestTime, ODR_CONTEXT, 19, 1, "bestTime") &&
            odr_implicit_tag (o, odr_generalizedtime,
                  &(*p)->lastUpdate, ODR_CONTEXT, 20, 1, "lastUpdate") &&
            odr_implicit_tag (o, z_IntUnit,
                  &(*p)->updateInterval, ODR_CONTEXT, 21, 1, "updateInterval") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->coverage, ODR_CONTEXT, 22, 1, "coverage") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->proprietary, ODR_CONTEXT, 23, 1, "proprietary") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->copyrightText, ODR_CONTEXT, 24, 1, "copyrightText") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->copyrightNotice, ODR_CONTEXT, 25, 1, "copyrightNotice") &&
            odr_implicit_tag (o, z_ContactInfo,
                  &(*p)->producerContactInfo, ODR_CONTEXT, 26, 1, "producerContactInfo") &&
            odr_implicit_tag (o, z_ContactInfo,
                  &(*p)->supplierContactInfo, ODR_CONTEXT, 27, 1, "supplierContactInfo") &&
            odr_implicit_tag (o, z_ContactInfo,
                  &(*p)->submissionContactInfo, ODR_CONTEXT, 28, 1, "submissionContactInfo") &&
            odr_implicit_tag (o, z_AccessInfo,
                  &(*p)->accessInfo, ODR_CONTEXT, 29, 1, "accessInfo") &&
            odr_sequence_end (o);
}

int z_TagTypeMapping (ODR o, Z_TagTypeMapping **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, odr_integer,
                  &(*p)->tagType, ODR_CONTEXT, 0, 0, "tagType") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->tagSet, ODR_CONTEXT, 1, 1, "tagSet") &&
            odr_implicit_tag (o, odr_null,
                  &(*p)->defaultTagType, ODR_CONTEXT, 2, 1, "defaultTagType") &&
            odr_sequence_end (o);
}

int z_SchemaInfo (ODR o, Z_SchemaInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->schema, ODR_CONTEXT, 1, 0, "schema") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 2, 0, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 3, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 4) &&
            (odr_sequence_of(o, (Odr_fun) z_TagTypeMapping, &(*p)->tagTypeMapping,
              &(*p)->num_tagTypeMapping, "tagTypeMapping") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 5) &&
            (odr_sequence_of(o, (Odr_fun) z_ElementInfo, &(*p)->recordStructure,
              &(*p)->num_recordStructure, "recordStructure") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_ElementInfo (ODR o, Z_ElementInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->elementName, ODR_CONTEXT, 1, 0, "elementName") &&
            odr_implicit_tag (o, z_Path,
                  &(*p)->elementTagPath, ODR_CONTEXT, 2, 0, "elementTagPath") &&
            odr_explicit_tag (o, z_ElementDataType,
                  &(*p)->dataType, ODR_CONTEXT, 3, 1, "dataType") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->required, ODR_CONTEXT, 4, 0, "required") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->repeatable, ODR_CONTEXT, 5, 0, "repeatable") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 6, 1, "description") &&
            odr_sequence_end (o);
}

int z_PathUnit (ODR o, Z_PathUnit **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, odr_integer,
                  &(*p)->tagType, ODR_CONTEXT, 1, 0, "tagType") &&
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->tagValue, ODR_CONTEXT, 2, 0, "tagValue") &&
            odr_sequence_end (o);
}

int z_Path (ODR o, Z_Path **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_PathUnit, &(*p)->elements,
            &(*p)->num, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_ElementInfoList (ODR o, Z_ElementInfoList **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_ElementInfo, &(*p)->elements,
            &(*p)->num, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_ElementDataType (ODR o, Z_ElementDataType **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
            (Odr_fun) z_PrimitiveDataType, "primitive"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
            (Odr_fun) z_ElementInfoList, "structured"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_initmember(o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_PrimitiveDataType (ODR o, Z_PrimitiveDataType **p, int opt, const char *name)
{
      return odr_integer (o, p, opt, name);
}

int z_TagSetElements (ODR o, Z_TagSetElements **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->elementname, ODR_CONTEXT, 1, 0, "elementname") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->nicknames,
              &(*p)->num_nicknames, "nicknames") || odr_ok(o)) &&
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->elementTag, ODR_CONTEXT, 3, 0, "elementTag") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 4, 1, "description") &&
            odr_explicit_tag (o, z_PrimitiveDataType,
                  &(*p)->dataType, ODR_CONTEXT, 5, 1, "dataType") &&
            z_OtherInformation(o, &(*p)->otherTagInfo, 1, "otherTagInfo") &&
            odr_sequence_end (o);
}

int z_TagSetInfo (ODR o, Z_TagSetInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->tagSet, ODR_CONTEXT, 1, 0, "tagSet") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 2, 0, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 3, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 4) &&
            (odr_sequence_of(o, (Odr_fun) z_TagSetElements, &(*p)->elements,
              &(*p)->num_elements, "elements") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_RecordSyntaxInfo (ODR o, Z_RecordSyntaxInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->recordSyntax, ODR_CONTEXT, 1, 0, "recordSyntax") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 2, 0, "name") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->transferSyntaxes,
              &(*p)->num_transferSyntaxes, "transferSyntaxes") || odr_ok(o)) &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 4, 1, "description") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->asn1Module, ODR_CONTEXT, 5, 1, "asn1Module") &&
            odr_implicit_settag (o, ODR_CONTEXT, 6) &&
            (odr_sequence_of(o, (Odr_fun) z_ElementInfo, &(*p)->abstractStructure,
              &(*p)->num_abstractStructure, "abstractStructure") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_AttributeSetInfo (ODR o, Z_AttributeSetInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_AttributeSetId,
                  &(*p)->attributeSet, ODR_CONTEXT, 1, 0, "attributeSet") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 2, 0, "name") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) z_AttributeType, &(*p)->attributes,
              &(*p)->num_attributes, "attributes") || odr_ok(o)) &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 4, 1, "description") &&
            odr_sequence_end (o);
}

int z_AttributeType (ODR o, Z_AttributeType **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->attributeType, ODR_CONTEXT, 2, 0, "attributeType") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            odr_sequence_of(o, (Odr_fun) z_AttributeDescription, &(*p)->attributeValues,
              &(*p)->num_attributeValues, "attributeValues") &&
            odr_sequence_end (o);
}

int z_AttributeDescription (ODR o, Z_AttributeDescription **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->attributeValue, ODR_CONTEXT, 2, 0, "attributeValue") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) z_StringOrNumeric, &(*p)->equivalentAttributes,
              &(*p)->num_equivalentAttributes, "equivalentAttributes") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_TermListElement (ODR o, Z_TermListElement **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 1, 0, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->title, ODR_CONTEXT, 2, 1, "title") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->searchCost, ODR_CONTEXT, 3, 1, "searchCost") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->scanable, ODR_CONTEXT, 4, 0, "scanable") &&
            odr_implicit_settag (o, ODR_CONTEXT, 5) &&
            (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->broader,
              &(*p)->num_broader, "broader") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 6) &&
            (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->narrower,
              &(*p)->num_narrower, "narrower") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_TermListInfo (ODR o, Z_TermListInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_DatabaseName,
                  &(*p)->databaseName, ODR_CONTEXT, 1, 0, "databaseName") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            odr_sequence_of(o, (Odr_fun) z_TermListElement, &(*p)->termLists,
              &(*p)->num_termLists, "termLists") &&
            odr_sequence_end (o);
}

int z_ExtendedServicesInfo (ODR o, Z_ExtendedServicesInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->type, ODR_CONTEXT, 1, 0, "type") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 2, 1, "name") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->privateType, ODR_CONTEXT, 3, 0, "privateType") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0, "restrictionsApply") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->feeApply, ODR_CONTEXT, 6, 0, "feeApply") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->available, ODR_CONTEXT, 7, 0, "available") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->retentionSupported, ODR_CONTEXT, 8, 0, "retentionSupported") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->waitAction, ODR_CONTEXT, 9, 0, "waitAction") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 10, 1, "description") &&
            odr_implicit_tag (o, z_External,
                  &(*p)->specificExplain, ODR_CONTEXT, 11, 1, "specificExplain") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->esASN, ODR_CONTEXT, 12, 1, "esASN") &&
            odr_sequence_end (o);
}

int z_AttributeDetails (ODR o, Z_AttributeDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_DatabaseName,
                  &(*p)->databaseName, ODR_CONTEXT, 1, 0, "databaseName") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_AttributeSetDetails, &(*p)->attributesBySet,
              &(*p)->num_attributesBySet, "attributesBySet") || odr_ok(o)) &&
            odr_implicit_tag (o, z_AttributeCombinations,
                  &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1, "attributeCombinations") &&
            odr_sequence_end (o);
}

int z_AttributeSetDetails (ODR o, Z_AttributeSetDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_AttributeSetId,
                  &(*p)->attributeSet, ODR_CONTEXT, 0, 0, "attributeSet") &&
            odr_implicit_settag (o, ODR_CONTEXT, 1) &&
            odr_sequence_of(o, (Odr_fun) z_AttributeTypeDetails, &(*p)->attributesByType,
              &(*p)->num_attributesByType, "attributesByType") &&
            odr_sequence_end (o);
}

int z_AttributeTypeDetails (ODR o, Z_AttributeTypeDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, odr_integer,
                  &(*p)->attributeType, ODR_CONTEXT, 0, 0, "attributeType") &&
            odr_implicit_tag (o, z_OmittedAttributeInterpretation,
                  &(*p)->defaultIfOmitted, ODR_CONTEXT, 1, 1, "defaultIfOmitted") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_AttributeValue, &(*p)->attributeValues,
              &(*p)->num_attributeValues, "attributeValues") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_OmittedAttributeInterpretation (ODR o, Z_OmittedAttributeInterpretation **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->defaultValue, ODR_CONTEXT, 0, 1, "defaultValue") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->defaultDescription, ODR_CONTEXT, 1, 1, "defaultDescription") &&
            odr_sequence_end (o);
}

int z_AttributeValue (ODR o, Z_AttributeValue **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->value, ODR_CONTEXT, 0, 0, "value") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_StringOrNumeric, &(*p)->subAttributes,
              &(*p)->num_subAttributes, "subAttributes") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) z_StringOrNumeric, &(*p)->superAttributes,
              &(*p)->num_superAttributes, "superAttributes") || odr_ok(o)) &&
            odr_implicit_tag (o, odr_null,
                  &(*p)->partialSupport, ODR_CONTEXT, 4, 1, "partialSupport") &&
            odr_sequence_end (o);
}

int z_EScanInfo (ODR o, Z_EScanInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, odr_integer,
                  &(*p)->maxStepSize, ODR_CONTEXT, 0, 1, "maxStepSize") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->collatingSequence, ODR_CONTEXT, 1, 1, "collatingSequence") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->increasing, ODR_CONTEXT, 2, 1, "increasing") &&
            odr_sequence_end (o);
}

int z_TermListDetails (ODR o, Z_TermListDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->termListName, ODR_CONTEXT, 1, 0, "termListName") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 2, 1, "description") &&
            odr_implicit_tag (o, z_AttributeCombinations,
                  &(*p)->attributes, ODR_CONTEXT, 3, 1, "attributes") &&
            odr_implicit_tag (o, z_EScanInfo,
                  &(*p)->scanInfo, ODR_CONTEXT, 4, 1, "scanInfo") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1, "estNumberTerms") &&
            odr_implicit_settag (o, ODR_CONTEXT, 6) &&
            (odr_sequence_of(o, (Odr_fun) z_Term, &(*p)->sampleTerms,
              &(*p)->num_sampleTerms, "sampleTerms") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_ElementSetDetails (ODR o, Z_ElementSetDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_DatabaseName,
                  &(*p)->databaseName, ODR_CONTEXT, 1, 0, "databaseName") &&
            odr_implicit_tag (o, z_ElementSetName,
                  &(*p)->elementSetName, ODR_CONTEXT, 2, 0, "elementSetName") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->recordSyntax, ODR_CONTEXT, 3, 0, "recordSyntax") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->schema, ODR_CONTEXT, 4, 0, "schema") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 5, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 6) &&
            (odr_sequence_of(o, (Odr_fun) z_PerElementDetails, &(*p)->detailsPerElement,
              &(*p)->num_detailsPerElement, "detailsPerElement") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_RetrievalRecordDetails (ODR o, Z_RetrievalRecordDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_DatabaseName,
                  &(*p)->databaseName, ODR_CONTEXT, 1, 0, "databaseName") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->schema, ODR_CONTEXT, 2, 0, "schema") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->recordSyntax, ODR_CONTEXT, 3, 0, "recordSyntax") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 4, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 5) &&
            (odr_sequence_of(o, (Odr_fun) z_PerElementDetails, &(*p)->detailsPerElement,
              &(*p)->num_detailsPerElement, "detailsPerElement") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_PerElementDetails (ODR o, Z_PerElementDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_RecordTag,
                  &(*p)->recordTag, ODR_CONTEXT, 1, 1, "recordTag") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_Path, &(*p)->schemaTags,
              &(*p)->num_schemaTags, "schemaTags") || odr_ok(o)) &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->maxSize, ODR_CONTEXT, 3, 1, "maxSize") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->minSize, ODR_CONTEXT, 4, 1, "minSize") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->avgSize, ODR_CONTEXT, 5, 1, "avgSize") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->fixedSize, ODR_CONTEXT, 6, 1, "fixedSize") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->repeatable, ODR_CONTEXT, 8, 0, "repeatable") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->required, ODR_CONTEXT, 9, 0, "required") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 12, 1, "description") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->contents, ODR_CONTEXT, 13, 1, "contents") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->billingInfo, ODR_CONTEXT, 14, 1, "billingInfo") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->restrictions, ODR_CONTEXT, 15, 1, "restrictions") &&
            odr_implicit_settag (o, ODR_CONTEXT, 16) &&
            (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->alternateNames,
              &(*p)->num_alternateNames, "alternateNames") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 17) &&
            (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->genericNames,
              &(*p)->num_genericNames, "genericNames") || odr_ok(o)) &&
            odr_implicit_tag (o, z_AttributeCombinations,
                  &(*p)->searchAccess, ODR_CONTEXT, 18, 1, "searchAccess") &&
            odr_sequence_end (o);
}

int z_RecordTag (ODR o, Z_RecordTag **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->qualifier, ODR_CONTEXT, 0, 1, "qualifier") &&
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->tagValue, ODR_CONTEXT, 1, 0, "tagValue") &&
            odr_sequence_end (o);
}

int z_SortDetails (ODR o, Z_SortDetails **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_DatabaseName,
                  &(*p)->databaseName, ODR_CONTEXT, 1, 0, "databaseName") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_SortKeyDetails, &(*p)->sortKeys,
              &(*p)->num_sortKeys, "sortKeys") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetails_character,
            (Odr_fun) odr_null, "character"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortKeyDetails_numeric,
            (Odr_fun) odr_null, "numeric"},
            {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortKeyDetails_structured,
            (Odr_fun) z_HumanString, "structured"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 0, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 1) &&
            (odr_sequence_of(o, (Odr_fun) z_Specification, &(*p)->elementSpecifications,
              &(*p)->num_elementSpecifications, "elementSpecifications") || odr_ok(o)) &&
            odr_implicit_tag (o, z_AttributeCombinations,
                  &(*p)->attributeSpecifications, ODR_CONTEXT, 2, 1, "attributeSpecifications") &&
            ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 3, "sortType") &&
            odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
            odr_constructed_end (o)) || odr_ok(o)) &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->caseSensitivity, ODR_CONTEXT, 4, 1, "caseSensitivity") &&
            odr_sequence_end (o);
}

int z_ProcessingInformation (ODR o, Z_ProcessingInformation **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_DatabaseName,
                  &(*p)->databaseName, ODR_CONTEXT, 1, 0, "databaseName") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->processingContext, ODR_CONTEXT, 2, 0, "processingContext") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 3, 0, "name") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->oid, ODR_CONTEXT, 4, 0, "oid") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 5, 1, "description") &&
            odr_implicit_tag (o, z_External,
                  &(*p)->instructions, ODR_CONTEXT, 6, 1, "instructions") &&
            odr_sequence_end (o);
}

int z_VariantSetInfo (ODR o, Z_VariantSetInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, odr_oid,
                  &(*p)->variantSet, ODR_CONTEXT, 1, 0, "variantSet") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 2, 0, "name") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) z_VariantClass, &(*p)->variants,
              &(*p)->num_variants, "variants") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_VariantClass (ODR o, Z_VariantClass **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->variantClass, ODR_CONTEXT, 2, 0, "variantClass") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            odr_sequence_of(o, (Odr_fun) z_VariantType, &(*p)->variantTypes,
              &(*p)->num_variantTypes, "variantTypes") &&
            odr_sequence_end (o);
}

int z_VariantType (ODR o, Z_VariantType **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->variantType, ODR_CONTEXT, 2, 0, "variantType") &&
            odr_implicit_tag (o, z_VariantValue,
                  &(*p)->variantValue, ODR_CONTEXT, 3, 1, "variantValue") &&
            odr_sequence_end (o);
}

int z_VariantValue (ODR o, Z_VariantValue **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_explicit_tag (o, z_PrimitiveDataType,
                  &(*p)->dataType, ODR_CONTEXT, 0, 0, "dataType") &&
            odr_explicit_tag (o, z_ValueSet,
                  &(*p)->values, ODR_CONTEXT, 1, 1, "values") &&
            odr_sequence_end (o);
}

int z_ValueSetEnumerated (ODR o, Z_ValueSetEnumerated **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_ValueDescription, &(*p)->elements,
            &(*p)->num, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_ValueSet (ODR o, Z_ValueSet **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range,
            (Odr_fun) z_ValueRange, "range"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
            (Odr_fun) z_ValueSetEnumerated, "enumerated"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_initmember(o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_ValueRange (ODR o, Z_ValueRange **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_explicit_tag (o, z_ValueDescription,
                  &(*p)->lower, ODR_CONTEXT, 0, 1, "lower") &&
            odr_explicit_tag (o, z_ValueDescription,
                  &(*p)->upper, ODR_CONTEXT, 1, 1, "upper") &&
            odr_sequence_end (o);
}

int z_ValueDescription (ODR o, Z_ValueDescription **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {-1, -1, -1, Z_ValueDescription_integer,
             (Odr_fun) odr_integer, "integer"},
            {-1, -1, -1, Z_ValueDescription_string,
             (Odr_fun) z_InternationalString, "string"},
            {-1, -1, -1, Z_ValueDescription_octets,
             (Odr_fun) odr_octetstring, "octets"},
            {-1, -1, -1, Z_ValueDescription_oid,
             (Odr_fun) odr_oid, "oid"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit,
            (Odr_fun) z_Unit, "unit"},
            {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit,
            (Odr_fun) z_IntUnit, "valueAndUnit"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_initmember(o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_UnitInfo (ODR o, Z_UnitInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->unitSystem, ODR_CONTEXT, 1, 0, "unitSystem") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 2, 1, "description") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) z_UnitType, &(*p)->units,
              &(*p)->num_units, "units") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_UnitType (ODR o, Z_UnitType **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->unitType, ODR_CONTEXT, 2, 0, "unitType") &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            odr_sequence_of(o, (Odr_fun) z_Units, &(*p)->units,
              &(*p)->num_units, "units") &&
            odr_sequence_end (o);
}

int z_Units (ODR o, Z_Units **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_explicit_tag (o, z_StringOrNumeric,
                  &(*p)->unit, ODR_CONTEXT, 2, 0, "unit") &&
            odr_sequence_end (o);
}

int z_CategoryList (ODR o, Z_CategoryList **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_CommonInfo,
                  &(*p)->commonInfo, ODR_CONTEXT, 0, 1, "commonInfo") &&
            odr_implicit_settag (o, ODR_CONTEXT, 1) &&
            odr_sequence_of(o, (Odr_fun) z_CategoryInfo, &(*p)->categories,
              &(*p)->num_categories, "categories") &&
            odr_sequence_end (o);
}

int z_CategoryInfo (ODR o, Z_CategoryInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->category, ODR_CONTEXT, 1, 0, "category") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->originalCategory, ODR_CONTEXT, 2, 1, "originalCategory") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 3, 1, "description") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->asn1Module, ODR_CONTEXT, 4, 1, "asn1Module") &&
            odr_sequence_end (o);
}

int z_CommonInfo (ODR o, Z_CommonInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, odr_generalizedtime,
                  &(*p)->dateAdded, ODR_CONTEXT, 0, 1, "dateAdded") &&
            odr_implicit_tag (o, odr_generalizedtime,
                  &(*p)->dateChanged, ODR_CONTEXT, 1, 1, "dateChanged") &&
            odr_implicit_tag (o, odr_generalizedtime,
                  &(*p)->expiry, ODR_CONTEXT, 2, 1, "expiry") &&
            odr_implicit_tag (o, z_LanguageCode,
                  &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1, "humanStringLanguage") &&
            z_OtherInformation(o, &(*p)->otherInfo, 1, "otherInfo") &&
            odr_sequence_end (o);
}

int z_HumanStringUnit (ODR o, Z_HumanStringUnit **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_LanguageCode,
                  &(*p)->language, ODR_CONTEXT, 0, 1, "language") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->text, ODR_CONTEXT, 1, 0, "text") &&
            odr_sequence_end (o);
}

int z_HumanString (ODR o, Z_HumanString **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_HumanStringUnit, &(*p)->strings,
            &(*p)->num_strings, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_IconObjectUnit (ODR o, Z_IconObjectUnit **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObjectUnit_ianaType,
            (Odr_fun) z_InternationalString, "ianaType"},
            {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObjectUnit_z3950type,
            (Odr_fun) z_InternationalString, "z3950type"},
            {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObjectUnit_otherType,
            (Odr_fun) z_InternationalString, "otherType"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, "bodyType") &&
            odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
            odr_constructed_end (o) &&
            odr_implicit_tag (o, odr_octetstring,
                  &(*p)->content, ODR_CONTEXT, 2, 0, "content") &&
            odr_sequence_end (o);
}

int z_IconObject (ODR o, Z_IconObject **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_IconObjectUnit, &(*p)->elements,
            &(*p)->num, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_LanguageCode (ODR o, Z_LanguageCode **p, int opt, const char *name)
{
      return z_InternationalString (o, p, opt, name);
}

int z_ContactInfo (ODR o, Z_ContactInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->name, ODR_CONTEXT, 0, 1, "name") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->address, ODR_CONTEXT, 2, 1, "address") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->email, ODR_CONTEXT, 3, 1, "email") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->phone, ODR_CONTEXT, 4, 1, "phone") &&
            odr_sequence_end (o);
}

int z_NetworkAddressIA (ODR o, Z_NetworkAddressIA **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->hostAddress, ODR_CONTEXT, 0, 0, "hostAddress") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->port, ODR_CONTEXT, 1, 0, "port") &&
            odr_sequence_end (o);
}

int z_NetworkAddressOPA (ODR o, Z_NetworkAddressOPA **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->pSel, ODR_CONTEXT, 0, 0, "pSel") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->sSel, ODR_CONTEXT, 1, 1, "sSel") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->tSel, ODR_CONTEXT, 2, 1, "tSel") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->nSap, ODR_CONTEXT, 3, 0, "nSap") &&
            odr_sequence_end (o);
}

int z_NetworkAddressOther (ODR o, Z_NetworkAddressOther **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->type, ODR_CONTEXT, 0, 0, "type") &&
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->address, ODR_CONTEXT, 1, 0, "address") &&
            odr_sequence_end (o);
}

int z_NetworkAddress (ODR o, Z_NetworkAddress **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
            (Odr_fun) z_NetworkAddressIA, "internetAddress"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
            (Odr_fun) z_NetworkAddressOPA, "osiPresentationAddress"},
            {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
            (Odr_fun) z_NetworkAddressOther, "other"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_initmember(o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_AccessInfo (ODR o, Z_AccessInfo **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_settag (o, ODR_CONTEXT, 0) &&
            (odr_sequence_of(o, (Odr_fun) z_QueryTypeDetails, &(*p)->queryTypesSupported,
              &(*p)->num_queryTypesSupported, "queryTypesSupported") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 1) &&
            (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->diagnosticsSets,
              &(*p)->num_diagnosticsSets, "diagnosticsSets") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_AttributeSetId, &(*p)->attributeSetIds,
              &(*p)->num_attributeSetIds, "attributeSetIds") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 3) &&
            (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->schemas,
              &(*p)->num_schemas, "schemas") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 4) &&
            (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->recordSyntaxes,
              &(*p)->num_recordSyntaxes, "recordSyntaxes") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 5) &&
            (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->resourceChallenges,
              &(*p)->num_resourceChallenges, "resourceChallenges") || odr_ok(o)) &&
            odr_implicit_tag (o, z_AccessRestrictions,
                  &(*p)->restrictedAccess, ODR_CONTEXT, 6, 1, "restrictedAccess") &&
            odr_implicit_tag (o, z_Costs,
                  &(*p)->costInfo, ODR_CONTEXT, 8, 1, "costInfo") &&
            odr_implicit_settag (o, ODR_CONTEXT, 9) &&
            (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->variantSets,
              &(*p)->num_variantSets, "variantSets") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 10) &&
            (odr_sequence_of(o, (Odr_fun) z_ElementSetName, &(*p)->elementSetNames,
              &(*p)->num_elementSetNames, "elementSetNames") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 11) &&
            odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->unitSystems,
              &(*p)->num_unitSystems, "unitSystems") &&
            odr_sequence_end (o);
}

int z_QueryTypeDetails (ODR o, Z_QueryTypeDetails **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
            (Odr_fun) z_PrivateCapabilities, "zprivate"},
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
            (Odr_fun) z_RpnCapabilities, "rpn"},
            {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
            (Odr_fun) z_Iso8777Capabilities, "iso8777"},
            {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_QueryTypeDetails_z39_58,
            (Odr_fun) z_HumanString, "z39_58"},
            {ODR_IMPLICIT, ODR_CONTEXT, 101, Z_QueryTypeDetails_erpn,
            (Odr_fun) z_RpnCapabilities, "erpn"},
            {ODR_IMPLICIT, ODR_CONTEXT, 102, Z_QueryTypeDetails_rankedList,
            (Odr_fun) z_HumanString, "rankedList"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_initmember(o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_PrivateCapOperator (ODR o, Z_PrivateCapOperator **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->roperator, ODR_CONTEXT, 0, 0, "roperator") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_sequence_end (o);
}

int z_PrivateCapabilities (ODR o, Z_PrivateCapabilities **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_settag (o, ODR_CONTEXT, 0) &&
            (odr_sequence_of(o, (Odr_fun) z_PrivateCapOperator, &(*p)->operators,
              &(*p)->num_operators, "operators") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 1) &&
            (odr_sequence_of(o, (Odr_fun) z_SearchKey, &(*p)->searchKeys,
              &(*p)->num_searchKeys, "searchKeys") || odr_ok(o)) &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) z_HumanString, &(*p)->description,
              &(*p)->num_description, "description") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_RpnCapabilities (ODR o, Z_RpnCapabilities **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_settag (o, ODR_CONTEXT, 0) &&
            (odr_sequence_of(o, (Odr_fun) odr_integer, &(*p)->operators,
              &(*p)->num_operators, "operators") || odr_ok(o)) &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->resultSetAsOperandSupported, ODR_CONTEXT, 1, 0, "resultSetAsOperandSupported") &&
            odr_implicit_tag (o, odr_bool,
                  &(*p)->restrictionOperandSupported, ODR_CONTEXT, 2, 0, "restrictionOperandSupported") &&
            odr_implicit_tag (o, z_ProximitySupport,
                  &(*p)->proximity, ODR_CONTEXT, 3, 1, "proximity") &&
            odr_sequence_end (o);
}

int z_Iso8777Capabilities (ODR o, Z_Iso8777Capabilities **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_settag (o, ODR_CONTEXT, 0) &&
            odr_sequence_of(o, (Odr_fun) z_SearchKey, &(*p)->searchKeys,
              &(*p)->num_searchKeys, "searchKeys") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->restrictions, ODR_CONTEXT, 1, 1, "restrictions") &&
            odr_sequence_end (o);
}

int z_ProxSupportPrivate (ODR o, Z_ProxSupportPrivate **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, odr_integer,
                  &(*p)->unit, ODR_CONTEXT, 0, 0, "unit") &&
            odr_explicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_sequence_end (o);
}

int z_ProxSupportUnit (ODR o, Z_ProxSupportUnit **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
            (Odr_fun) odr_integer, "known"},
            {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
            (Odr_fun) z_ProxSupportPrivate, "zprivate"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_initmember(o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_ProximitySupport (ODR o, Z_ProximitySupport **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, odr_bool,
                  &(*p)->anySupport, ODR_CONTEXT, 0, 0, "anySupport") &&
            odr_implicit_settag (o, ODR_CONTEXT, 1) &&
            (odr_sequence_of(o, (Odr_fun) z_ProxSupportUnit, &(*p)->unitsSupported,
              &(*p)->num_unitsSupported, "unitsSupported") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_SearchKey (ODR o, Z_SearchKey **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_InternationalString,
                  &(*p)->searchKey, ODR_CONTEXT, 0, 0, "searchKey") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->description, ODR_CONTEXT, 1, 1, "description") &&
            odr_sequence_end (o);
}

int z_AccessRestrictionsUnit (ODR o, Z_AccessRestrictionsUnit **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_explicit_tag (o, odr_integer,
                  &(*p)->accessType, ODR_CONTEXT, 0, 0, "accessType") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->accessText, ODR_CONTEXT, 1, 1, "accessText") &&
            odr_implicit_settag (o, ODR_CONTEXT, 2) &&
            (odr_sequence_of(o, (Odr_fun) odr_oid, &(*p)->accessChallenges,
              &(*p)->num_accessChallenges, "accessChallenges") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_AccessRestrictions (ODR o, Z_AccessRestrictions **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_AccessRestrictionsUnit, &(*p)->elements,
            &(*p)->num, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_CostsOtherCharge (ODR o, Z_CostsOtherCharge **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->forWhat, ODR_CONTEXT, 1, 0, "forWhat") &&
            odr_implicit_tag (o, z_Charge,
                  &(*p)->charge, ODR_CONTEXT, 2, 0, "charge") &&
            odr_sequence_end (o);
}

int z_Costs (ODR o, Z_Costs **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_Charge,
                  &(*p)->connectCharge, ODR_CONTEXT, 0, 1, "connectCharge") &&
            odr_implicit_tag (o, z_Charge,
                  &(*p)->connectTime, ODR_CONTEXT, 1, 1, "connectTime") &&
            odr_implicit_tag (o, z_Charge,
                  &(*p)->displayCharge, ODR_CONTEXT, 2, 1, "displayCharge") &&
            odr_implicit_tag (o, z_Charge,
                  &(*p)->searchCharge, ODR_CONTEXT, 3, 1, "searchCharge") &&
            odr_implicit_tag (o, z_Charge,
                  &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1, "subscriptCharge") &&
            odr_implicit_settag (o, ODR_CONTEXT, 5) &&
            (odr_sequence_of(o, (Odr_fun) z_CostsOtherCharge, &(*p)->otherCharges,
              &(*p)->num_otherCharges, "otherCharges") || odr_ok(o)) &&
            odr_sequence_end (o);
}

int z_Charge (ODR o, Z_Charge **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_IntUnit,
                  &(*p)->cost, ODR_CONTEXT, 1, 0, "cost") &&
            odr_implicit_tag (o, z_Unit,
                  &(*p)->perWhat, ODR_CONTEXT, 2, 1, "perWhat") &&
            odr_implicit_tag (o, z_HumanString,
                  &(*p)->text, ODR_CONTEXT, 3, 1, "text") &&
            odr_sequence_end (o);
}

int z_DatabaseList (ODR o, Z_DatabaseList **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_DatabaseName, &(*p)->databases,
            &(*p)->num_databases, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_AttributeCombinations (ODR o, Z_AttributeCombinations **p, int opt, const char *name)
{
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_AttributeSetId,
                  &(*p)->defaultAttributeSet, ODR_CONTEXT, 0, 0, "defaultAttributeSet") &&
            odr_implicit_settag (o, ODR_CONTEXT, 1) &&
            odr_sequence_of(o, (Odr_fun) z_AttributeCombination, &(*p)->legalCombinations,
              &(*p)->num_legalCombinations, "legalCombinations") &&
            odr_sequence_end (o);
}

int z_AttributeCombination (ODR o, Z_AttributeCombination **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_AttributeOccurrence, &(*p)->occurrences,
            &(*p)->num_occurrences, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_AttributeValueList (ODR o, Z_AttributeValueList **p, int opt, const char *name)
{
      if (!odr_initmember (o, p, sizeof(**p)))
            return odr_missing(o, opt, name);
      if (odr_sequence_of (o, (Odr_fun) z_StringOrNumeric, &(*p)->attributes,
            &(*p)->num_attributes, name))
            return 1;
      if(o->direction == ODR_DECODE)
            *p = 0;
      return odr_missing(o, opt, name);
}

int z_AttributeOccurrence (ODR o, Z_AttributeOccurrence **p, int opt, const char *name)
{
      static Odr_arm arm[] = {
            {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_any_or_none,
            (Odr_fun) odr_null, "any_or_none"},
            {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
            (Odr_fun) z_AttributeValueList, "specific"},
            {-1, -1, -1, -1, (Odr_fun) 0, 0}
      };
      if (!odr_sequence_begin (o, p, sizeof(**p), name))
            return odr_missing(o, opt, name) && odr_ok (o);
      return
            odr_implicit_tag (o, z_AttributeSetId,
                  &(*p)->attributeSet, ODR_CONTEXT, 0, 1, "attributeSet") &&
            odr_implicit_tag (o, odr_integer,
                  &(*p)->attributeType, ODR_CONTEXT, 1, 0, "attributeType") &&
            odr_implicit_tag (o, odr_null,
                  &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1, "mustBeSupplied") &&
            odr_choice (o, arm, &(*p)->attributeValues, &(*p)->which, 0) &&
            odr_sequence_end (o);
}

Generated by  Doxygen 1.6.0   Back to index