YAZ  5.34.0
prt-ext.h
Go to the documentation of this file.
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) Index Data.
3  * All rights reserved.
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of Index Data nor the names of its contributors
13  * may be used to endorse or promote products derived from this
14  * software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
33 /*
34  * Biased-choice External for Z39.50.
35  */
36 
37 #ifndef PRT_EXT_H
38 #define PRT_EXT_H
39 
40 #include <yaz/yconfig.h>
41 #include <yaz/oid_util.h>
42 
43 
45 
50 typedef struct Z_ext_typeent
51 {
52  Odr_oid oid[OID_SIZE]; /* the direct-reference OID */
53  int what; /* discriminator value for the external CHOICE */
54  Odr_fun fun; /* decoder function */
56 
58 struct Z_External
59 {
62  char *descriptor;
63  int which;
64 /* Generic types */
65 #define Z_External_single 0
66 #define Z_External_octet 1
67 #define Z_External_arbitrary 2
68 /* Specific types */
69 #define Z_External_sutrs 3
70 #define Z_External_explainRecord 4
71 #define Z_External_resourceReport1 5
72 #define Z_External_resourceReport2 6
73 #define Z_External_promptObject1 7
74 #define Z_External_grs1 8
75 #define Z_External_extendedService 9
76 #define Z_External_itemOrder 10
77 #define Z_External_diag1 11
78 #define Z_External_espec1 12
79 #define Z_External_summary 13
80 #define Z_External_OPAC 14
81 #define Z_External_searchResult1 15
82 #define Z_External_update 16
83 #define Z_External_dateTime 17
84 #define Z_External_universeReport 18
85 #define Z_External_ESAdmin 19
86 #define Z_External_update0 20
87 #define Z_External_userInfo1 21
88 #define Z_External_charSetandLanguageNegotiation 22
89 #define Z_External_acfPrompt1 23
90 #define Z_External_acfDes1 24
91 #define Z_External_acfKrb1 25
92 #define Z_External_multisrch2 26
93 #define Z_External_CQL 27
94 #define Z_External_OCLCUserInfo 28
95 #define Z_External_persistentResultSet 29
96 #define Z_External_persistentQuery 30
97 #define Z_External_periodicQuerySchedule 31
98 #define Z_External_exportSpecification 32
99 #define Z_External_exportInvocation 33
100 #define Z_External_userFacets 34
101  union
102  {
103  /* Generic types */
107 
108  /* Specific types */
111 
117 
123 
129 
135 
141 
147  } u;
148 };
149 
150 
152 YAZ_EXPORT int z_External(ODR o, Z_External **p, int opt, const char *name);
154 YAZ_EXPORT Z_ext_typeent *z_ext_getentbyref(const Odr_oid *oid);
156 YAZ_EXPORT Z_External *z_ext_record_oid(ODR o, const Odr_oid *oid,
157  const char *buf, int len);
159 YAZ_EXPORT Z_External *z_ext_record_oid_nmem(NMEM nmem, const Odr_oid *oid,
160  const char *buf, int len);
162 YAZ_EXPORT Z_External *z_ext_record_oid_any(ODR o, const Odr_oid *oid,
163  const char *buf, int len);
165 YAZ_EXPORT Z_External *z_ext_record_xml(ODR o, const char *buf, int len);
166 
168 YAZ_EXPORT Z_External *z_ext_record_sutrs(ODR o, const char *buf, int len);
169 
171 YAZ_EXPORT Z_External *z_ext_record_usmarc(ODR o, const char *buf, int len);
172 
174 
175 #endif
176 /*
177  * Local variables:
178  * c-basic-offset: 4
179  * c-file-style: "Stroustrup"
180  * indent-tabs-mode: nil
181  * End:
182  * vim: shiftwidth=4 tabstop=8 expandtab
183  */
184 
int opt
Definition: initopt.c:19
char * name
Definition: initopt.c:18
nmem_int_t Odr_int
Definition: odr.h:47
int(* Odr_fun)(ODR, char **, int, const char *)
Definition: odr.h:135
Header for OID basic functions.
short Odr_oid
Definition: oid_util.h:42
#define OID_SIZE
Definition: oid_util.h:39
struct Z_ext_typeent Z_ext_typeent
Z_ext_typeent * z_ext_getentbyref(const Odr_oid *oid)
returns type information for OID (NULL if not known)
Definition: prt-ext.c:66
Z_External * z_ext_record_sutrs(ODR o, const char *buf, int len)
encodes EXTERNAL SUTRS record
Definition: prt-ext.c:373
Z_External * z_ext_record_oid_nmem(NMEM nmem, const Odr_oid *oid, const char *buf, int len)
encodes EXTERNAL record based on OID (NULL if not known)
Definition: prt-ext.c:262
Z_External * z_ext_record_xml(ODR o, const char *buf, int len)
encodes EXTERNAL XML record
Definition: prt-ext.c:368
Z_External * z_ext_record_oid(ODR o, const Odr_oid *oid, const char *buf, int len)
encodes EXTERNAL record based on OID (NULL if not known)
Definition: prt-ext.c:338
int z_External(ODR o, Z_External **p, int opt, const char *name)
codec for BER EXTERNAL
Definition: prt-ext.c:95
Z_External * z_ext_record_usmarc(ODR o, const char *buf, int len)
encodes EXTERNAL USMARC/MARC21 record
Definition: prt-ext.c:378
Z_External * z_ext_record_oid_any(ODR o, const Odr_oid *oid, const char *buf, int len)
encodes EXTERNAL record as ANY
Definition: prt-ext.c:344
structure for all known EXTERNALs
Definition: prt-ext.h:59
Z_DateTime * dateTime
Definition: prt-ext.h:126
Z_BriefBib * summary
Definition: prt-ext.h:121
Z_CharSetandLanguageNegotiation * charNeg3
Definition: prt-ext.h:132
Z_ItemOrder * itemOrder
Definition: prt-ext.h:118
Z_EIExportInvocation * exportInvocation
Definition: prt-ext.h:145
Odr_int * indirect_reference
Definition: prt-ext.h:61
Z_DES_RN_Object * acfDes1
Definition: prt-ext.h:134
Z_IUUpdate * update
Definition: prt-ext.h:125
Z_DiagnosticFormat * diag1
Definition: prt-ext.h:119
Z_OPACRecord * opac
Definition: prt-ext.h:122
Z_ExplainRecord * explainRecord
Definition: prt-ext.h:110
Z_MultipleSearchTerms_2 * multipleSearchTerms_2
Definition: prt-ext.h:137
Z_TaskPackage * extendedService
Definition: prt-ext.h:116
Z_InternationalString * cql
Definition: prt-ext.h:138
int which
Definition: prt-ext.h:63
Z_GenericRecord * grs1
Definition: prt-ext.h:115
Z_Espec1 * espec1
Definition: prt-ext.h:120
union Z_External::@27 u
Z_UniverseReport * universeReport
Definition: prt-ext.h:127
Z_SUTRS * sutrs
Definition: prt-ext.h:109
Odr_oid * direct_reference
Definition: prt-ext.h:60
Z_ResourceReport1 * resourceReport1
Definition: prt-ext.h:112
Z_OtherInformation * userInfo1
Definition: prt-ext.h:131
Z_PRPersistentResultSet * persistentResultSet
Definition: prt-ext.h:140
Z_FacetList * facetList
Definition: prt-ext.h:146
Z_Admin * adminService
Definition: prt-ext.h:128
Z_ResourceReport2 * resourceReport2
Definition: prt-ext.h:113
Z_OCLC_UserInformation * oclc
Definition: prt-ext.h:139
Odr_any * single_ASN1_type
Definition: prt-ext.h:104
Z_PQueryPersistentQuery * persistentQuery
Definition: prt-ext.h:142
Odr_bitmask * arbitrary
Definition: prt-ext.h:106
Z_SearchInfoReport * searchResult1
Definition: prt-ext.h:124
Odr_oct * octet_aligned
Definition: prt-ext.h:105
Z_PromptObject1 * promptObject1
Definition: prt-ext.h:114
Z_IU0Update * update0
Definition: prt-ext.h:130
Z_ESExportSpecification * exportSpecification
Definition: prt-ext.h:144
char * descriptor
Definition: prt-ext.h:62
Z_KRBObject * acfKrb1
Definition: prt-ext.h:136
Z_PQSPeriodicQuerySchedule * periodicQuerySchedule
Definition: prt-ext.h:143
Z_PromptObject1 * acfPrompt1
Definition: prt-ext.h:133
Odr_fun fun
Definition: prt-ext.h:54
Odr_oid oid[OID_SIZE]
Definition: prt-ext.h:52
Definition: odr.h:100
Definition: odr.h:125
Header with fundamental macros.
#define YAZ_BEGIN_CDECL
Definition: yconfig.h:56
#define YAZ_END_CDECL
Definition: yconfig.h:57
char Z_InternationalString
Definition: z-core.h:301