YAZ 5.38.1
pquery.c File Reference

Implements PQF parsing. More...

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <yaz/proto.h>
#include <yaz/oid_db.h>
#include <yaz/pquery.h>

Go to the source code of this file.

Data Structures

struct  yaz_pqf_parser

Functions

static Z_RPNStructure * rpn_structure (struct yaz_pqf_parser *li, ODR o, int num_attr, int max_attr, Odr_int *attr_list, char **attr_clist, Odr_oid **attr_set)
static Odr_oid * query_oid_getvalbyname (struct yaz_pqf_parser *li, ODR o)
static int compare_term (struct yaz_pqf_parser *li, const char *src, size_t off)
static int query_token (struct yaz_pqf_parser *li)
static int lex (struct yaz_pqf_parser *li)
static int escape_string (char *out_buf, const char *in, int len)
static int p_query_parse_attr (struct yaz_pqf_parser *li, ODR o, int num_attr, Odr_int *attr_list, char **attr_clist, Odr_oid **attr_set)
static Z_AttributeList * get_attributeList (ODR o, int num_attr, Odr_int *attr_list, char **attr_clist, Odr_oid **attr_set)
Z_AttributeList * zget_AttributeList_use_string (ODR o, const char *name)
 creates AttributeList with type=1(use) and string value
Z_Term * z_Term_create (ODR o, int term_type, const char *buf, size_t len)
static Z_AttributesPlusTerm * rpn_term_attributes (struct yaz_pqf_parser *li, ODR o, Z_AttributeList *attributes)
static Z_AttributesPlusTerm * rpn_term (struct yaz_pqf_parser *li, ODR o, int num_attr, Odr_int *attr_list, char **attr_clist, Odr_oid **attr_set)
static Z_Operand * rpn_simple (struct yaz_pqf_parser *li, ODR o, int num_attr, Odr_int *attr_list, char **attr_clist, Odr_oid **attr_set)
static Z_ProximityOperator * rpn_proximity (struct yaz_pqf_parser *li, ODR o)
static Z_Complex * rpn_complex (struct yaz_pqf_parser *li, ODR o, int num_attr, int max_attr, Odr_int *attr_list, char **attr_clist, Odr_oid **attr_set)
static void rpn_term_type (struct yaz_pqf_parser *li)
static Z_RPNQuery * p_query_rpn_mk (ODR o, struct yaz_pqf_parser *li)
static void pqf_parser_begin (struct yaz_pqf_parser *li, const char *buf)
Z_RPNQuery * p_query_rpn (ODR o, const char *qbuf)
static Z_AttributeList * p_query_scan_attributes_mk (struct yaz_pqf_parser *li, ODR o, Odr_oid **attributeSetP)
static Z_AttributesPlusTerm * p_query_scan_mk (struct yaz_pqf_parser *li, ODR o, Odr_oid **attributeSetP)
YAZ_PQF_Parser yaz_pqf_create (void)
void yaz_pqf_destroy (YAZ_PQF_Parser p)
Z_RPNQuery * yaz_pqf_parse (YAZ_PQF_Parser p, ODR o, const char *qbuf)
Z_AttributesPlusTerm * yaz_pqf_scan (YAZ_PQF_Parser p, ODR o, Odr_oid **attributeSetP, const char *qbuf)
Z_AttributeList * yaz_pqf_scan_attribute_list (YAZ_PQF_Parser p, ODR o, Odr_oid **attributeSetP, const char *qbuf)
static Z_FacetField * parse_facet (ODR odr, const char *facet)
Z_FacetList * yaz_pqf_parse_facet_list (ODR o, const char *qbuf)
int yaz_pqf_error (YAZ_PQF_Parser p, const char **msg, size_t *off)

Detailed Description

Implements PQF parsing.

Definition in file pquery.c.

Function Documentation

◆ compare_term()

int compare_term ( struct yaz_pqf_parser * li,
const char * src,
size_t off )
static

Definition at line 51 of file pquery.c.

References compare_term(), yaz_pqf_parser::lex_buf, and yaz_pqf_parser::lex_len.

Referenced by compare_term(), query_token(), and rpn_term_type().

◆ escape_string()

int escape_string ( char * out_buf,
const char * in,
int len )
static

Definition at line 125 of file pquery.c.

References escape_string().

Referenced by escape_string(), p_query_parse_attr(), parse_facet(), and rpn_term_attributes().

◆ get_attributeList()

◆ lex()

◆ p_query_parse_attr()

◆ p_query_rpn()

◆ p_query_rpn_mk()

◆ p_query_scan_attributes_mk()

◆ p_query_scan_mk()

◆ parse_facet()

◆ pqf_parser_begin()

void pqf_parser_begin ( struct yaz_pqf_parser * li,
const char * buf )
static

◆ query_oid_getvalbyname()

◆ query_token()

◆ rpn_complex()

◆ rpn_proximity()

◆ rpn_simple()

◆ rpn_structure()

◆ rpn_term()

Z_AttributesPlusTerm * rpn_term ( struct yaz_pqf_parser * li,
ODR o,
int num_attr,
Odr_int * attr_list,
char ** attr_clist,
Odr_oid ** attr_set )
static

Definition at line 370 of file pquery.c.

References get_attributeList(), rpn_term(), and rpn_term_attributes().

Referenced by rpn_simple(), and rpn_term().

◆ rpn_term_attributes()

◆ rpn_term_type()

◆ yaz_pqf_create()

◆ yaz_pqf_destroy()

void yaz_pqf_destroy ( YAZ_PQF_Parser p)

◆ yaz_pqf_error()

◆ yaz_pqf_parse()

Z_RPNQuery * yaz_pqf_parse ( YAZ_PQF_Parser p,
ODR o,
const char * qbuf )

Definition at line 816 of file pquery.c.

References p_query_rpn_mk(), pqf_parser_begin(), and yaz_pqf_parse().

Referenced by ccl_rpn_query(), cql2pqf(), srw_bend_search(), and yaz_pqf_parse().

◆ yaz_pqf_parse_facet_list()

◆ yaz_pqf_scan()

Z_AttributesPlusTerm * yaz_pqf_scan ( YAZ_PQF_Parser p,
ODR o,
Odr_oid ** attributeSetP,
const char * qbuf )

Definition at line 824 of file pquery.c.

References p_query_scan_mk(), pqf_parser_begin(), and yaz_pqf_scan().

Referenced by ccl_scan_query(), srw_bend_scan(), and yaz_pqf_scan().

◆ yaz_pqf_scan_attribute_list()

Z_AttributeList * yaz_pqf_scan_attribute_list ( YAZ_PQF_Parser p,
ODR o,
Odr_oid ** attributeSetP,
const char * qbuf )

◆ z_Term_create()

◆ zget_AttributeList_use_string()

Z_AttributeList * zget_AttributeList_use_string ( ODR o,
const char * name )

creates AttributeList with type=1(use) and string value

Parameters
oODR for encoding
nameuse-value
Returns
attribute list with only one use-attribute

Definition at line 310 of file pquery.c.

References get_attributeList(), odr_strdup(), and zget_AttributeList_use_string().

Referenced by yaz_solr_decode_facet_field(), yaz_sru_facet_response(), yaz_sru_proxy_decode_facet_field(), and zget_AttributeList_use_string().