1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
/* This file is part of the YAZ toolkit.
* Copyright (C) 1995-2012 Index Data
* See the file LICENSE for details.
*/
/**
* \file cqlstring.c
* \brief Implements query stream reader that reads from a C string.
*/
#if HAVE_CONFIG_H
#include <config.h>
#endif
#include <yaz/cql.h>
struct cql_buf_info {
const char *str;
int off;
};
static int getbuf(void *vp)
{
struct cql_buf_info *bi = (struct cql_buf_info *) vp;
if (bi->str[bi->off] == 0)
return 0;
return bi->str[bi->off++];
}
static void ungetbuf(int b, void *vp)
{
struct cql_buf_info *bi = (struct cql_buf_info *) vp;
if (b)
(bi->off--);
}
int cql_parser_string(CQL_parser cp, const char *str)
{
struct cql_buf_info b;
b.str = str;
b.off = 0;
return cql_parser_stream(cp, getbuf, ungetbuf, &b);
}
/*
* Local variables:
* c-basic-offset: 4
* c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab
*/
|