[BACK]Return to apropos_db.h CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Annotation of mandoc/apropos_db.h, Revision 1.13

1.13    ! kristaps    1: /*     $Id: apropos_db.h,v 1.12 2012/03/24 00:31:55 kristaps Exp $ */
1.1       schwarze    2: /*
1.13    ! kristaps    3:  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
1.1       schwarze    4:  *
                      5:  * Permission to use, copy, modify, and distribute this software for any
                      6:  * purpose with or without fee is hereby granted, provided that the above
                      7:  * copyright notice and this permission notice appear in all copies.
                      8:  *
                      9:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     10:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     11:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     12:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     13:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     14:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     15:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     16:  */
                     17: #ifndef APROPOS_H
                     18: #define APROPOS_H
                     19:
1.11      kristaps   20: enum   restype {
                     21:        RESTYPE_MAN, /* man(7) file */
                     22:        RESTYPE_MDOC, /* mdoc(7) file */
                     23:        RESTYPE_CAT /* pre-formatted file */
                     24: };
                     25:
1.5       kristaps   26: struct res {
1.11      kristaps   27:        enum restype     type; /* input file type */
1.1       schwarze   28:        char            *file; /* file in file-system */
                     29:        char            *cat; /* category (3p, 3, etc.) */
                     30:        char            *title; /* title (FOO, etc.) */
                     31:        char            *arch; /* arch (or empty string) */
                     32:        char            *desc; /* description (from Nd) */
                     33:        unsigned int     rec; /* record in index */
1.8       schwarze   34:        /*
1.7       kristaps   35:         * The index volume.  This indexes into the array of directories
                     36:         * searched for manual page databases.
                     37:         */
1.8       schwarze   38:        unsigned int     volume;
1.12      kristaps   39:        /*
                     40:         * The following fields are used internally.
                     41:         *
                     42:         * Maintain a binary tree for checking the uniqueness of `rec'
                     43:         * when adding elements to the results array.
                     44:         * Since the results array is dynamic, use offset in the array
                     45:         * instead of a pointer to the structure.
                     46:         */
                     47:        int              lhs;
                     48:        int              rhs;
                     49:        int              matched; /* expression is true */
                     50:        int             *matches; /* partial truth evaluations */
1.1       schwarze   51: };
                     52:
                     53: struct opts {
                     54:        const char      *arch; /* restrict to architecture */
                     55:        const char      *cat; /* restrict to manual section */
                     56: };
                     57:
                     58: __BEGIN_DECLS
                     59:
                     60: struct expr;
                     61:
1.12      kristaps   62: int             apropos_search(int, char **, const struct opts *,
                     63:                        const struct expr *, size_t,
                     64:                        void *, size_t *, struct res **,
1.5       kristaps   65:                        void (*)(struct res *, size_t, void *));
                     66: struct expr    *exprcomp(int, char *[], size_t *);
1.1       schwarze   67: void            exprfree(struct expr *);
1.12      kristaps   68: void            resfree(struct res *, size_t);
1.9       kristaps   69: struct expr    *termcomp(int, char *[], size_t *);
1.1       schwarze   70:
                     71: __END_DECLS
                     72:
                     73: #endif /*!APROPOS_H*/

CVSweb