/*
* IR toolkit for tcl/tk
- * (c) Index Data 1996
+ * (c) Index Data 1996-1998
* See the file LICENSE for details.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: explain.c,v $
- * Revision 1.4 1996-08-22 13:39:31 adam
+ * Revision 1.13 2003-02-18 10:31:38 adam
+ * Minor change
+ *
+ * Revision 1.12 2003/02/18 10:28:00 adam
+ * Fix for new schema definition
+ *
+ * Revision 1.11 1998/05/20 12:24:41 adam
+ * Fixed bug regaring missing element languages in TargetInfo.
+ * Changed code so that it works with ASN.1 compiled YAZ code.
+ *
+ * Revision 1.10 1998/04/02 14:31:08 adam
+ * This version works with compiled ASN.1 code.
+ *
+ * Revision 1.9 1997/11/24 11:34:38 adam
+ * Using odr_nullval() instead of ODR_NULLVAL when appropriate.
+ *
+ * Revision 1.8 1997/09/09 10:19:51 adam
+ * New MSV5.0 port with fewer warnings.
+ *
+ * Revision 1.7 1997/08/28 20:17:36 adam
+ * Fixed small bug.
+ *
+ * Revision 1.6 1997/05/14 06:57:14 adam
+ * Adopted to use YAZ with C++ support.
+ *
+ * Revision 1.5 1996/08/23 11:59:47 adam
+ * Bug fix: infinite look in ir_oid.
+ *
+ * Revision 1.4 1996/08/22 13:39:31 adam
* More work on explain.
*
* Revision 1.3 1996/08/21 13:32:50 adam
int (*handle)();
} IrExpChoice;
+#ifdef ASN_COMPILED
+#else
typedef char *Z_ElementSetName;
typedef Odr_oid *Z_AttributeSetId;
typedef char *Z_InternationalString;
typedef char *Z_LanguageCode;
+#endif
static int ir_UnitType (IrExpArg *iea,
Z_UnitType *p, const char *name, int argi);
if (strcmp (name, iea->argv[argi]))
return 0;
}
- else
+ else if (*name)
Tcl_AppendResult (iea->interp, "{", name, " ", NULL);
+ else
+ Tcl_AppendResult (iea->interp, "{", NULL);
return 1;
}
sprintf (buf, "%c%d", first, *p);
Tcl_AppendResult (iea->interp, buf, NULL);
first = '.';
+ p++;
}
return ir_match_end (name, iea, argi);
}
&p->num_dbCombinations, "dbCombinations", argi);
ir_sequence (ir_NetworkAddress, iea, p->addresses,
&p->num_addresses, "addresses", argi);
+ ir_sequence (ir_InternationalString, iea, p->languages,
+ &p->num_languages, "languages", argi);
ir_AccessInfo (iea, p->commonAccessInfo, "commonAccessInfo", argi);
return ir_match_end (name, iea, argi);
}
Z_DatabaseInfo *p, const char *name, int argi)
{
static IrExpChoice arm_recordCount [] = {
- { "actualNumber", Z_Exp_RecordCount_actualNumber,
+ { "actualNumber", Z_DatabaseInfo_actualNumber,
ir_integer },
- { "approxNumber", Z_Exp_RecordCount_approxNumber,
+ { "approxNumber", Z_DatabaseInfo_approxNumber,
ir_integer },
{ NULL, 0, NULL }};
ir_HumanString (iea, p->disclaimers, "disclaimers", argi);
ir_HumanString (iea, p->news, "news", argi);
- ir_choice (iea, arm_recordCount, &p->recordCount_which,
- p->recordCount, argi);
-
+ ir_choice (iea, arm_recordCount, &p->which,
+ p->u.actualNumber, argi);
ir_HumanString (iea, p->defaultOrder, "defaultOrder", argi);
ir_integer (iea, p->avRecordSize, "avRecordSize", argi);
ir_integer (iea, p->maxRecordSize, "maxRecordSize", argi);
int *p, const char *name, int argi)
{
static IrExpChoice arm[] = {
- {"octetString", Z_PrimitiveElement_octetString, ir_choice_nop },
- {"numeric", Z_PrimitiveElement_numeric, ir_choice_nop },
+ {"octetString", Z_PrimitiveDataType_octetString, ir_choice_nop },
+ {"numeric", Z_PrimitiveDataType_numeric, ir_choice_nop },
{NULL, 0, NULL}};
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_choice (iea, arm, p, ODR_NULLVAL, argi);
+ ir_choice (iea, arm, p, odr_nullval(), argi);
return ir_match_end (name, iea, argi);
}
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
+#if ASN_COMPILED
+ ir_sequence (ir_ElementInfo, iea, p->elements,
+ &p->num, "elements", argi);
+#else
ir_sequence (ir_ElementInfo, iea, p->list,
- &p->num, "list", argi);
+ &p->num, "elements", argi);
+#endif
return ir_match_end (name, iea, argi);
}
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
+#if ASN_COMPILED
+ ir_sequence (ir_PathUnit, iea, p->elements,
+ &p->num, "elements", argi);
+#else
ir_sequence (ir_PathUnit, iea, p->list,
- &p->num, "list", argi);
+ &p->num, "elements", argi);
+#endif
return ir_match_end (name, iea, argi);
}
-static int ir_TagSetInfoElements (IrExpArg *iea,
+#if ASN_COMPILED
+static int ir_TagSetElements (IrExpArg *iea,
+ Z_TagSetElements *p, const char *name, int argi)
+#else
+static int ir_TagSetElements (IrExpArg *iea,
Z_TagSetInfoElements *p, const char *name, int argi)
+#endif
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_InternationalString (iea, p->elementName, "elementname", argi);
+ ir_InternationalString (iea, p->elementname, "elementname", argi);
ir_sequence (ir_InternationalString, iea, p->nicknames,
&p->num_nicknames, "nicknames", argi);
ir_StringOrNumeric (iea, p->elementTag, "elementTag", argi);
ir_oid (iea, p->tagSet, "tagSet", argi);
ir_InternationalString (iea, p->name, "name", argi);
ir_HumanString (iea, p->description, "description", argi);
- ir_sequence (ir_TagSetInfoElements, iea, p->elements,
+ ir_sequence (ir_TagSetElements, iea, p->elements,
&p->num_elements, "elements", argi);
return ir_match_end (name, iea, argi);
}
Z_TermListElement *p, const char *name, int argi)
{
static IrExpChoice searchCostArm [] = {
- { "optimized", Z_TermListInfo_optimized, ir_choice_nop },
- { "normal", Z_TermListInfo_normal, ir_choice_nop },
- { "expensive", Z_TermListInfo_expensive, ir_choice_nop },
- { "filter", Z_TermListInfo_filter, ir_choice_nop },
+ { "optimized", Z_TermListElement_optimized, ir_choice_nop },
+ { "normal", Z_TermListElement_normal, ir_choice_nop },
+ { "expensive", Z_TermListElement_expensive, ir_choice_nop },
+ { "filter", Z_TermListElement_filter, ir_choice_nop },
{ NULL, 0, NULL }};
ir_InternationalString (iea, p->name, "name", argi);
ir_HumanString (iea, p->title, "title", argi);
if (p->searchCost)
- ir_choice (iea, searchCostArm, p->searchCost, ODR_NULLVAL, argi);
+ ir_choice (iea, searchCostArm, p->searchCost, odr_nullval(), argi);
ir_bool (iea, p->scanable, "scanable", argi);
ir_sequence (ir_InternationalString, iea, p->broader,
ir_bool (iea, p->available, "available", argi);
ir_bool (iea, p->retentionSupported, "retentionSupported", argi);
- ir_choice (iea, waitActionArm, p->waitAction, ODR_NULLVAL, argi);
+ ir_choice (iea, waitActionArm, p->waitAction, odr_nullval(), argi);
ir_HumanString (iea, p->description, "description", argi);
ir_External (iea, p->specificExplain, "specificExplain", argi);
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
ir_integer (iea, p->attributeType, "attributeType", argi);
- ir_OmittedAttributeInterpretation (iea, p->optionalType,
- "optionalType", argi);
+ ir_OmittedAttributeInterpretation (iea, p->defaultIfOmitted,
+ "defaultIfOmitted", argi);
ir_sequence (ir_AttributeValue, iea, p->attributeValues,
&p->num_attributeValues, "attributeValues", argi);
return ir_match_end (name, iea, argi);
return ir_match_end (name, iea, argi);
}
-static int ir_SortKeyDetailsSortType (IrExpArg *iea,
- Z_SortKeyDetailsSortType *p, const char *name, int argi)
-{
- static IrExpChoice sortArm [] = {
- { "character", Z_SortKeyDetailsSortType_character,
- ir_null },
- { "numeric", Z_SortKeyDetailsSortType_numeric,
- ir_null },
- { "structured", Z_SortKeyDetailsSortType_structured,
- ir_HumanString },
- { NULL, 0, NULL }};
- return ir_choice (iea, sortArm, &p->which, p->u.character, argi);
-}
-
static int ir_SortKeyDetails (IrExpArg *iea,
Z_SortKeyDetails *p, const char *name, int argi)
{
ir_choice_nop },
{ "never", Z_SortKeyDetails_never,
ir_choice_nop },
- { "defaultYes", Z_SortKeyDetails_defaultYes,
+ { "defaultYes", Z_SortKeyDetails_default_yes,
ir_choice_nop },
- { "defaultNo", Z_SortKeyDetails_defaultNo,
+ { "defaultNo", Z_SortKeyDetails_default_no,
ir_choice_nop },
{ NULL, 0, NULL }};
+ static IrExpChoice sortArm2 [] = {
+ { "character", Z_SortKeyDetails_character,
+ ir_null },
+ { "numeric", Z_SortKeyDetails_numeric,
+ ir_null },
+ { "structured", Z_SortKeyDetails_structured,
+ ir_HumanString },
+ { NULL, 0, NULL }};
+
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
ir_HumanString (iea, p->description, "description", argi);
&p->num_elementSpecifications, "elementSpecifications", argi);
ir_AttributeCombinations (iea, p->attributeSpecifications,
"attributeSpecifications", argi);
- ir_SortKeyDetailsSortType (iea, p->sortType, "sortType", argi);
-
+ ir_choice (iea, sortArm2, &p->which, p->u.character, argi);
+
if (p->caseSensitivity)
- ir_choice (iea, sortArm, p->caseSensitivity, ODR_NULLVAL, argi);
+ ir_choice (iea, sortArm, p->caseSensitivity, odr_nullval(), argi);
return ir_match_end (name, iea, argi);
}
ir_choice_nop },
{ "retrieval", Z_ProcessingInformation_retrieval,
ir_choice_nop },
- { "recordPresentation", Z_ProcessingInformation_recordPresentation,
+ { "recordPresentation", Z_ProcessingInformation_record_presentation,
ir_choice_nop },
- { "recordHandling", Z_ProcessingInformation_recordHandling,
+ { "recordHandling", Z_ProcessingInformation_record_handling,
ir_choice_nop },
{ NULL, 0, NULL }};
if (!ir_match_start (name, p, iea, ++argi))
ir_CommonInfo (iea, p->commonInfo, "commonInfo", argi);
ir_DatabaseName (iea, p->databaseName, "databaseName", argi);
- ir_choice (iea, arm, p->processingContext, ODR_NULLVAL, argi);
+ ir_choice (iea, arm, p->processingContext, odr_nullval(), argi);
ir_InternationalString (iea, p->name, "name", argi);
ir_oid (iea, p->oid, "oid", argi);
ir_HumanString (iea, p->description, "description", argi);
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_sequence (ir_ValueDescription, iea, p->enumerated,
- &p->num_enumerated, "enumerated", argi);
+ ir_sequence (ir_ValueDescription, iea, p->elements,
+ &p->num, "enumerated", argi);
return ir_match_end (name, iea, argi);
}
Z_IconObjectUnit *p, const char *name, int argi)
{
static IrExpChoice arm [] = {
- { "ianaType", Z_IconObject_ianaType, ir_choice_nop },
- { "z3950type", Z_IconObject_z3950type, ir_choice_nop },
- { "otherType", Z_IconObject_otherType, ir_choice_nop },
+ { "ianaType", Z_IconObjectUnit_ianaType, ir_InternationalString },
+ { "z3950type", Z_IconObjectUnit_z3950type, ir_InternationalString },
+ { "otherType", Z_IconObjectUnit_otherType, ir_InternationalString },
{ NULL, 0, NULL }};
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_choice (iea, arm, &p->which, ODR_NULLVAL, argi);
- ir_InternationalString (iea, p->bodyType, "bodyType", argi);
+ ir_choice (iea, arm, &p->which, odr_nullval(), argi);
ir_octet (iea, p->content, "content", argi);
return ir_match_end (name, iea, argi);
}
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_sequence (ir_IconObjectUnit, iea, p->iconUnits,
- &p->num_iconUnits, "iconUnits", argi);
+ ir_sequence (ir_IconObjectUnit, iea, p->elements,
+ &p->num, "iconUnits", argi);
return ir_match_end (name, iea, argi);
}
ir_RpnCapabilities },
{ "iso8777", Z_QueryTypeDetails_iso8777,
ir_Iso8777Capabilities },
- { "z3958", Z_QueryTypeDetails_z3958,
+ { "z39_58", Z_QueryTypeDetails_z39_58,
ir_HumanString },
{ "erpn", Z_QueryTypeDetails_erpn,
ir_RpnCapabilities },
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_choice (iea, arm, &p->which, p->u.private, argi);
+ ir_choice (iea, arm, &p->which, p->u.zprivate, argi);
return ir_match_end (name, iea, argi);
}
{ NULL, 0, NULL }};
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_choice (iea, arm, &p->which, p->u.private, argi);
+ ir_choice (iea, arm, &p->which, p->u.zprivate, argi);
return ir_match_end (name, iea, argi);
}
Z_AccessRestrictionsUnit *p, const char *name, int argi)
{
static IrExpChoice arm[] = {
- { "any", Z_AccessRestrictions_any,
+ { "any", Z_AccessRestrictionsUnit_any,
ir_choice_nop },
- { "search", Z_AccessRestrictions_search,
+ { "search", Z_AccessRestrictionsUnit_search,
ir_choice_nop },
- { "present", Z_AccessRestrictions_present,
+ { "present", Z_AccessRestrictionsUnit_present,
ir_choice_nop },
- { "specificElements", Z_AccessRestrictions_specific_elements,
+ { "specificElements", Z_AccessRestrictionsUnit_specific_elements,
ir_choice_nop },
- { "extendedServices", Z_AccessRestrictions_extended_services,
+ { "extendedServices", Z_AccessRestrictionsUnit_extended_services,
ir_choice_nop },
- { "byDatabase", Z_AccessRestrictions_by_database,
+ { "byDatabase", Z_AccessRestrictionsUnit_by_database,
ir_choice_nop },
{ NULL, 0, NULL }};
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_choice (iea, arm, p->accessType, ODR_NULLVAL, argi);
+ ir_choice (iea, arm, p->accessType, odr_nullval(), argi);
ir_HumanString (iea, p->accessText, "accessText", argi);
ir_sequence (ir_oid, iea, p->accessChallenges,
&p->num_accessChallenges, "accessChallenges", argi);
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_sequence (ir_AccessRestrictionsUnit, iea, p->restrictions,
- &p->num_restrictions, "restrictions", argi);
+ ir_sequence (ir_AccessRestrictionsUnit, iea, p->elements,
+ &p->num, "restrictions", argi);
return ir_match_end (name, iea, argi);
}
Z_AttributeOccurrence *p, const char *name, int argi)
{
static IrExpChoice arm [] = {
- { "anyOrNone", Z_AttributeOcc_anyOrNone, ir_null },
- { "specific", Z_AttributeOcc_specific, ir_AttributeValueList },
+ { "anyOrNone", Z_AttributeOcc_any_or_none, ir_null },
+ { "specific", Z_AttributeOcc_specific,
+ ir_AttributeValueList },
{ NULL, 0, NULL } };
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
ir_oid (iea, p->attributeSet, "attributeSet", argi);
ir_integer (iea, p->attributeType, "attributeType", argi);
ir_null (iea, p->mustBeSupplied, "mustBeSupplied", argi);
- ir_choice (iea, arm, &p->which, p->attributeValues->anyOrNone, argi);
+ ir_choice (iea, arm, &p->which, p->attributeValues.any_or_none, argi);
return ir_match_end (name, iea, argi);
}
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
+#if YAZ_VERSIONL >= 0x010903L
+ if (p->which == Z_Schema_oid)
+ ir_oid (iea, p->schema.oid, "schema", argi);
+#else
ir_oid (iea, p->schema, "schema", argi);
+#endif
ir_ElementSpec (iea, p->elementSpec, "elementSpec", argi);
return ir_match_end (name, iea, argi);
}
Z_OtherInformationUnit *p, const char *name, int argi)
{
static IrExpChoice arm[] = {
- { "characterInfo", Z_OtherInfo_characterInfo,
- ir_InternationalString },
- { "binaryInfo", Z_OtherInfo_binaryInfo,
- ir_octet},
- { "externallyDefinedInfo", Z_OtherInfo_externallyDefinedInfo,
- ir_External},
- { "oid", Z_OtherInfo_oid,
- ir_oid},
+ { "characterInfo",
+ Z_OtherInfo_characterInfo, ir_InternationalString },
+ { "binaryInfo",
+ Z_OtherInfo_binaryInfo, ir_octet},
+ { "externallyDefinedInfo",
+ Z_OtherInfo_externallyDefinedInfo,
+ ir_External},
+ { "oid",
+ Z_OtherInfo_oid, ir_oid},
{ NULL, 0, NULL }};
if (!ir_match_start (name, p, iea, ++argi))
{
if (!ir_match_start (name, p, iea, ++argi))
return TCL_OK;
- ir_sequence (ir_OtherInformationUnit, iea, p->list,
+ ir_sequence (ir_OtherInformationUnit, iea, p->list,
&p->num_elements, "list", argi);
return ir_match_end (name, iea, argi);
}