X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-z-query.cpp;h=8e2fb3cc4979b5034882fe991424fd2903b4751c;hb=b51e13a9b732fe2ca93044776d5e990dbf2a4c0e;hp=3fbd3e62897a4df5b355e0beabbbc6044cf4d558;hpb=c6e5ad789740135af3558298f6e2014ae99ee7dd;p=yazpp-moved-to-github.git diff --git a/src/yaz-z-query.cpp b/src/yaz-z-query.cpp index 3fbd3e6..8e2fb3c 100644 --- a/src/yaz-z-query.cpp +++ b/src/yaz-z-query.cpp @@ -1,24 +1,18 @@ /* - * Copyright (c) 1998-1999, Index Data. + * Copyright (c) 1998-2001, Index Data. * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss * - * $Log: yaz-z-query.cpp,v $ - * Revision 1.2 1999-04-09 11:46:57 adam - * Added object Yaz_Z_Assoc. Much more functional client. - * - * Revision 1.1 1999/03/23 14:17:57 adam - * More work on timeout handling. Work on yaz-client. - * + * $Id: yaz-z-query.cpp,v 1.11 2002-10-09 12:50:26 adam Exp $ */ -#include -#include +#include +#include Yaz_Z_Query::Yaz_Z_Query() { odr_encode = odr_createmem (ODR_ENCODE); odr_decode = odr_createmem (ODR_DECODE); + odr_print = odr_createmem (ODR_PRINT); } int Yaz_Z_Query::set_rpn (const char *rpn) @@ -30,8 +24,9 @@ int Yaz_Z_Query::set_rpn (const char *rpn) query->u.type_1 = p_query_rpn (odr_encode, PROTO_Z3950, rpn); if (!query->u.type_1) return -1; - if (!z_Query (odr_encode, &query, 0)) + 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; } @@ -40,7 +35,7 @@ void Yaz_Z_Query::set_Z_Query(Z_Query *z_query) { buf = 0; odr_reset (odr_encode); - if (!z_Query (odr_encode, &z_query, 0)) + if (!z_Query (odr_encode, &z_query, 0, 0)) return; buf = odr_getbuf (odr_encode, &len, 0); } @@ -49,6 +44,7 @@ Yaz_Z_Query::~Yaz_Z_Query() { odr_destroy (odr_encode); odr_destroy (odr_decode); + odr_destroy (odr_print); } Z_Query *Yaz_Z_Query::get_Z_Query () @@ -57,7 +53,7 @@ Z_Query *Yaz_Z_Query::get_Z_Query () if (!buf) return 0; odr_setbuf (odr_decode, buf, len, 0); - if (!z_Query(odr_decode, &query, 0)) + if (!z_Query(odr_decode, &query, 0, 0)) return 0; return query; } @@ -66,3 +62,14 @@ void Yaz_Z_Query::print(char *str, int len) { } + +int Yaz_Z_Query::match(Yaz_Z_Query *other) +{ + if (len != other->len) + return 0; + if (!buf || !other->buf) + return 0; + if (memcmp(buf, other->buf, len)) + return 0; + return 1; +}