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 28 /** 29 * \file pquery.h 30 * \brief Header for PQF parsing 31 */ 32 33 #ifndef PQUERY_H 34 #define PQUERY_H 35 36 #include <yaz/yconfig.h> 37 #include <yaz/proto.h> 38 39 YAZ_BEGIN_CDECL 40 41 typedef struct yaz_pqf_parser *YAZ_PQF_Parser; 42 43 YAZ_EXPORT Z_RPNQuery *p_query_rpn(ODR o, const char *qbuf); 44 45 YAZ_EXPORT YAZ_PQF_Parser yaz_pqf_create(void); 46 YAZ_EXPORT Z_RPNQuery *yaz_pqf_parse(YAZ_PQF_Parser p, ODR o, 47 const char *qbuf); 48 YAZ_EXPORT Z_AttributesPlusTerm *yaz_pqf_scan(YAZ_PQF_Parser p, ODR o, 49 Odr_oid **attributeSetId, 50 const char *qbuf); 51 52 YAZ_EXPORT Z_AttributeList *yaz_pqf_scan_attribute_list(YAZ_PQF_Parser p, ODR o, 53 Odr_oid **attributeSetId, 54 const char *qbuf); 55 56 YAZ_EXPORT 57 Z_FacetList *yaz_pqf_parse_facet_list(ODR odr, const char *args ); 58 59 YAZ_EXPORT void yaz_pqf_destroy(YAZ_PQF_Parser p); 60 61 YAZ_EXPORT int yaz_pqf_error(YAZ_PQF_Parser p, const char **msg, size_t *off); 62 63 YAZ_EXPORT 64 Z_Term *z_Term_create(ODR o, int term_type, const char *buf, size_t len); 65 66 67 /* no error */ 68 #define YAZ_PQF_ERROR_NONE 0 69 70 /* extra token (end of query expected) */ 71 #define YAZ_PQF_ERROR_EXTRA 1 72 73 /* missing token (at least one token expected) */ 74 #define YAZ_PQF_ERROR_MISSING 2 75 76 /* bad attribute set (for @attr and @attrset) */ 77 #define YAZ_PQF_ERROR_ATTSET 3 78 79 /* too many items (limit reached - too many attributes, etc) */ 80 #define YAZ_PQF_ERROR_TOOMANY 4 81 82 /* bad format of attribute (missing =) */ 83 #define YAZ_PQF_ERROR_BADATTR 5 84 85 /* internal failure */ 86 #define YAZ_PQF_ERROR_INTERNAL 6 87 88 /* bad proximity args */ 89 #define YAZ_PQF_ERROR_PROXIMITY 7 90 91 /* bad unsigned integer */ 92 #define YAZ_PQF_ERROR_BAD_INTEGER 8 93 94 YAZ_END_CDECL 95 96 #endif 97 /* 98 * Local variables: 99 * c-basic-offset: 4 100 * c-file-style: "Stroustrup" 101 * indent-tabs-mode: nil 102 * End: 103 * vim: shiftwidth=4 tabstop=8 expandtab 104 */ 105 106