X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=doc%2Ftools.xml;h=f995950450b1dfce108091299eb67f7ecc1b17fd;hb=bd7e251dac1b07c54884d26295f66b90cfb23131;hp=4d47a1b3bf15f205859e154c9afbfafc9e59c1be;hpb=3227202c561b3189378cba8318c7610aeae1421a;p=yaz-moved-to-github.git diff --git a/doc/tools.xml b/doc/tools.xml index 4d47a1b..f995950 100644 --- a/doc/tools.xml +++ b/doc/tools.xml @@ -1,13 +1,13 @@ - - Supporting Tools - + + Supporting Tools + In support of the service API - primarily the ASN module, which - provides the programmatic interface to the Z39.50 APDUs, YAZ contains + provides the pro-grammatic interface to the Z39.50 APDUs, &yaz; contains a collection of tools that support the development of applications. - Query Syntax Parsers + Query Syntax Parsers Since the type-1 (RPN) query structure has no direct, useful string @@ -51,9 +51,8 @@ int p_query_attset (const char *arg); to provide a memory source (the structure created is released on the next call to odr_reset() on the stream), a protocol identifier (one of the constants PROTO_Z3950 and - PROTO_SR), an attribute set - reference, and finally a null-terminated string holding the query - string. + PROTO_SR), an attribute set reference, and + finally a null-terminated string holding the query string. If the parse went well, p_query_rpn() returns a @@ -74,17 +73,17 @@ int p_query_attset (const char *arg); - Query ::= [ AttSet ] QueryStruct. + Query ::= [ '@attrset' AttSet ] QueryStruct. AttSet ::= string. - QueryStruct ::= { Attribute } Simple | Complex. + QueryStruct ::= [ Attribute ] Simple | Complex. - Attribute ::= '@attr' AttributeType '=' AttributeValue. + Attribute ::= '@attr' [ AttSet ] AttributeType '=' AttributeValue. AttributeType ::= integer. - AttributeValue ::= integer. + AttributeValue ::= integer || string. Complex ::= Operator QueryStruct QueryStruct. @@ -139,6 +138,8 @@ int p_query_attset (const char *arg); @attr 4=1 @attr 1=4 "self portrait" @prox 0 3 1 2 k 2 dylan zimmerman + + @and @attr 2=4 @attr gils 1=2038 -114 @attr 2=2 @attr gils 1=2039 -109 @@ -155,14 +156,15 @@ int p_query_attset (const char *arg); - The EUROPAGATE research project working under the Libraries programme + The EUROPAGATE + research project working under the Libraries programme of the European Commission's DG XIII has, amongst other useful tools, implemented a general-purpose CCL parser which produces an output structure that can be trivially converted to the internal RPN - representation of YAZ (The Z_RPNQuery structure). + representation of &yaz; (The Z_RPNQuery structure). Since the CCL utility - along with the rest of the software - produced by EUROPAGATE - is made freely available on a liberal license, it - is included as a supplement to YAZ. + produced by EUROPAGATE - is made freely available on a liberal + license, it is included as a supplement to &yaz;. CCL Syntax @@ -252,7 +254,7 @@ int p_query_attset (const char *arg); index, such as title (ti) and author indexes (au). The CCL standard itself doesn't specify a particular set of qualifiers, but it does suggest a few short-hand notations. You can customize the CCL parser - to support a particular set of qualifiers to relect the current target + to support a particular set of qualifiers to reflect the current target profile. Traditionally, a qualifier would map to a particular use-attribute within the BIB-1 attribute set. However, you could also define qualifiers that would set, for example, the @@ -347,14 +349,14 @@ struct ccl_rpn_node *ccl_find_str (CCL_bibset bibset, const char *str, which takes the CCL profile (bibset) and query (str) as input. Upon successful completion the RPN - tree is returned. If an error eccur, such as a syntax error, the integer + tree is returned. If an error occur, such as a syntax error, the integer pointed to by error holds the error code and pos holds the offset inside query string in which the parsing failed. - An english representation of the error may be obtained by calling + An English representation of the error may be obtained by calling the ccl_err_msg function. The error codes are listed in ccl.h. @@ -385,7 +387,7 @@ struct ccl_rpn_node *ccl_find_str (CCL_bibset bibset, const char *str, - Object Identifiers + Object Identifiers The basic YAZ representation of an OID is an array of integers, @@ -631,7 +633,7 @@ typedef struct oident - Nibble Memory + Nibble Memory Sometimes when you need to allocate and construct a large, @@ -659,6 +661,7 @@ typedef struct oident void nmem_reset(NMEM n); int nmem_total(NMEM n); void nmem_init(void); + void nmem_exit(void); @@ -674,19 +677,22 @@ typedef struct oident allocated on the handle. - - - The nibble memory pool is shared amonst threads. POSIX - mutex'es and WIN32 Critical sections are introduced to keep the - module thread safe. On WIN32 function nmem_init() - initialises the Critical Section handle and should be called once - before any other nmem function is used. - - + + The nibble memory pool is shared amongst threads. POSIX + mutex'es and WIN32 Critical sections are introduced to keep the + module thread safe. Function nmem_init() + initializes the nibble memory library and it is called automatically + the first time the YAZ.DLL is loaded. &yaz; uses + function DllMain to achieve this. You should + not call nmem_init or + nmem_exit unless you're absolute sure what + you're doing. Note that in previous &yaz; versions you'd have to call + nmem_init yourself. + - +