Deleting this, renamed to makefile (.nothing)
[yaz-moved-to-github.git] / include / proto.h
index cc4a107..901ec32 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, Index Data.
+ * Copyright (c) 1995-1999, Index Data.
  *
  * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation, in whole or in part, for any purpose, is hereby granted,
  * OF THIS SOFTWARE.
  *
  * $Log: proto.h,v $
- * Revision 1.25  1995-09-27 15:02:49  quinn
+ * Revision 1.47  1999-04-20 09:56:48  adam
+ * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
+ * Modified all encoders/decoders to reflect this change.
+ *
+ * Revision 1.46  1998/10/20 13:55:44  quinn
+ * Fixed Scan bug in asn and client
+ *
+ * Revision 1.45  1998/08/19 16:10:07  adam
+ * Changed som member names of DeleteResultSetRequest/Response.
+ *
+ * Revision 1.44  1998/05/18 10:14:08  adam
+ * Minor change - removed 'dead' definitions.
+ *
+ * Revision 1.43  1998/03/31 11:07:45  adam
+ * Furhter work on UNIverse resource report.
+ * Added Extended Services handling in frontend server.
+ *
+ * Revision 1.42  1998/03/20 14:46:06  adam
+ * Added UNIverse Resource Reports.
+ *
+ * Revision 1.41  1998/02/10 15:31:52  adam
+ * Implemented date and time structure. Changed the Update Extended
+ * Service.
+ *
+ * Revision 1.40  1997/09/01 08:49:50  adam
+ * New windows NT/95 port using MSV5.0. To export DLL functions the
+ * YAZ_EXPORT modifier was added. Defined in yconfig.h.
+ *
+ * Revision 1.39  1997/05/14 06:53:44  adam
+ * C++ support.
+ *
+ * Revision 1.38  1997/04/30 08:52:09  quinn
+ * Null
+ *
+ * Revision 1.37  1996/10/09  15:54:58  quinn
+ * Added SearchInfoReport
+ *
+ * Revision 1.36  1996/10/07  15:29:20  quinn
+ * Added SOIF support
+ *
+ * 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
+ * Smallish
+ *
+ * Revision 1.25  1995/09/27  15:02:49  quinn
  * Modified function heads & prototypes.
  *
  * Revision 1.24  1995/08/29  11:17:43  quinn
 #include <odr_use.h>
 #include <yaz-version.h>
 
-/*
- * Because we didn't have time to put all of the extra v3 elements in here
- * before the first applications were written, we have to place them
- * in #ifdefs in places where they would break existing code. If you are
- * developing new stuff, we urge you to leave them in, even if you don't
- * intend to use any v3 features. When we are comfortable that the old
- * apps have been updated, we'll remove the #ifdefs.
- */
-
-#define Z_95
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /* ----------------- GLOBAL AUXILIARY DEFS ----------------*/
 
@@ -171,13 +235,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; 
@@ -195,11 +257,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;
@@ -223,6 +283,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
@@ -234,13 +300,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;
@@ -281,10 +345,8 @@ typedef struct Z_InitRequest
     char *implementationId;                      /* OPTIONAL */
     char *implementationName;                    /* OPTIONAL */
     char *implementationVersion;                 /* OPTIONAL */
-    Z_External *userInformationField;          /* OPTIONAL */
-#ifdef Z_95
+    Z_External *userInformationField;            /* OPTIONAL */
     Z_OtherInformation *otherInfo;               /* OPTIONAL */
-#endif
 } Z_InitRequest;
 
 typedef struct Z_InitResponse
@@ -299,9 +361,7 @@ typedef struct Z_InitResponse
     char *implementationName;    /* OPTIONAL */
     char *implementationVersion; /* OPTIONAL */
     Z_External *userInformationField; /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;    /* OPTIONAL */
-#endif
 } Z_InitResponse;
 
 typedef struct Z_NSRAuthentication
@@ -311,9 +371,10 @@ typedef struct Z_NSRAuthentication
     char *account;
 } Z_NSRAuthentication;
 
