2 * Copyright (c) 1998-2004, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-cql2rpn.cpp,v 1.8 2005-06-25 15:53:19 adam Exp $
9 #include <yaz/pquery.h>
10 #include <yaz++/cql2rpn.h>
12 using namespace yazpp_1;
14 Yaz_cql2rpn::Yaz_cql2rpn()
19 Yaz_cql2rpn::~Yaz_cql2rpn()
22 cql_transform_close(m_transform);
25 void Yaz_cql2rpn::set_pqf_file(const char *fname)
28 m_transform = cql_transform_open_fname(fname);
31 int Yaz_cql2rpn::query_transform(const char *cql_query,
32 Z_RPNQuery **rpnquery, ODR o,
35 const char *addinfo = 0;
38 CQL_parser cp = cql_parser_create();
40 int r = cql_parser_string(cp, cql_query);
43 yaz_log(YLOG_LOG, "CQL Parse Error");
49 r = cql_transform_buf(m_transform, cql_parser_result(cp),
50 rpn_buf, sizeof(rpn_buf)-1);
53 YAZ_PQF_Parser pp = yaz_pqf_create();
55 *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
60 int code = yaz_pqf_error(pp, &pqf_msg, &off);
61 yaz_log(YLOG_WARN, "PQF Parser Error %s (code %d)",
69 r = cql_transform_error(m_transform, &addinfo);
70 yaz_log(YLOG_LOG, "CQL Transform Error %d %s", r,
71 addinfo ? addinfo : "");
74 cql_parser_destroy(cp);
76 *addinfop = odr_strdup(o, addinfo);
84 * indent-tabs-mode: nil
86 * vim: shiftwidth=4 tabstop=8 expandtab