/usr/include/yaz
NameSizeModeActions
backend.h155650644editdlrm
backtrace.h21300644editdlrm
base64.h24510644editdlrm
ccl.h115340644editdlrm
ccl_xml.h27940644editdlrm
charneg.h38150644editdlrm
comstack.h72320644editdlrm
cookie.h23260644editdlrm
copy_types.h30850644editdlrm
cql.h151720644editdlrm
daemon.h36150644editdlrm
diagbib1.h103850644editdlrm
diagsru_update.h37520644editdlrm
diagsrw.h49900644editdlrm
dirent.h22340644editdlrm
errno.h22920644editdlrm
facet.h37160644editdlrm
file_glob.h32330644editdlrm
gettimeofday.h21260644editdlrm
icu.h77430644editdlrm
ill-core.h471340644editdlrm
ill.h24840644editdlrm
item-req.h19150644editdlrm
json.h68150644editdlrm
log.h85980644editdlrm
logrpn.h24940644editdlrm
marcdisp.h169120644editdlrm
matchstr.h36760644editdlrm
match_glob.h22480644editdlrm
mutex.h44630644editdlrm
nmem.h75940644editdlrm
nmem_xml.h21290644editdlrm
oclc-ill-req-ext.h16730644editdlrm
odr.h120950644editdlrm
oid_db.h63990644editdlrm
oid_std.h88260644editdlrm
oid_util.h33090644editdlrm
options.h31840644editdlrm
otherinfo.h24770644editdlrm
poll.h30860644editdlrm
pquery.h35870644editdlrm
proto.h84820644editdlrm
prt-ext.h63690644editdlrm
query-charset.h24360644editdlrm
querytowrbuf.h24930644editdlrm
readconf.h22610644editdlrm
record_conv.h55410644editdlrm
record_render.h26080644editdlrm
retrieval.h53630644editdlrm
rpn2cql.h39100644editdlrm
rpn2solr.h39400644editdlrm
sc.h34260644editdlrm
shptr.h31610644editdlrm
snprintf.h21770644editdlrm
soap.h34430644editdlrm
solr.h38510644editdlrm
sortspec.h44700644editdlrm
spipe.h27040644editdlrm
srw.h123240644editdlrm
statserv.h19400644editdlrm
stemmer.h24200644editdlrm
tcpip.h29070644editdlrm
test.h44260644editdlrm
thread_create.h27160644editdlrm
thread_id.h21800644editdlrm
timing.h32920644editdlrm
tokenizer.h27770644editdlrm
tpath.h41490644editdlrm
unix.h20870644editdlrm
url.h36890644editdlrm
wrbuf.h94840644editdlrm
xmalloc.h54230644editdlrm
xmlquery.h22940644editdlrm
xmltypes.h19490644editdlrm
xml_get.h20710644editdlrm
xml_include.h31330644editdlrm
yaz-ccl.h21640644editdlrm
yaz-iconv.h43770644editdlrm
yaz-util.h46190644editdlrm
yaz-version.h28950644editdlrm
yconfig.h23320644editdlrm
z-accdes1.h8570644editdlrm
z-accform1.h35910644editdlrm
z-acckrb1.h11300644editdlrm
z-charneg.h51250644editdlrm
z-core.h401750644editdlrm
z-date.h28400644editdlrm
z-diag1.h88980644editdlrm
z-espec1.h38650644editdlrm
z-estask.h10770644editdlrm
z-exp.h305960644editdlrm
z-facet-1.h9410644editdlrm
z-grs.h44790644editdlrm
z-mterm2.h8770644editdlrm
z-oclcui.h7920644editdlrm
z-opac.h29170644editdlrm
z-rrf1.h16870644editdlrm
z-rrf2.h8200644editdlrm
z-sum.h13520644editdlrm
z-sutrs.h6430644editdlrm
z-uifr1.h24800644editdlrm
z-univ.h12170644editdlrm
zes-admin.h30210644editdlrm
zes-expi.h30960644editdlrm
zes-exps.h27870644editdlrm
zes-order.h37010644editdlrm
zes-pquery.h23100644editdlrm
zes-psched.h35440644editdlrm
zes-pset.h20560644editdlrm
zes-update.h50530644editdlrm
zes-update0.h45520644editdlrm
zgdu.h49580644editdlrm
zoom.h183340644editdlrm
Edit: /usr/include/yaz/odr.h (12095B)
/* This file is part of the YAZ toolkit. * Copyright (C) Index Data. * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Index Data nor the names of its contributors * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** * \file odr.h * \brief Header for ODR (Open Data Representation) */ #ifndef ODR_H #define ODR_H #include #include #include #include /* for definition of Odr_oid */ #include YAZ_BEGIN_CDECL typedef nmem_int_t Odr_int; typedef nmem_bool_t Odr_bool; #define ODR_INT_PRINTF NMEM_INT_PRINTF #ifndef bool_t #define bool_t int #endif /* * Tag modes */ #define ODR_NONE -1 #define ODR_IMPLICIT 0 #define ODR_EXPLICIT 1 /* * Classes */ #define ODR_UNIVERSAL 0 #define ODR_APPLICATION 1 #define ODR_CONTEXT 2 #define ODR_PRIVATE 3 /* * UNIVERSAL tags */ #define ODR_BOOLEAN 1 #define ODR_INTEGER 2 #define ODR_BITSTRING 3 #define ODR_OCTETSTRING 4 #define ODR_NULL 5 #define ODR_OID 6 #define ODR_ODESC 7 #define ODR_EXTERNAL 8 #define ODR_REAL 9 #define ODR_ENUM 10 #define ODR_SEQUENCE 16 #define ODR_SET 17 #define ODR_NUMERICSTRING 18 #define ODR_PRINTABLESTRING 19 #define ODR_GENERALIZEDTIME 24 #define ODR_GRAPHICSTRING 25 #define ODR_VISIBLESTRING 26 #define ODR_GENERALSTRING 27 /* * odr stream directions */ #define ODR_DECODE 0 #define ODR_ENCODE 1 #define ODR_PRINT 2 typedef struct odr_oct { char *buf; int len; } Odr_oct; typedef void Odr_null; extern Odr_null *ODR_NULLVAL; typedef Odr_oct Odr_any; typedef struct odr_bitmask { #define ODR_BITMASK_SIZE 256 char bits[ODR_BITMASK_SIZE]; int top; } Odr_bitmask; #define ODR_S_SET 0 #define ODR_S_CUR 1 #define ODR_S_END 2 typedef struct odr *ODR; /** ODR handle and the public structs */ struct odr { int direction; /* the direction of this stream */ int error; /* current error state (0==OK) */ NMEM mem; /* memory handle for decoding (primarily) */ struct Odr_private *op; }; typedef int (*Odr_fun)(ODR, char **, int, const char *); typedef struct odr_arm { int tagmode; int zclass; int tag; int which; Odr_fun fun; char *name; } Odr_arm; /* * Error control. */ #define ONONE 0 #define OMEMORY 1 #define OSYSERR 2 #define OSPACE 3 #define OREQUIRED 4 #define OUNEXPECTED 5 #define OOTHER 6 #define OPROTO 7 #define ODATA 8 #define OSTACK 9 #define OCONLEN 10 #define OLENOV 11 #define OHTTP 12 extern char *odr_errlist[]; YAZ_EXPORT int odr_offset(ODR o); YAZ_EXPORT int odr_geterror(ODR o); YAZ_EXPORT int odr_geterrorx(ODR o, int *x); YAZ_EXPORT void odr_seterror(ODR o, int errorno, int errorid); YAZ_EXPORT void odr_setelement(ODR o, const char *addinfo); YAZ_EXPORT const char *odr_getelement(ODR o); YAZ_EXPORT void odr_perror(ODR o, const char *message); YAZ_EXPORT void odr_setprint(ODR o, FILE *file); YAZ_EXPORT void odr_setprint_noclose(ODR o, FILE *file); YAZ_EXPORT ODR odr_createmem(int direction); YAZ_EXPORT void odr_reset(ODR o); YAZ_EXPORT void odr_destroy(ODR o); YAZ_EXPORT void odr_setbuf(ODR o, char *buf, int len, int can_grow); YAZ_EXPORT char *odr_getbuf(ODR o, int *len, int *size); YAZ_EXPORT void *odr_malloc(ODR o, size_t size); YAZ_EXPORT char *odr_strdup(ODR o, const char *str); YAZ_EXPORT char *odr_strdupn(ODR o, const char *str, size_t n); YAZ_EXPORT char *odr_strdup_null(ODR o, const char *str); YAZ_EXPORT Odr_int *odr_intdup(ODR o, Odr_int v); YAZ_EXPORT Odr_bool *odr_booldup(ODR o, Odr_bool v); YAZ_EXPORT Odr_oct *odr_create_Odr_oct(ODR o, const char *buf, int sz); YAZ_EXPORT NMEM odr_extract_mem(ODR o); YAZ_EXPORT Odr_null *odr_nullval(void); #define odr_release_mem(m) nmem_destroy(m) #define ODR_MEM NMEM #define odr_implicit_tag(o, t, p, cl, tg, opt, name)\ (odr_implicit_settag((o), cl, tg), t ((o), (p), (opt), name) ) #define odr_explicit_tag(o, t, p, cl, tg, opt, name)\ ((int) (odr_constructed_begin((o), (p), (cl), (tg), 0) ? \ t ((o), (p), (opt), name) &&\ odr_constructed_end(o) : odr_missing((o), opt, name))) #define ODR_MASK_ZERO(mask)\ ((void) (memset((mask)->bits, 0, ODR_BITMASK_SIZE),\ (mask)->top = -1)) #define ODR_MASK_SET(mask, num)\ (((mask)->bits[(num) >> 3] |= 0X80 >> ((num) & 0X07)),\ (void) ((mask)->top < (num) >> 3 ? ((mask)->top = (num) >> 3) : 0)) #define ODR_MASK_CLEAR(mask, num)\ ((mask)->bits[(num) >> 3] &= ~(0X80 >> ((num) & 0X07))) #define ODR_MASK_GET(mask, num) ( ((num) >> 3 <= (mask)->top) ? \ ((mask)->bits[(num) >> 3] & (0X80 >> ((num) & 0X07)) ? 1 : 0) : 0) #define odr_ok(o) (!(o)->error) #define odr_getmem(o) ((o)->mem) #define ODR_MAXNAME 256 YAZ_EXPORT int ber_boolean(ODR o, int *val); YAZ_EXPORT int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, const char *name); YAZ_EXPORT int ber_enctag(ODR o, int zclass, int tag, int constructed); YAZ_EXPORT int ber_dectag(const char *buf, int *zclass, int *tag, int *constructed, int max); YAZ_EXPORT int odr_bool(ODR o, Odr_bool **p, int opt, const char *name); YAZ_EXPORT int odr_integer(ODR o, Odr_int **p, int opt, const char *name); YAZ_EXPORT int odr_enum(ODR o, Odr_int **p, int opt, const char *name); YAZ_EXPORT int odr_implicit_settag(ODR o, int zclass, int tag); YAZ_EXPORT int ber_enclen(ODR o, int len, int lenlen, int exact); YAZ_EXPORT int ber_declen(const char *buf, int *len, int max); YAZ_EXPORT void odr_prname(ODR o, const char *name); YAZ_EXPORT int ber_null(ODR o); YAZ_EXPORT int odr_null(ODR o, Odr_null **p, int opt, const char *name); YAZ_EXPORT int ber_integer(ODR o, Odr_int *val); YAZ_EXPORT int odr_constructed_begin(ODR o, void *p, int zclass, int tag, const char *name); YAZ_EXPORT int odr_constructed_end(ODR o); YAZ_EXPORT int odr_sequence_begin(ODR o, void *p, int size, const char *name); YAZ_EXPORT int odr_set_begin(ODR o, void *p, int size, const char *name); YAZ_EXPORT int odr_sequence_end(ODR o); YAZ_EXPORT int odr_set_end(ODR o); YAZ_EXPORT int ber_octetstring(ODR o, Odr_oct *p, int cons); YAZ_EXPORT int odr_octetstring(ODR o, Odr_oct **p, int opt, const char *name); YAZ_EXPORT int odp_more_chunks(ODR o, const char *base, int len); YAZ_EXPORT int odr_constructed_more(ODR o); YAZ_EXPORT int odr_bitstring(ODR o, Odr_bitmask **p, int opt, const char *name); YAZ_EXPORT int ber_bitstring(ODR o, Odr_bitmask *p, int cons); YAZ_EXPORT int odr_generalstring(ODR o, char **p, int opt, const char *name); YAZ_EXPORT int ber_oidc(ODR o, Odr_oid *p, int max_oid_size); YAZ_EXPORT int odr_oid(ODR o, Odr_oid **p, int opt, const char *name); YAZ_EXPORT int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp, const char *name); YAZ_EXPORT int odr_cstring(ODR o, char **p, int opt, const char *name); YAZ_EXPORT int odr_iconv_string(ODR o, char **p, int opt, const char *name); YAZ_EXPORT int odr_sequence_of(ODR o, Odr_fun type, void *p, int *num, const char *name); YAZ_EXPORT int odr_set_of(ODR o, Odr_fun type, void *p, int *num, const char *name); YAZ_EXPORT int odr_any(ODR o, Odr_any **p, int opt, const char *name); YAZ_EXPORT int ber_any(ODR o, Odr_any **p); /** \brief determine whether a buffer is a complete BER buffer \param buf BER buffer \param len length of buffer \retval 0 package is incomplete \retval >0 package is complete and length is return value */ YAZ_EXPORT int completeBER(const char *buf, int len); YAZ_EXPORT void odr_begin(ODR o); YAZ_EXPORT void odr_end(ODR o); YAZ_EXPORT Odr_oid *odr_oiddup(ODR odr, const Odr_oid *o); YAZ_EXPORT Odr_oid *odr_oiddup_nmem(NMEM nmem, const Odr_oid *o); YAZ_EXPORT int odr_grow_block(ODR b, int min_bytes); YAZ_EXPORT int odr_write(ODR o, const char *buf, int bytes); YAZ_EXPORT int odr_seek(ODR o, int whence, int offset); YAZ_EXPORT int odr_dumpBER(FILE *f, const char *buf, int len); YAZ_EXPORT void odr_choice_bias(ODR o, int what); YAZ_EXPORT void odr_choice_enable_bias(ODR o, int mode); YAZ_EXPORT size_t odr_total(ODR o); YAZ_EXPORT char *odr_errmsg(int n); YAZ_EXPORT Odr_oid *odr_getoidbystr(ODR o, const char *str); YAZ_EXPORT Odr_oid *odr_getoidbystr_nmem(NMEM o, const char *str); YAZ_EXPORT int odr_initmember(ODR o, void *p, int size); YAZ_EXPORT int odr_peektag(ODR o, int *zclass, int *tag, int *cons); YAZ_EXPORT void odr_setlenlen(ODR o, int len); YAZ_EXPORT int odr_missing(ODR o, int opt, const char *name); YAZ_EXPORT char *odr_prepend(ODR o, const char *prefix, const char *old); typedef struct Odr_external { Odr_oid *direct_reference; /* OPTIONAL */ Odr_int *indirect_reference; /* OPTIONAL */ char *descriptor; /* OPTIONAL */ int which; #define ODR_EXTERNAL_single 0 #define ODR_EXTERNAL_octet 1 #define ODR_EXTERNAL_arbitrary 2 union { Odr_any *single_ASN1_type; Odr_oct *octet_aligned; Odr_bitmask *arbitrary; /* we aren't really equipped for this*/ } u; } Odr_external; YAZ_EXPORT int odr_external(ODR o, Odr_external **p, int opt, const char *name); YAZ_EXPORT int odr_visiblestring(ODR o, char **p, int opt, const char *name); YAZ_EXPORT int odr_graphicstring(ODR o, char **p, int opt, const char *name); YAZ_EXPORT int odr_generalizedtime(ODR o, char **p, int opt, const char *name); YAZ_EXPORT int odr_set_charset(ODR o, const char *to, const char *from); YAZ_EXPORT void odr_set_stream(ODR o, void *handle, void (*stream_write)(ODR o, void *handle, int type, const char *buf, int len), void (*stream_close)(void *handle)); YAZ_EXPORT void odr_printf(ODR o, const char *fmt, ...); YAZ_EXPORT const char **odr_get_element_path(ODR o); YAZ_EXPORT Odr_int odr_atoi(const char *s); YAZ_EXPORT Odr_int odr_strtol(const char *nptr, char **endptr, int base); YAZ_END_CDECL #include #endif /* * Local variables: * c-basic-offset: 4 * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */