aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/apropos_db.h
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2012-03-24 00:31:55 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2012-03-24 00:31:55 +0000
commitb0d41b53f31ecf7db5c6777a41fc0184d5d73231 (patch)
treef091045820142264a975c8815ebc0bf1b73afaa0 /apropos_db.h
parentce34328e22d20a0bb72bd41483eb34a654ea4751 (diff)
downloadmandoc-b0d41b53f31ecf7db5c6777a41fc0184d5d73231.tar.gz
mandoc-b0d41b53f31ecf7db5c6777a41fc0184d5d73231.tar.zst
mandoc-b0d41b53f31ecf7db5c6777a41fc0184d5d73231.zip
Simplify by not pre-filtering the result vector for satisfied matches:
we can do this in the frontend.
Diffstat (limited to 'apropos_db.h')
-rw-r--r--apropos_db.h20
1 files changed, 17 insertions, 3 deletions
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 <kristaps@bsd.lv>
*
@@ -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