X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fprt-ext.h;h=7ae8da27e26c13bd1e34af8d7ef76a3f372ab895;hp=a04b2e3a1d69f810f5db76f1ea927f7882328609;hb=cb182c3eb21ca4405d0c9f928ceb33f3fd2f95ba;hpb=e02b5659eaac4f86f7bf97779a5f0dcf9f6bf86a diff --git a/include/prt-ext.h b/include/prt-ext.h index a04b2e3..7ae8da2 100644 --- a/include/prt-ext.h +++ b/include/prt-ext.h @@ -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, @@ -29,22 +29,55 @@ * Biased-choice External for Z39.50. */ +#ifndef PRT_EXT_H +#define PRT_EXT_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Used to keep track of known External definitions (a loose approach + * to DEFINED_BY). + */ + +typedef struct Z_ext_typeent +{ + oid_value dref; /* the direct-reference OID value. */ + int what; /* discriminator value for the external CHOICE */ + Odr_fun fun; /* decoder function */ +} Z_ext_typeent; + struct Z_External { Odr_oid *direct_reference; int *indirect_reference; char *descriptor; - enum - { - /* Generic types */ - Z_External_single = 0, - Z_External_octet, - Z_External_arbitrary, - - /* Specific types */ - Z_External_SUTRS, - Z_External_explainRecord - } which; + int which; +/* Generic types */ +#define Z_External_single 0 +#define Z_External_octet 1 +#define Z_External_arbitrary 2 +/* Specific types */ +#define Z_External_sutrs 3 +#define Z_External_explainRecord 4 +#define Z_External_resourceReport1 5 +#define Z_External_resourceReport2 6 +#define Z_External_promptObject1 7 +#define Z_External_grs1 8 +#define Z_External_extendedService 9 +#define Z_External_itemOrder 10 +#define Z_External_diag1 11 +#define Z_External_espec1 12 +#define Z_External_summary 13 +#define Z_External_OPAC 14 +#define Z_External_searchResult1 15 +#define Z_External_update 16 +#define Z_External_dateTime 17 +#define Z_External_universeReport 18 union { /* Generic types */ @@ -55,7 +88,29 @@ struct Z_External /* Specific types */ Z_SUTRS *sutrs; Z_ExplainRecord *explainRecord; + Z_ResourceReport1 *resourceReport1; + Z_ResourceReport2 *resourceReport2; + Z_PromptObject1 *promptObject1; + Z_GenericRecord *grs1; + Z_TaskPackage *extendedService; + Z_ItemOrder *itemOrder; + Z_DiagnosticFormat *diag1; + Z_Espec1 *espec1; + Z_BriefBib *summary; + Z_SearchInfoReport *searchResult1; + Z_IUUpdate *update; + Z_DateTime *dateTime; + Z_UniverseReport *universeReport; } u; }; -int z_External(ODR o, Z_External **p, int opt); +YAZ_EXPORT int z_External(ODR o, Z_External **p, int opt, const char *name); +YAZ_EXPORT Z_ext_typeent *z_ext_getentbyref(oid_value val); +YAZ_EXPORT Z_External *z_ext_record(ODR o, int format, const char *buf, + int len); + +#ifdef __cplusplus +} +#endif + +#endif