-int MDF z_NSRAuthentication(ODR o, Z_NSRAuthentication **p, int opt);
+int z_NSRAuthentication(ODR o, Z_NSRAuthentication **p, int opt,
+                       const char *name);
 
-int MDF z_StrAuthentication(ODR o, char **p, int opt);
+int z_StrAuthentication(ODR o, char **p, int opt, const char *name);
 
 /* ------------------ SEARCH SERVICE ----------------*/
 
@@ -353,39 +414,29 @@ typedef struct Z_ComplexAttribute
 
 typedef struct Z_AttributeElement
 {
-#ifdef Z_95
     Odr_oid *attributeSet;           /* OPTIONAL - v3 only */
-#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;
        Z_ComplexAttribute *complex;
     } value;
-#else
-    int *attributeValue;
-#endif
 } 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 */
@@ -425,11 +476,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
@@ -446,13 +495,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. */
@@ -464,12 +511,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;
@@ -482,16 +527,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;
@@ -509,13 +552,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;
@@ -538,39 +578,31 @@ typedef struct Z_SearchRequest
     Z_ElementSetNames *mediumSetElementSetNames;    /* OPTIONAL */
     Odr_oid *preferredRecordSyntax;  /* OPTIONAL */
     Z_Query *query;
-#ifdef Z_95
     Z_OtherInformation *additionalSearchInfo;       /* OPTIONAL */
     Z_OtherInformation *otherInfo;                  /* OPTIONAL */
-#endif
 } Z_SearchRequest;
 
 /* ------------------------ RECORD -------------------------- */
 
 typedef Z_External Z_DatabaseRecord;
 
-#ifdef Z_95
-
 typedef struct Z_DefaultDiagFormat
 {
     Odr_oid *diagnosticSetId; /* This is opt'l to interwork with bad targets */
     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;
@@ -578,17 +610,6 @@ typedef struct Z_DiagRec
     } u;
 } Z_DiagRec;
 
-#else
-
-typedef struct Z_DiagRec
-{
-    Odr_oid *diagnosticSetId; /* This is opt'l to interwork with bad targets */
-    int *condition;
-    char *addinfo;
-} Z_DiagRec;
-
-#endif
-
 typedef struct Z_DiagRecs
 {
     int num_diagRecs;
@@ -598,12 +619,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;
@@ -619,12 +637,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;
@@ -654,21 +670,17 @@ typedef struct Z_SearchResponse
 #define Z_PRES_PARTIAL_4    4
 #define Z_PRES_FAILURE      5
     Z_Records *records;                  /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *additionalSearchInfo;
     Z_OtherInformation *otherInfo;
-#endif
 } Z_SearchResponse;
 
 /* ------------------------- PRESENT SERVICE -----------------*/
 
 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;
@@ -700,11 +712,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;
@@ -724,20 +734,14 @@ typedef struct Z_PresentRequest
     Z_ResultSetId *resultSetId;
     int *resultSetStartPoint;
     int *numberOfRecordsRequested;
-#ifdef Z_95
     int num_ranges;
     Z_Range **additionalRanges;              /* OPTIONAL */
     Z_RecordComposition *recordComposition;  /* OPTIONAL */
-#else
-    Z_ElementSetNames *elementSetNames;  /* OPTIONAL */
-#endif
     Odr_oid *preferredRecordSyntax;  /* OPTIONAL */
-#ifdef Z_95
     int *maxSegmentCount;                 /* OPTIONAL */
     int *maxRecordSize;                   /* OPTIONAL */
     int *maxSegmentSize;                  /* OPTIONAL */
     Z_OtherInformation *otherInfo;        /* OPTIONAL */
-#endif
 } Z_PresentRequest;
 
 typedef struct Z_PresentResponse
@@ -747,9 +751,7 @@ typedef struct Z_PresentResponse
     int *nextResultSetPosition;
     int *presentStatus;
     Z_Records *records;
-#ifdef Z_95
     Z_OtherInformation *otherInfo;     /* OPTIONAL */
