Added OPAC, ResourceReport
[yaz-moved-to-github.git] / include / proto.h
index 1d3d89f..2a323fa 100644 (file)
  * OF THIS SOFTWARE.
  *
  * $Log: proto.h,v $
- * Revision 1.27  1995-10-12 10:34:46  quinn
+ * Revision 1.35  1996-06-10 08:57:38  quinn
+ * Added OPAC, ResourceReport
+ *
+ * Revision 1.34  1996/06/10  08:55:36  quinn
+ * Added Summary.
+ *
+ * Revision 1.33  1996/02/23  10:00:51  quinn
+ * SCAN Work
+ *
+ * Revision 1.32  1996/02/20  12:52:39  quinn
+ * Various
+ *
+ * Revision 1.31  1996/01/22  09:46:45  quinn
+ * Added Sort PDU. Moved StringList to main protocol file.
+ *
+ * Revision 1.30  1996/01/10  15:21:32  quinn
+ * Added links to access control PDUs
+ *
+ * Revision 1.29  1996/01/02  11:46:49  quinn
+ * Changed 'operator' to 'roperator' to avoid C++ conflict.
+ * Moved to pl3
+ *
+ * Revision 1.28  1996/01/02  08:57:32  quinn
+ * Changed enums in the ASN.1 .h files to #defines. Changed oident.class to oclass
+ *
+ * Revision 1.27  1995/10/12  10:34:46  quinn
  * Added Espec-1.
  *
  * Revision 1.26  1995/09/29  17:12:08  quinn
