2 * Copyright (C) 1995-2007, Index Data ApS
5 * $Id: query-charset.c,v 1.1 2007-03-21 19:47:28 adam Exp $
8 /** \file query-charset.c
9 \brief converts General Terms in RPN queries
15 #include <yaz/proto.h>
16 #include <yaz/wrbuf.h>
18 #include <yaz/yaz-iconv.h>
20 void yaz_query_charset_convert_buf(char *buf_in, int len_in,
21 char **buf_out, int *len_out,
22 ODR o, WRBUF wrbuf, yaz_iconv_t cd)
25 wrbuf_iconv_write(wrbuf, cd, buf_in, len_in);
26 wrbuf_iconv_reset(wrbuf, cd);
28 *len_out = wrbuf_len(wrbuf);
30 { // we assume conversion failed
36 *buf_out = (char*) odr_malloc(o, *len_out);
37 memcpy(*buf_out, wrbuf_buf(wrbuf), *len_out);
41 void yaz_query_charset_convert_term(Z_Term *q,
42 ODR o, WRBUF wrbuf, yaz_iconv_t cd)
47 yaz_query_charset_convert_buf(
48 (char *) q->u.general->buf, q->u.general->len,
49 (char **) &q->u.general->buf, &q->u.general->len, o, wrbuf, cd);
54 void yaz_query_charset_convert_operand(Z_Operand *q,
55 ODR o, WRBUF wrbuf, yaz_iconv_t cd)
60 yaz_query_charset_convert_term(q->u.attributesPlusTerm->term,
63 case Z_Operand_resultSetId:
65 case Z_Operand_resultAttr:
70 void yaz_query_charset_convert_structure(Z_RPNStructure *q,
71 ODR o, WRBUF wrbuf, yaz_iconv_t cd)
75 case Z_RPNStructure_simple:
76 yaz_query_charset_convert_operand(q->u.simple, o, wrbuf, cd);
78 case Z_RPNStructure_complex:
79 yaz_query_charset_convert_structure(q->u.complex->s1, o, wrbuf, cd);
80 yaz_query_charset_convert_structure(q->u.complex->s2, o, wrbuf, cd);
85 void yaz_query_charset_convert_rpnquery(Z_RPNQuery *q,
86 ODR o, yaz_iconv_t cd)
88 WRBUF wrbuf = wrbuf_alloc();
89 yaz_query_charset_convert_structure(q->RPNStructure, o, wrbuf, cd);
93 void yaz_query_charset_convert_apt(Z_AttributesPlusTerm *apt,
94 ODR o, yaz_iconv_t cd)
96 WRBUF wrbuf = wrbuf_alloc();
97 yaz_query_charset_convert_term(apt->term, o, wrbuf, cd);
104 * indent-tabs-mode: nil
106 * vim: shiftwidth=4 tabstop=8 expandtab