2 * Copyright 2005 Timo Hirvonen
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation; either version 2 of the
7 * License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
25 enum search_direction
{ SEARCH_FORWARD
, SEARCH_BACKWARD
};
27 struct searchable_ops
{
28 int (*get_prev
)(struct iter
*iter
);
29 int (*get_next
)(struct iter
*iter
);
30 int (*get_current
)(void *data
, struct iter
*iter
);
31 int (*matches
)(void *data
, struct iter
*iter
, const char *text
);
36 struct searchable
*searchable_new(void *data
, const struct iter
*head
, const struct searchable_ops
*ops
);
37 void searchable_free(struct searchable
*s
);
39 int search(struct searchable
*s
, const char *text
, enum search_direction dir
, int beginning
);
40 int search_next(struct searchable
*s
, const char *text
, enum search_direction dir
);