@@ -177,13 +202,11 @@ typedef struct Z_InfoCategory
 typedef struct Z_OtherInformationUnit
 {
     Z_InfoCategory *category;        /* OPTIONAL */
-    enum
-    {
-       Z_OtherInfo_characterInfo,
-       Z_OtherInfo_binaryInfo,
-       Z_OtherInfo_externallyDefinedInfo,
-       Z_OtherInfo_oid
-    } which;
+    int which;
+#define Z_OtherInfo_characterInfo 0
+#define Z_OtherInfo_binaryInfo 1
+#define Z_OtherInfo_externallyDefinedInfo 2
+#define Z_OtherInfo_oid 3
     union
     {
        char *characterInfo; 
@@ -201,11 +224,9 @@ typedef struct Z_OtherInformation
 
 typedef struct Z_StringOrNumeric
 {
-    enum
-    {
-       Z_StringOrNumeric_string,
-       Z_StringOrNumeric_numeric
-    } which;
+    int which;
+#define Z_StringOrNumeric_string 0
+#define Z_StringOrNumeric_numeric 1
     union
     {
        char *string;
@@ -229,6 +250,12 @@ typedef struct Z_IntUnit
 
 typedef Odr_oct Z_SUTRS;
 
+typedef struct Z_StringList
+{
+    int num_strings;
+    char **strings;
+} Z_StringList;
+
 /* ----------------- INIT SERVICE  ----------------*/
 
 typedef struct
@@ -240,13 +267,11 @@ typedef struct
 
 typedef struct Z_IdAuthentication
 {
-    enum
-    {
-       Z_IdAuthentication_open,
-       Z_IdAuthentication_idPass,
-       Z_IdAuthentication_anonymous,
-       Z_IdAuthentication_other
-    } which;
+    int which;
+#define Z_IdAuthentication_open 0
+#define Z_IdAuthentication_idPass 1
+#define Z_IdAuthentication_anonymous 2
+#define Z_IdAuthentication_other 3
     union
     {
        char *open;
@@ -364,11 +389,9 @@ typedef struct Z_AttributeElement
 #endif
     int *attributeType;
 #ifdef Z_95
-    enum
-    {
-       Z_AttributeValue_numeric,
-       Z_AttributeValue_complex
-    } which;
+    int which;
+#define Z_AttributeValue_numeric 0
+#define Z_AttributeValue_complex 1
     union
     {
        int *numeric;
@@ -381,17 +404,15 @@ typedef struct Z_AttributeElement
 
 typedef struct Z_Term 
 {
-    enum
-    {
-       Z_Term_general,
-       Z_Term_numeric,
-       Z_Term_characterString,
-       Z_Term_oid,
-       Z_Term_dateTime,
-       Z_Term_external,
-       Z_Term_integerAndUnit,
-       Z_Term_null
-    } which;
+    int which;
+#define Z_Term_general 0
+#define Z_Term_numeric 1
+#define Z_Term_characterString 2
+#define Z_Term_oid 3
+#define Z_Term_dateTime 4
+#define Z_Term_external 5
+#define Z_Term_integerAndUnit 6
+#define Z_Term_null 7
     union
     {
        Odr_oct *general; /* this is required for v2 */
@@ -431,11 +452,9 @@ typedef struct Z_ProximityOperator
 #define Z_Prox_greaterThanOrEqual 4
 #define Z_Prox_greaterThan        5
 #define Z_Prox_notEqual           6
-    enum
-    {
-       Z_ProxCode_known,
-       Z_ProxCode_private
-    } which;
+    int which;
+#define Z_ProxCode_known 0
+#define Z_ProxCode_private 1
     int *proximityUnitCode;
 #define Z_ProxUnit_character       1
 #define Z_ProxUnit_word            2
@@ -452,13 +471,11 @@ typedef struct Z_ProximityOperator
 
 typedef struct Z_Operator
 {
-    enum
-    {
-       Z_Operator_and,
-       Z_Operator_or,
-       Z_Operator_and_not,
-       Z_Operator_prox
-    } which;
+    int which;
+#define Z_Operator_and 0
+#define Z_Operator_or 1
+#define Z_Operator_and_not 2
+#define Z_Operator_prox 3
     union
     {
        Odr_null *and;          /* these guys are nulls. */
@@ -470,12 +487,10 @@ typedef struct Z_Operator
 
 typedef struct Z_Operand
 {
-    enum
-    {
-       Z_Operand_APT,
-       Z_Operand_resultSetId,
-       Z_Operand_resultAttr             /* v3 only */
-    } which;
+    int which;
+#define Z_Operand_APT 0
+#define Z_Operand_resultSetId 1
+#define Z_Operand_resultAttr             /* v3 only */ 2
     union
     {
        Z_AttributesPlusTerm *attributesPlusTerm;
@@ -488,16 +503,14 @@ typedef struct Z_Complex
 {
     struct Z_RPNStructure *s1;
     struct Z_RPNStructure *s2;
-    Z_Operator *operator;
+    Z_Operator *roperator;
 } Z_Complex;
 
 typedef struct Z_RPNStructure
 {
-    enum
-    {
-       Z_RPNStructure_simple,
-       Z_RPNStructure_complex
-    } which;
+    int which;
+#define Z_RPNStructure_simple 0
+#define Z_RPNStructure_complex 1
     union
     {
        Z_Operand *simple;
@@ -515,13 +528,10 @@ typedef struct Z_RPNQuery
 
 typedef struct Z_Query
 {
-    enum
-    {
-       Z_Query_type_1 = 1,
-       Z_Query_type_2,
-       Z_Query_type_101
-    }
-    which;
+    int which;
+#define Z_Query_type_1 1
+#define Z_Query_type_2 2
+#define Z_Query_type_101 3
     union
     {
        Z_RPNQuery *type_1;
@@ -562,21 +572,17 @@ typedef struct Z_DefaultDiagFormat
     int *condition;
     /* until the whole character set issue becomes more definite,
      * you can probably ignore this on input. */
-    enum  
-    {
-       Z_DiagForm_v2AddInfo,
-       Z_DiagForm_v3AddInfo
-    } which;
+    int which;
+#define Z_DiagForm_v2AddInfo 0
+#define Z_DiagForm_v3AddInfo 1
     char *addinfo;
 } Z_DefaultDiagFormat;
 
 typedef struct Z_DiagRec
 {
-    enum
-    {  
-       Z_DiagRec_defaultFormat,
-       Z_DiagRec_externallyDefined
-    } which;
+    int which;
+#define Z_DiagRec_defaultFormat 0
+#define Z_DiagRec_externallyDefined 1
     union
     {
        Z_DefaultDiagFormat *defaultFormat;
@@ -604,12 +610,9 @@ typedef struct Z_DiagRecs
 typedef struct Z_NamePlusRecord
 {
     char *databaseName;      /* OPTIONAL */
-    enum
-    {
-       Z_NamePlusRecord_databaseRecord,
-       Z_NamePlusRecord_surrogateDiagnostic
-    }
-    which;
+    int which;
+#define Z_NamePlusRecord_databaseRecord 0
+#define Z_NamePlusRecord_surrogateDiagnostic 1
     union
     {
        Z_DatabaseRecord *databaseRecord;
@@ -625,12 +628,10 @@ typedef struct Z_NamePlusRecordList
 
 typedef struct Z_Records
 {
-    enum
-    {
-       Z_Records_DBOSD,
-       Z_Records_NSD,
-       Z_Records_multipleNSD
-    } which;
+    int which;
+#define Z_Records_DBOSD 0
+#define Z_Records_NSD 1
+#define Z_Records_multipleNSD 2
     union
     {
        Z_NamePlusRecordList *databaseOrSurDiagnostics;
@@ -670,11 +671,9 @@ typedef struct Z_SearchResponse
 
 typedef struct Z_ElementSpec
 {
-    enum
-    {
-       Z_ElementSpec_elementSetName,
-       Z_ElementSpec_externalSpec
-    } which;
+    int which;
+#define Z_ElementSpec_elementSetName 0
+#define Z_ElementSpec_externalSpec 1
     union
     {
        char *elementSetName;
@@ -706,11 +705,9 @@ typedef struct Z_CompSpec
 
 typedef struct Z_RecordComposition
 {
-    enum
-    {
-       Z_RecordComp_simple,
-       Z_RecordComp_complex
-    } which;
+    int which;
+#define Z_RecordComp_simple 0
+#define Z_RecordComp_complex 1
     union
     {
        Z_ElementSetNames *simple;
@@ -806,11 +803,9 @@ typedef struct Z_ResourceControlResponse
 typedef struct Z_AccessControlRequest
 {
     Z_ReferenceId *referenceId;           /* OPTIONAL */
-    enum
-    {
-       Z_AccessRequest_simpleForm,
-       Z_AccessRequest_externallyDefined
-    } which;
+    int which;
+#define Z_AccessRequest_simpleForm 0
+#define Z_AccessRequest_externallyDefined 1
     union
     {
        Odr_oct *simpleForm;
@@ -824,11 +819,9 @@ typedef struct Z_AccessControlRequest
 typedef struct Z_AccessControlResponse
 {
     Z_ReferenceId *referenceId;              /* OPTIONAL */
-    enum
-    {
-       Z_AccessResponse_simpleForm,
-       Z_AccessResponse_externallyDefined
-    } which;
+    int which;
+#define Z_AccessResponse_simpleForm 0
+#define Z_AccessResponse_externallyDefined 1
     union
     {
        Odr_oct *simpleForm;
@@ -854,15 +847,60 @@ typedef struct Z_AlternativeTerm
     Z_AttributesPlusTerm **terms;
 } Z_AlternativeTerm;
 
+#if 1
+
+typedef struct Z_ByDatabase
+{
+    char *db;
+    int *num;                           /* OPTIONAL */
+    Z_OtherInformation *otherDbInfo;    /* OPTIONAL */
+} Z_ByDatabase;
+
+typedef struct Z_ByDatabaseList
+{
+    int num_elements;
+    Z_ByDatabase **elements;
+} Z_ByDatabaseList;
+
+typedef struct Z_ScanOccurrences
+{
+    int which;
+#define Z_ScanOccurrences_global         0
+#define Z_ScanOccurrences_byDatabase     1
+    union
+    {
+       int *global;
+       Z_ByDatabaseList *byDatabase;
+    } u;
+
+} Z_ScanOccurrences;
+
+typedef struct Z_OccurrenceByAttributesElem
+{
+    Z_AttributeList *attributes;
+    Z_ScanOccurrences *occurrences;         /* OPTIONAL */
+    Z_OtherInformation *otherOccurInfo;      /* OPTIONAL */
+} Z_OccurrenceByAttributesElem;
+
+typedef struct Z_OccurrenceByAttributes
+{
+    int num_elements;
+    Z_OccurrenceByAttributesElem **elements;
+} Z_OccurrenceByAttributes;
+
+#else
+
+/*
+ * Old, incomplete definition of OccurrenceByAttributes.
+ */
+
 typedef struct Z_OccurrenceByAttributes
 {
     Z_AttributeList *attributes;
 #if 0
-    enum
-    {
-       Z_OByAtt_global,
-       Z_ObyAtt_byDatabase
-    } which;
+    int which;
+#define Z_OByAtt_global 0
+#define Z_ObyAtt_byDatabase 1
     union
     {
 #endif
@@ -873,22 +911,24 @@ typedef struct Z_OccurrenceByAttributes
 #endif
 } Z_OccurrenceByAttributes;
 
+#endif
+
 typedef struct Z_TermInfo
 {
     Z_Term *term;
+    char *displayTerm;                     /* OPTIONAL */
     Z_AttributeList *suggestedAttributes;  /* OPTIONAL */
     Z_AlternativeTerm *alternativeTerm;    /* OPTIONAL */
     int *globalOccurrences;                /* OPTIONAL */
     Z_OccurrenceByAttributes *byAttributes; /* OPTIONAL */
+    Z_OtherInformation *otherTermInfo;      /* OPTIONAL */
 } Z_TermInfo;
 
 typedef struct Z_Entry
 {
-    enum
-    {
-       Z_Entry_termInfo,
-       Z_Entry_surrogateDiagnostic
-    } which;
+    int which;
+#define Z_Entry_termInfo 0
+#define Z_Entry_surrogateDiagnostic 1
     union
     {
        Z_TermInfo *termInfo;
@@ -904,11 +944,9 @@ typedef struct Z_Entries
 
 typedef struct Z_ListEntries
 {
-    enum
-    {
-       Z_ListEntries_entries,
-       Z_ListEntries_nonSurrogateDiagnostics
-    } which;
+    int which;
+#define Z_ListEntries_entries 0
+#define Z_ListEntries_nonSurrogateDiagnostics 1
     union
     {
        Z_Entries *entries;
@@ -1086,30 +1124,165 @@ typedef struct Z_ExtendedServicesResponse
     Z_OtherInformation *otherInfo;          /* OPTIONAL */
 } Z_ExtendedServicesResponse;
 
+/* ------------------------ Sort --------------------------- */
+
+typedef struct Z_SortAttributes
+{
+    Odr_oid *id;
+    Z_AttributeList *list;
+} Z_SortAttributes;
+
+typedef struct Z_SortKey
+{
+    int which;
+#define Z_SortKey_sortField             0
+#define Z_SortKey_elementSpec           1
+#define Z_SortKey_sortAttributes        2
+    union
+    {
+       char *sortField;
+       Z_Specification *elementSpec;
+       Z_SortAttributes *sortAttributes;
+    } u;
+} Z_SortKey;
+
+typedef struct Z_SortDbSpecific
+{
+    char *databaseName;
+    Z_SortKey *dbSort;
+} Z_SortDbSpecific;
+
+typedef struct Z_SortDbSpecificList
+{
+    int num_dbSpecific;
+    Z_SortDbSpecific **dbSpecific;
+} Z_SortDbSpecificList;
+
+typedef struct Z_SortElement
+{
+    int which;
+#define Z_SortElement_generic               0
+#define Z_SortElement_databaseSpecific      1
+    union
+    {
+       Z_SortKey *generic;
+       Z_SortDbSpecificList *databaseSpecific;
+    } u;
+} Z_SortElement;
+
+typedef struct Z_SortMissingValueAction
+{
+    int which;
+#define Z_SortMissingValAct_abort           0
+#define Z_SortMissingValAct_null            1
+#define Z_SortMissingValAct_valData         2
+    union
+    {
+       Odr_null *abort;
+       Odr_null *null;
+       Odr_oct *valData;
+    } u;
+} Z_SortMissingValueAction;
+
+typedef struct Z_SortKeySpec
+{
+    Z_SortElement *sortElement;
+    int *sortRelation;
+#define Z_SortRelation_ascending            0
+#define Z_SortRelation_descending           1
+#define Z_SortRelation_ascendingByFreq      3
+#define Z_SortRelation_descendingByFreq     4
+    int *caseSensitivity;
+#define Z_SortCase_caseSensitive            0
+#define Z_SortCase_caseInsensitive          1
+    Z_SortMissingValueAction *missingValueAction;  /* OPTIONAL */
+} Z_SortKeySpec;
+
+typedef struct Z_SortResponse
+{
+    Z_ReferenceId *referenceId;             /* OPTIONAL */
+    int *sortStatus;
+#define Z_SortStatus_success              0
+#define Z_SortStatus_partial_1            1
+#define Z_SortStatus_failure              2
+    int *resultSetStatus;                   /* OPTIONAL */
+#define Z_SortResultSetStatus_empty       1
+#define Z_SortResultSetStatus_interim     2
+#define Z_SortResultSetStatus_unchanged   3
+#define Z_SortResultSetStatus_none        4
+    Z_DiagRecs *diagnostics;                /* OPTIONAL */
+    Z_OtherInformation *otherInfo;          /* OPTIONAL */
+} Z_SortResponse;
+
+typedef struct Z_SortKeySpecList
+{
+    int num_specs;
+    Z_SortKeySpec **specs;
+} Z_SortKeySpecList;
+
+typedef struct Z_SortRequest
+{
+    Z_ReferenceId *referenceId;             /* OPTIONAL */
+    Z_StringList *inputResultSetNames;
+    char *sortedResultSetName;
+    Z_SortKeySpecList *sortSequence;
+    Z_OtherInformation *otherInfo;          /* OPTIONAL */
+} Z_SortRequest;
+
+/* ----------------------- Resource Report ------------------ */
+
+typedef struct Z_ResourceReportRequest
+{
+    Z_ReferenceId *referenceId;             /* OPTIONAL */
+    Z_ReferenceId *opId;                    /* OPTIONAL */
+    Odr_oid *prefResourceReportFormat;      /* OPTIONAL */
+    Z_OtherInformation *otherInfo;          /* OPTIONAL */
+} Z_ResourceReportRequest;
+
+typedef struct Z_ResourceReportResponse
+{
+    Z_ReferenceId *referenceId;             /* OPTIONAL */
+    int *resourceReportStatus;
+#define Z_ResourceReportStatus_success   0
+#define Z_ResourceReportStatus_partial   1
+#define Z_ResourceReportStatus_failure_1 2
+#define Z_ResourceReportStatus_failure_2 3
+#define Z_ResourceReportStatus_failure_3 4
+#define Z_ResourceReportStatus_failure_4 5
+#define Z_ResourceReportStatus_failure_5 6
+#define Z_ResourceReportStatus_failure_6 7
+    Z_External *resourceReport;             /* OPTIONAL */
+    Z_OtherInformation *otherInfo;          /* OPTIONAL */
+} Z_ResourceReportResponse;
+
 /* ------------------------ APDU ---------------------------- */
 
 typedef struct Z_APDU
 {    
-    enum Z_APDU_which
-    {
-       Z_APDU_initRequest,
-       Z_APDU_initResponse,
-       Z_APDU_searchRequest,
-       Z_APDU_searchResponse,
-       Z_APDU_presentRequest,
-       Z_APDU_presentResponse,
-       Z_APDU_deleteResultSetRequest,
-       Z_APDU_deleteResultSetResponse,
-       Z_APDU_resourceControlRequest,
-       Z_APDU_resourceControlResponse,
-       Z_APDU_triggerResourceControlRequest,
-       Z_APDU_scanRequest,
-       Z_APDU_scanResponse,
-       Z_APDU_segmentRequest,
-       Z_APDU_extendedServicesRequest,
-       Z_APDU_extendedServicesResponse,
-       Z_APDU_close
-    } which;
+    int which;
+#define Z_APDU_initRequest 0
+#define Z_APDU_initResponse 1
+#define Z_APDU_searchRequest 2
+#define Z_APDU_searchResponse 3
+#define Z_APDU_presentRequest 4
+#define Z_APDU_presentResponse 5
+#define Z_APDU_deleteResultSetRequest 6
+#define Z_APDU_deleteResultSetResponse 7
+#define Z_APDU_resourceControlRequest 8
+#define Z_APDU_resourceControlResponse 9
+#define Z_APDU_triggerResourceControlRequest 10
+#define Z_APDU_scanRequest 11
+#define Z_APDU_scanResponse 12
+#define Z_APDU_segmentRequest 13
+#define Z_APDU_extendedServicesRequest 14
+#define Z_APDU_extendedServicesResponse 15
+#define Z_APDU_close 16
+#define Z_APDU_accessControlRequest 17
+#define Z_APDU_accessControlResponse 18
+#define Z_APDU_sortRequest 20
+#define Z_APDU_sortResponse 21
+#define Z_APDU_resourceReportRequest 22
+#define Z_APDU_resourceReportResponse 23
     union
     {
        Z_InitRequest  *initRequest;
@@ -1120,11 +1293,17 @@ typedef struct Z_APDU
        Z_PresentResponse *presentResponse;
        Z_DeleteResultSetRequest *deleteResultSetRequest;
        Z_DeleteResultSetResponse *deleteResultSetResponse;
+       Z_AccessControlRequest *accessControlRequest;
+       Z_AccessControlResponse *accessControlResponse;
        Z_ResourceControlRequest *resourceControlRequest;
        Z_ResourceControlResponse *resourceControlResponse;
        Z_TriggerResourceControlRequest *triggerResourceControlRequest;
+       Z_ResourceReportRequest *resourceReportRequest;
+       Z_ResourceReportResponse *resourceReportResponse;
        Z_ScanRequest *scanRequest;
        Z_ScanResponse *scanResponse;
+       Z_SortRequest *sortRequest;
+       Z_SortResponse *sortResponse;
        Z_Segment *segmentRequest;
        Z_ExtendedServicesRequest *extendedServicesRequest;
        Z_ExtendedServicesResponse *extendedServicesResponse;
@@ -1149,6 +1328,7 @@ Z_TriggerResourceControlRequest *zget_TriggerResourceControlRequest(ODR o);
 Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o);
 Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o);
 Z_Close *zget_Close(ODR o);
+int z_StringList(ODR o, Z_StringList **p, int opt);
 int z_InternationalString(ODR o, char **p, int opt);
 int z_OtherInformation(ODR o, Z_OtherInformation **p, int opt);
 int z_ElementSetName(ODR o, char **p, int opt);
@@ -1163,12 +1343,13 @@ int z_Permissions(ODR o, Z_Permissions **p, int opt);
 int z_DiagRec(ODR o, Z_DiagRec **p, int opt);
 int z_AttributeList(ODR o, Z_AttributeList **p, int opt);
 int z_DefaultDiagFormat(ODR o, Z_DefaultDiagFormat **p, int opt);
-Z_APDU *zget_APDU(ODR o, enum Z_APDU_which which);
+Z_APDU *zget_APDU(ODR o, int which);
 
 #include <prt-rsc.h>
 #include <prt-acc.h>
 #include <prt-exp.h>
 #include <prt-grs.h>
+#include <prt-arc.h>
 #include <prt-exd.h>
 #include <prt-dia.h>
 #include <prt-esp.h>