-#endif
 } Z_PresentResponse;
 
 /* ------------------ RESOURCE CONTROL ----------------*/
@@ -763,9 +765,7 @@ typedef struct Z_TriggerResourceControlRequest
 #define Z_TriggerResourceCtrl_cancel          3
     Odr_oid *prefResourceReportFormat;  /* OPTIONAL */
     bool_t *resultSetWanted;            /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;
-#endif
 } Z_TriggerResourceControlRequest;
 
 typedef struct Z_ResourceControlRequest
@@ -779,9 +779,7 @@ typedef struct Z_ResourceControlRequest
 #define Z_ResourceControlRequest_none      3
     bool_t *responseRequired;
     bool_t *triggeredRequestFlag;  /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;
-#endif
 } Z_ResourceControlRequest;
 
 typedef struct Z_ResourceControlResponse
@@ -789,9 +787,7 @@ typedef struct Z_ResourceControlResponse
     Z_ReferenceId *referenceId;    /* OPTIONAL */
     bool_t *continueFlag;
     bool_t *resultSetWanted;       /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;
-#endif
 } Z_ResourceControlResponse;
 
 
@@ -800,38 +796,30 @@ 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;
        Z_External *externallyDefined;
     } u;
-#ifdef Z_95
     Z_OtherInformation *otherInfo;           /* OPTIONAL */
-#endif
 } 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;
        Z_External *externallyDefined;
     } u;
     Z_DiagRec *diagnostic;                   /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;           /* OPTIONAL */
-#endif
 } Z_AccessControlResponse;
 
 /* ------------------------ SCAN SERVICE -------------------- */
@@ -848,41 +836,61 @@ typedef struct Z_AlternativeTerm
     Z_AttributesPlusTerm **terms;
 } Z_AlternativeTerm;
 
-typedef struct Z_OccurrenceByAttributes
+typedef struct Z_ByDatabase
 {
-    Z_AttributeList *attributes;
-#if 0
-    enum
-    {
-       Z_OByAtt_global,
-       Z_ObyAtt_byDatabase
-    } which;
+    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
     {
-#endif
-       int *global;
-#if 0
-       /* Z_ByDatabase *byDatabase; */
+       int *global;
+       Z_ByDatabaseList *byDatabase;
     } u;
-#endif
+
+} 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;
 
 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;
@@ -890,6 +898,8 @@ typedef struct Z_Entry
     } u;
 } Z_Entry;
 
+#ifdef BUGGY_LISTENTRIES
+
 typedef struct Z_Entries
 {
     int num_entries;
@@ -898,11 +908,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;
@@ -910,6 +918,15 @@ typedef struct Z_ListEntries
     } u;
 } Z_ListEntries;
 
+#endif
+
+typedef struct Z_ListEntries {
+       int num_entries;
+       Z_Entry **entries; /* OPT */
+       int num_nonsurrogateDiagnostics;
+       Z_DiagRec **nonsurrogateDiagnostics; /* OPT */
+} Z_ListEntries;
+
 typedef struct Z_ScanRequest
 {
     Z_ReferenceId *referenceId;       /* OPTIONAL */
@@ -920,9 +937,7 @@ typedef struct Z_ScanRequest
     int *stepSize;                    /* OPTIONAL */
     int *numberOfTermsRequested;
     int *preferredPositionInResponse;   /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;
-#endif
 } Z_ScanRequest;
 
 typedef struct Z_ScanResponse
@@ -941,9 +956,7 @@ typedef struct Z_ScanResponse
     int *positionOfTerm;              /* OPTIONAL */
     Z_ListEntries *entries;           /* OPTIONAL */
     Odr_oid *attributeSet;            /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;
-#endif
 } Z_ScanResponse; 
 
 
@@ -973,26 +986,25 @@ typedef struct Z_DeleteResultSetRequest
     int *deleteFunction;
 #define Z_DeleteRequest_list    0
 #define Z_DeleteRequest_all     1
-    int num_ids;
+    int num_resultSetList;
     Z_ResultSetId **resultSetList;      /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;
