]> git.cameronkatri.com Git - mandoc.git/blobdiff - apropos_db.h
Small tweaks for release.
[mandoc.git] / apropos_db.h
index 8d03e5be04f6a97e8a05d1f30bd4584a3a53405e..72d4c204a3918be3d52f831f6fd50fd6195503b9 100644 (file)
@@ -1,6 +1,6 @@
-/*     $Id: apropos_db.h,v 1.9 2011/11/27 18:54:01 kristaps Exp $ */
+/*     $Id: apropos_db.h,v 1.13 2012/03/24 01:46:25 kristaps Exp $ */
 /*
- * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
 #ifndef APROPOS_H
 #define APROPOS_H
 
+enum   restype {
+       RESTYPE_MAN, /* man(7) file */
+       RESTYPE_MDOC, /* mdoc(7) file */
+       RESTYPE_CAT /* pre-formatted file */
+};
+
 struct res {
+       enum restype     type; /* input file type */
        char            *file; /* file in file-system */
        char            *cat; /* category (3p, 3, etc.) */
        char            *title; /* title (FOO, etc.) */
@@ -29,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 {
@@ -40,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