/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data
+ * Copyright (C) 1995-2010 Index Data
* See the file LICENSE for details.
*/
/**
static Z_RPNStructure *rpn_structure(struct yaz_pqf_parser *li, ODR o,
int num_attr, int max_attr,
- int *attr_list, char **attr_clist,
+ 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 p_query_parse_attr(struct yaz_pqf_parser *li, ODR o,
- int num_attr, int *attr_list,
+ int num_attr, Odr_int *attr_list,
char **attr_clist, Odr_oid **attr_set)
{
const char *cp;
}
static Z_AttributesPlusTerm *rpn_term(struct yaz_pqf_parser *li, ODR o,
- int num_attr, int *attr_list,
+ int num_attr, Odr_int *attr_list,
char **attr_clist, Odr_oid **attr_set)
{
Z_AttributesPlusTerm *zapt;
else
{
int i, k = 0;
- int *attr_tmp;
+ Odr_int *attr_tmp;
elements = (Z_AttributeElement**)
odr_malloc (o, num_attr * sizeof(*elements));
- attr_tmp = (int *)odr_malloc (o, num_attr * 2 * sizeof(int));
- memcpy (attr_tmp, attr_list, num_attr * 2 * sizeof(int));
+ attr_tmp = (Odr_int *)odr_malloc(o, num_attr * 2 * sizeof(*attr_tmp));
+ memcpy(attr_tmp, attr_list, num_attr * 2 * sizeof(*attr_tmp));
for (i = num_attr; --i >= 0; )
{
int j;
}
static Z_Operand *rpn_simple(struct yaz_pqf_parser *li, ODR o,
- int num_attr, int *attr_list, char **attr_clist,
+ int num_attr, Odr_int *attr_list,
+ char **attr_clist,
Odr_oid **attr_set)
{
Z_Operand *zo;
return NULL;
}
if (*li->lex_buf == '1')
- p->exclusion = odr_intdup (o, 1);
+ p->exclusion = odr_booldup(o, 1);
else if (*li->lex_buf == '0')
- p->exclusion = odr_intdup (o, 0);
+ p->exclusion = odr_booldup(o, 0);
else if (*li->lex_buf == 'v' || *li->lex_buf == 'n')
p->exclusion = NULL;
else
return NULL;
}
if (*li->lex_buf == '1')
- p->ordered = odr_intdup (o, 1);
+ p->ordered = odr_booldup(o, 1);
else if (*li->lex_buf == '0')
- p->ordered = odr_intdup (o, 0);
+ p->ordered = odr_booldup(o, 0);
else
{
li->error = YAZ_PQF_ERROR_PROXIMITY;
static Z_Complex *rpn_complex(struct yaz_pqf_parser *li, ODR o,
int num_attr, int max_attr,
- int *attr_list, char **attr_clist,
+ Odr_int *attr_list, char **attr_clist,
Odr_oid **attr_set)
{
Z_Complex *zc;
return zc;
}
-static void rpn_term_type(struct yaz_pqf_parser *li, ODR o)
+static void rpn_term_type(struct yaz_pqf_parser *li)
{
if (!li->query_look)
return ;
static Z_RPNStructure *rpn_structure(struct yaz_pqf_parser *li, ODR o,
int num_attr, int max_attr,
- int *attr_list,
+ Odr_int *attr_list,
char **attr_clist,
Odr_oid **attr_set)
{
attr_clist, attr_set);
case 'y':
lex (li);
- rpn_term_type (li, o);
+ rpn_term_type(li);
return
rpn_structure (li, o, num_attr, max_attr, attr_list,
attr_clist, attr_set);
return sz;
}
-Z_RPNQuery *p_query_rpn_mk(ODR o, struct yaz_pqf_parser *li, const char *qbuf)
+static Z_RPNQuery *p_query_rpn_mk(ODR o, struct yaz_pqf_parser *li)
{
Z_RPNQuery *zq;
- int attr_array[1024];
+ Odr_int attr_array[1024];
char *attr_clist[512];
Odr_oid *attr_set[512];
Odr_oid *top_set = 0;
li.term_type = Z_Term_general;
li.query_buf = li.query_ptr = qbuf;
li.lex_buf = 0;
- return p_query_rpn_mk(o, &li, qbuf);
+ return p_query_rpn_mk(o, &li);
}
-Z_AttributesPlusTerm *p_query_scan_mk(struct yaz_pqf_parser *li,
- ODR o, oid_proto proto,
- Odr_oid **attributeSetP,
- const char *qbuf)
+static Z_AttributesPlusTerm *p_query_scan_mk(struct yaz_pqf_parser *li,
+ ODR o,
+ Odr_oid **attributeSetP)
{
- int attr_list[1024];
+ Odr_int attr_list[1024];
char *attr_clist[512];
Odr_oid *attr_set[512];
int num_attr = 0;
else if (li->query_look == 'y')
{
lex (li);
- rpn_term_type (li, o);
+ rpn_term_type(li);
}
else
break;
return apt;
}
-Z_AttributesPlusTerm *p_query_scan (ODR o, oid_proto proto,
- Odr_oid **attributeSetP,
- const char *qbuf)
-{
- struct yaz_pqf_parser li;
-
- li.error = 0;
- li.left_sep = "{\"";
- li.right_sep = "}\"";
- li.escape_char = '@';
- li.term_type = Z_Term_general;
- li.query_buf = li.query_ptr = qbuf;
- li.lex_buf = 0;
-
- return p_query_scan_mk (&li, o, proto, attributeSetP, qbuf);
-}
-
YAZ_PQF_Parser yaz_pqf_create (void)
{
YAZ_PQF_Parser p = (YAZ_PQF_Parser) xmalloc (sizeof(*p));
return 0;
p->query_buf = p->query_ptr = qbuf;
p->lex_buf = 0;
- return p_query_rpn_mk (o, p, qbuf);
+ return p_query_rpn_mk(o, p);
}
Z_AttributesPlusTerm *yaz_pqf_scan(YAZ_PQF_Parser p, ODR o,
return 0;
p->query_buf = p->query_ptr = qbuf;
p->lex_buf = 0;
- return p_query_scan_mk (p, o, PROTO_Z3950, attributeSetP, qbuf);
+ return p_query_scan_mk(p, o, attributeSetP);
}
int yaz_pqf_error (YAZ_PQF_Parser p, const char **msg, size_t *off)