-#endif
 } Z_DeleteResultSetRequest;
 
+typedef struct Z_ListStatuses {
+    int num;
+    Z_ListStatus **elements;
+} Z_ListStatuses;
+
 typedef struct Z_DeleteResultSetResponse
 {
     Z_ReferenceId *referenceId;        /* OPTIONAL */
     int *deleteOperationStatus;
-    int num_statuses;
-    Z_ListStatus *deleteListStatuses;  /* OPTIONAL */
+    Z_ListStatuses *deleteListStatuses;/* OPTIONAL */
     int *numberNotDeleted;             /* OPTIONAL */
-    int num_bulkStatuses;
-    Z_ListStatus *bulkStatuses;        /* OPTIONAL */
+    Z_ListStatuses *bulkStatuses;      /* OPTIONAL */
     char *deleteMessage;               /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;
-#endif
 } Z_DeleteResultSetResponse;
 
 /* ------------------------ CLOSE SERVICE ------------------- */
@@ -1014,9 +1026,7 @@ typedef struct Z_Close
     char *diagnosticInformation;          /* OPTIONAL */
     Odr_oid *resourceReportFormat;        /* OPTIONAL */
     Z_External *resourceReport;         /* OPTIONAL */
-#ifdef Z_95
     Z_OtherInformation *otherInfo;        /* OPTIONAL */
-#endif
 } Z_Close;
 
 /* ------------------------ SEGMENTATION -------------------- */
@@ -1080,30 +1090,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;
@@ -1114,11 +1259,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;
@@ -1126,46 +1277,68 @@ typedef struct Z_APDU
     } u;
 } Z_APDU;
 
