From b0d41b53f31ecf7db5c6777a41fc0184d5d73231 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Sat, 24 Mar 2012 00:31:55 +0000 Subject: Simplify by not pre-filtering the result vector for satisfied matches: we can do this in the frontend. --- apropos_db.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'apropos_db.h') diff --git a/apropos_db.h b/apropos_db.h index 2af91206..bf0913e8 100644 --- a/apropos_db.h +++ b/apropos_db.h @@ -1,4 +1,4 @@ -/* $Id: apropos_db.h,v 1.11 2011/12/16 12:06:35 kristaps Exp $ */ +/* $Id: apropos_db.h,v 1.12 2012/03/24 00:31:55 kristaps Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * @@ -36,6 +36,18 @@ struct res { * searched for manual page databases. */ unsigned int volume; + /* + * The following fields are used internally. + * + * Maintain a binary tree for checking the uniqueness of `rec' + * when adding elements to the results array. + * Since the results array is dynamic, use offset in the array + * instead of a pointer to the structure. + */ + int lhs; + int rhs; + int matched; /* expression is true */ + int *matches; /* partial truth evaluations */ }; struct opts { @@ -47,11 +59,13 @@ __BEGIN_DECLS struct expr; -int apropos_search(int, char **, const struct opts *, - const struct expr *, size_t, void *, +int apropos_search(int, char **, const struct opts *, + const struct expr *, size_t, + void *, size_t *, struct res **, void (*)(struct res *, size_t, void *)); struct expr *exprcomp(int, char *[], size_t *); void exprfree(struct expr *); +void resfree(struct res *, size_t); struct expr *termcomp(int, char *[], size_t *); __END_DECLS -- cgit v1.2.3