* Copyright (c) 1998-2003, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-query.cpp,v 1.12 2003-10-01 13:13:51 adam Exp $
+ * $Id: yaz-z-query.cpp,v 1.15 2003-12-20 22:42:53 adam Exp $
*/
#include <yaz++/z-query.h>
int Yaz_Z_Query::set_rpn (const char *rpn)
{
- buf = 0;
+ m_buf = 0;
odr_reset (odr_encode);
Z_Query *query = (Z_Query*) odr_malloc (odr_encode, sizeof(*query));
query->which = Z_Query_type_1;
if (!z_Query (odr_encode, &query, 0, 0))
return -1;
// z_Query(odr_print, &query, 0, 0);
- buf = odr_getbuf (odr_encode, &len, 0);
- return len;
+ m_buf = odr_getbuf (odr_encode, &m_len, 0);
+ return m_len;
}
void Yaz_Z_Query::set_Z_Query(Z_Query *z_query)
{
- buf = 0;
+ m_buf = 0;
odr_reset (odr_encode);
if (!z_Query (odr_encode, &z_query, 0, 0))
return;
- buf = odr_getbuf (odr_encode, &len, 0);
+ m_buf = odr_getbuf (odr_encode, &m_len, 0);
}
Yaz_Z_Query::~Yaz_Z_Query()
Z_Query *Yaz_Z_Query::get_Z_Query ()
{
Z_Query *query;
- if (!buf)
+ if (!m_buf)
return 0;
odr_reset(odr_decode);
- odr_setbuf(odr_decode, buf, len, 0);
+ odr_setbuf(odr_decode, m_buf, m_len, 0);
if (!z_Query(odr_decode, &query, 0, 0))
return 0;
return query;
{
Z_Query *query;
*str = 0;
- if (!buf)
+ if (!m_buf)
return;
- odr_setbuf (odr_decode, buf, len, 0);
+ odr_setbuf (odr_decode, m_buf, m_len, 0);
if (!z_Query(odr_decode, &query, 0, 0))
return;
WRBUF wbuf = zquery2pquery(query);
}
else
strcpy(str, wrbuf_buf(wbuf));
+ wrbuf_free(wbuf,1);
}
odr_reset(odr_decode);
- wrbuf_free(wbuf,1);
}
int Yaz_Z_Query::match(Yaz_Z_Query *other)
{
- if (len != other->len)
+ if (m_len != other->m_len)
return 0;
- if (!buf || !other->buf)
+ if (!m_buf || !other->m_buf)
return 0;
- if (memcmp(buf, other->buf, len))
+ if (memcmp(m_buf, other->m_buf, m_len))
return 0;
return 1;
}
WRBUF Yaz_Z_Query::zquery2pquery(Z_Query *q)
{
- WRBUF buf = wrbuf_alloc();
-
if (q->which != Z_Query_type_1 && q->which != Z_Query_type_101)
return 0;
+ WRBUF buf = wrbuf_alloc();
if (q->u.type_1->attributeSetId) {
/* Output attribute set ID */
wrbuf_puts(buf, "@attrset ");