-int MDF z_APDU(ODR o, Z_APDU **p, int opt);
-int MDF z_SUTRS(ODR o, Odr_oct **p, int opt);
-
-Z_InitRequest MDF *zget_InitRequest(ODR o);
-Z_InitResponse MDF *zget_InitResponse(ODR o);
-Z_SearchRequest MDF *zget_SearchRequest(ODR o);
-Z_SearchResponse MDF *zget_SearchResponse(ODR o);
-Z_PresentRequest MDF *zget_PresentRequest(ODR o);
-Z_PresentResponse MDF *zget_PresentResponse(ODR o);
-Z_DeleteResultSetRequest MDF *zget_DeleteResultSetRequest(ODR o);
-Z_DeleteResultSetResponse MDF *zget_DeleteResultSetResponse(ODR o);
-Z_ScanRequest MDF *zget_ScanRequest(ODR o);
-Z_ScanResponse MDF *zget_ScanResponse(ODR o);
-Z_TriggerResourceControlRequest MDF *zget_TriggerResourceControlRequest(ODR o);
-Z_ResourceControlRequest MDF *zget_ResourceControlRequest(ODR o);
-Z_ResourceControlResponse MDF *zget_ResourceControlResponse(ODR o);
-Z_Close MDF *zget_Close(ODR o);
-int MDF z_InternationalString(ODR o, char **p, int opt);
-int MDF z_OtherInformation(ODR o, Z_OtherInformation **p, int opt);
-int MDF z_ElementSetName(ODR o, char **p, int opt);
-int MDF z_IntUnit(ODR o, Z_IntUnit **p, int opt);
-int MDF z_Unit(ODR o, Z_Unit **p, int opt);
-int MDF z_DatabaseName(ODR o, Z_DatabaseName **p, int opt);
-int MDF z_StringOrNumeric(ODR o, Z_StringOrNumeric **p, int opt);
-int MDF z_OtherInformationUnit(ODR o, Z_OtherInformationUnit **p, int opt);
-int MDF z_Term(ODR o, Z_Term **p, int opt);
-int MDF z_Specification(ODR o, Z_Specification **p, int opt);
-int MDF z_Permissions(ODR o, Z_Permissions **p, int opt);
-int MDF z_DiagRec(ODR o, Z_DiagRec **p, int opt);
-int MDF z_AttributeList(ODR o, Z_AttributeList **p, int opt);
-int MDF z_DefaultDiagFormat(ODR o, Z_DefaultDiagFormat **p, int opt);
-Z_APDU MDF *zget_APDU(ODR o, enum Z_APDU_which which);
+YAZ_EXPORT int z_APDU(ODR o, Z_APDU **p, int opt, const char *name);
+YAZ_EXPORT int z_SUTRS(ODR o, Odr_oct **p, int opt, const char *name);
+
+YAZ_EXPORT Z_InitRequest *zget_InitRequest(ODR o);
+YAZ_EXPORT Z_InitResponse *zget_InitResponse(ODR o);
+YAZ_EXPORT Z_SearchRequest *zget_SearchRequest(ODR o);
+YAZ_EXPORT Z_SearchResponse *zget_SearchResponse(ODR o);
+YAZ_EXPORT Z_PresentRequest *zget_PresentRequest(ODR o);
+YAZ_EXPORT Z_PresentResponse *zget_PresentResponse(ODR o);
+YAZ_EXPORT Z_DeleteResultSetRequest *zget_DeleteResultSetRequest(ODR o);
+YAZ_EXPORT Z_DeleteResultSetResponse *zget_DeleteResultSetResponse(ODR o);
+YAZ_EXPORT Z_ScanRequest *zget_ScanRequest(ODR o);
+YAZ_EXPORT Z_ScanResponse *zget_ScanResponse(ODR o);
+YAZ_EXPORT Z_TriggerResourceControlRequest *zget_TriggerResourceControlRequest(ODR o);
+YAZ_EXPORT Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o);
+YAZ_EXPORT Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o);
+YAZ_EXPORT Z_Close *zget_Close(ODR o);
+YAZ_EXPORT int z_StringList(ODR o, Z_StringList **p, int opt,
+                           const char *name);
+YAZ_EXPORT int z_InternationalString(ODR o, char **p, int opt,
+                                    const char *name);
+YAZ_EXPORT int z_OtherInformation(ODR o, Z_OtherInformation **p, int opt,
+                                 const char *naem);
+YAZ_EXPORT int z_ElementSetName(ODR o, char **p, int opt, const char *name);
+YAZ_EXPORT int z_IntUnit(ODR o, Z_IntUnit **p, int opt, const char *name);
+YAZ_EXPORT int z_Unit(ODR o, Z_Unit **p, int opt, const char *name);
+YAZ_EXPORT int z_DatabaseName(ODR o, Z_DatabaseName **p, int opt,
+                             const char *name);
+YAZ_EXPORT int z_StringOrNumeric(ODR o, Z_StringOrNumeric **p, int opt,
+                                const char *name);
+YAZ_EXPORT int z_OtherInformationUnit(ODR o, Z_OtherInformationUnit **p,
+                                     int opt, const char *name);
+YAZ_EXPORT int z_Term(ODR o, Z_Term **p, int opt, const char *name);
+YAZ_EXPORT int z_Specification(ODR o, Z_Specification **p, int opt,
+                              const char *name);
+YAZ_EXPORT int z_Permissions(ODR o, Z_Permissions **p, int opt,
+                            const char *name);
+YAZ_EXPORT int z_DiagRec(ODR o, Z_DiagRec **p, int opt, const char *name);
+YAZ_EXPORT int z_DiagRecs(ODR o, Z_DiagRecs **p, int opt, const char *name);
+YAZ_EXPORT int z_AttributeList(ODR o, Z_AttributeList **p, int opt,
+                              const char *name);
+YAZ_EXPORT int z_DefaultDiagFormat(ODR o, Z_DefaultDiagFormat **p, int opt,
+                                  const char *name);
+YAZ_EXPORT Z_APDU *zget_APDU(ODR o, int which);
+YAZ_EXPORT int z_Query(ODR o, Z_Query **p, int opt, const char *name);
+
+#ifdef __cplusplus
+}
+#endif
 
 #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>
+#include <prt-add.h>
 
+#include <prt-dat.h>
+#include <prt-univ.h>
 #include <prt-ext.h>
 
 #endif