/*
- * Copyright (c) 1995-1997, Index Data.
+ * Copyright (c) 1995-1998, Index Data.
* See the file LICENSE for details.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: d1_expout.c,v $
- * Revision 1.8 1998-02-11 11:53:35 adam
+ * Revision 1.11 1998-04-02 08:27:37 adam
+ * Minor change in definition of Z_TargetInfo. Furhter work on Explain
+ * schema - added AttributeDetails.
+ *
+ * Revision 1.10 1998/03/31 15:13:20 adam
+ * Development towards compiled ASN.1.
+ *
+ * Revision 1.9 1998/03/05 08:07:58 adam
+ * Make data1 to EXPLAIN ignore local tags in root.
+ *
+ * Revision 1.8 1998/02/11 11:53:35 adam
* Changed code so that it compiles as C++.
*
* Revision 1.7 1997/12/09 16:18:16 adam
c = c->child;
if (!is_numeric_tag (eh, c))
return 0;
+#ifdef ASN_COMPILED
+ if (c->u.tag.element->tag->value.numeric == 210)
+ *wp = Z_DatabaseInfo_actualNumber;
+ else if (c->u.tag.element->tag->value.numeric == 211)
+ *wp = Z_DatabaseInfo_approxNumber;
+ else
+ return 0;
+#else
if (c->u.tag.element->tag->value.numeric == 210)
*wp = Z_Exp_RecordCount_actualNumber;
else if (c->u.tag.element->tag->value.numeric == 211)
*wp = Z_Exp_RecordCount_approxNumber;
else
return 0;
+#endif
if (!c->child || c->child->which != DATA1N_data)
return 0;
sprintf(intbuf, "%.*s", 63, c->child->u.data.data);
res->recentNews = 0;
res->icon = 0;
res->namedResultSets = 0;
- res->multipleDbSearch = 0;
+ res->multipleDBsearch = 0;
res->maxResultSets = 0;
res->maxResultSize = 0;
res->maxTerms = 0;
case 103: res->recentNews = f_humstring(eh, c); break;
case 104: res->icon = NULL; break; /* fix */
case 105: res->namedResultSets = f_bool(eh, c); break;
- case 106: res->multipleDbSearch = f_bool(eh, c); break;
+ case 106: res->multipleDBsearch = f_bool(eh, c); break;
case 107: res->maxResultSets = f_integer(eh, c); break;
case 108: res->maxResultSize = f_integer(eh, c); break;
case 109: res->maxTerms = f_integer(eh, c); break;
}
if (!res->namedResultSets)
res->namedResultSets = eh->false_value;
- if (!res->multipleDbSearch)
- res->multipleDbSearch = eh->false_value;
+ if (!res->multipleDBsearch)
+ res->multipleDBsearch = eh->false_value;
return res;
}
res->subDbs = 0;
res->disclaimers = 0;
res->news = 0;
+#ifdef ASN_COMPILED
+ res->u.actualNumber = 0;
+#else
res->recordCount = 0;
+#endif
res->defaultOrder = 0;
res->avRecordSize = 0;
res->maxRecordSize = 0;
break;
case 207: res->disclaimers = f_humstring(eh, c); break;
case 103: res->news = f_humstring(eh, c); break;
+#ifdef ASN_COMPILED
+ case 209: res->u.actualNumber =
+ f_recordCount(eh, c, &res->which); break;
+#else
case 209: res->recordCount =
f_recordCount(eh, c, &res->recordCount_which); break;
+#endif
case 212: res->defaultOrder = f_humstring(eh, c); break;
case 213: res->avRecordSize = f_integer(eh, c); break;
case 214: res->maxRecordSize = f_integer(eh, c); break;
logf(LOG_WARN, "Attempt to convert a non-Explain record");
return 0;
}
- n = n->child;
- if (!n || n->next)
+ for (n = n->child; n; n = n->next)
{
- logf(LOG_WARN, "Explain record should have one exactly one child");
- return 0;
- }
- switch (is_numeric_tag (&eh, n))
- {
- case 1:
- res->which = Z_Explain_targetInfo;
- if (!(res->u.targetInfo = f_targetInfo(&eh, n)))
- return 0;
- break;
- case 2:
- res->which = Z_Explain_databaseInfo;
- if (!(res->u.databaseInfo = f_databaseInfo(&eh, n)))
- return 0;
- break;
- default:
- logf(LOG_WARN, "Unknown explain category");
- return 0;
+ switch (is_numeric_tag (&eh, n))
+ {
+ case 1:
+ res->which = Z_Explain_targetInfo;
+ if (!(res->u.targetInfo = f_targetInfo(&eh, n)))
+ return 0;
+ return res;
+ case 2:
+ res->which = Z_Explain_databaseInfo;
+ if (!(res->u.databaseInfo = f_databaseInfo(&eh, n)))
+ return 0;
+ return res;
+ }
}
- return res;
+ logf(LOG_WARN, "No category in Explain record");
+ return 0;
}