Annotation of 43BSDReno/contrib/isode-beta/h/quipu/ds_search.h, revision 1.1

1.1     ! root        1: /* ds_search.h - structures for searching */
        !             2: 
        !             3: /*
        !             4:  * $Header: /f/osi/h/quipu/RCS/ds_search.h,v 7.2 90/07/09 14:38:27 mrose Exp $
        !             5:  *
        !             6:  *
        !             7:  * $Log:       ds_search.h,v $
        !             8:  * Revision 7.2  90/07/09  14:38:27  mrose
        !             9:  * sync
        !            10:  * 
        !            11:  * Revision 7.1  90/03/15  11:18:05  mrose
        !            12:  * quipu-sync
        !            13:  * 
        !            14:  * Revision 7.0  89/11/23  21:56:31  mrose
        !            15:  * Release 6.0
        !            16:  * 
        !            17:  */
        !            18: 
        !            19: /*
        !            20:  *                               NOTICE
        !            21:  *
        !            22:  *    Acquisition, use, and distribution of this module and related
        !            23:  *    materials are subject to the restrictions of a license agreement.
        !            24:  *    Consult the Preface in the User's Manual for the full terms of
        !            25:  *    this agreement.
        !            26:  *
        !            27:  */
        !            28: 
        !            29: 
        !            30: #ifndef QUIPUSRCH
        !            31: #define QUIPUSRCH
        !            32: 
        !            33: #include "quipu/commonarg.h"
        !            34: #include "quipu/ds_error.h"
        !            35: #include "quipu/dap.h"
        !            36: 
        !            37: typedef struct {
        !            38:            AttributeType fi_sub_type;
        !            39:            AV_Sequence fi_sub_initial;
        !            40:            AV_Sequence fi_sub_any;
        !            41:            AV_Sequence fi_sub_final;
        !            42:                                /* initial and final should be zero or  */
        !            43:                                /* one components only                  */
        !            44:            char       *fi_sub_match; /* for DSA use */
        !            45:        } Filter_Substrings;
        !            46: 
        !            47: struct filter_item {
        !            48:     int         fi_type;
        !            49: #define FILTERITEM_EQUALITY 0
        !            50: #define FILTERITEM_SUBSTRINGS 1
        !            51: #define FILTERITEM_GREATEROREQUAL 2
        !            52: #define FILTERITEM_LESSOREQUAL 3
        !            53: #define FILTERITEM_PRESENT 4
        !            54: #define FILTERITEM_APPROX 5
        !            55:     union {
        !            56:        AttributeType fi_un_type;
        !            57:        AVA fi_un_ava;
        !            58:        Filter_Substrings fi_un_substrings;
        !            59:     } fi_un;
        !            60:        /* field for DSA use - no need to fill is DUA */
        !            61:     IFP            fi_ifp;
        !            62: };
        !            63: 
        !            64: #define NULLFITEM (struct filter_item *) NULL
        !            65: #define UNSUB    fi_un.fi_un_substrings
        !            66: #define UNAVA    fi_un.fi_un_ava
        !            67: #define UNTYPE   fi_un.fi_un_type
        !            68: #define filter_item_alloc() (struct filter_item *) smalloc (sizeof (struct filter_item));
        !            69: 
        !            70: typedef struct filter {
        !            71:     char        flt_type;
        !            72: #define FILTER_ITEM 0
        !            73: #define FILTER_AND 1
        !            74: #define FILTER_OR 2
        !            75: #define FILTER_NOT 3
        !            76:    struct filter *flt_next;
        !            77:    union {
        !            78:        struct filter_item flt_un_item;
        !            79:                                        /* a basic item                 */
        !            80:        struct filter *flt_un_filter;
        !            81:                                        /* or a pointer to a chain of   */
        !            82:                                        /* filters                      */
        !            83:    } flt_un;
        !            84: }filter, *Filter;
        !            85: 
        !            86: #define NULLFILTER (Filter)NULL
        !            87: #define FUITEM   flt_un.flt_un_item
        !            88: #define FUFILT   flt_un.flt_un_filter
        !            89: #define filter_alloc() (Filter) smalloc (sizeof (filter));
        !            90: 
        !            91: struct ds_search_arg {
        !            92:     CommonArgs sra_common;
        !            93:     DN sra_baseobject;
        !            94:     int sra_subset;
        !            95: #define SRA_BASEOBJECT          0
        !            96: #define SRA_ONELEVEL            1
        !            97: #define SRA_WHOLESUBTREE        2
        !            98:     Filter sra_filter;
        !            99:     char sra_searchaliases;
        !           100:     EntryInfoSelection sra_eis;
        !           101: };
        !           102: 
        !           103: struct ds_search_unit {
        !           104:     CommonResults srr_common;
        !           105:     DN srr_object;
        !           106:     EntryInfo *srr_entries;
        !           107:     int srr_limitproblem;       /* See LIST for definition of values    */
        !           108:     ContinuationRef     srr_cr;
        !           109: };
        !           110: 
        !           111: struct ds_search_result {
        !           112:     char       srr_correlated;
        !           113:     union {
        !           114:        struct ds_search_unit   * srr_unit;
        !           115:        struct ds_search_result * srr_parts;
        !           116:     } srr_un;
        !           117: #define CSR_common     srr_un.srr_unit->srr_common
        !           118: #define CSR_object     srr_un.srr_unit->srr_object
        !           119: #define CSR_entries    srr_un.srr_unit->srr_entries
        !           120: #define CSR_limitproblem       srr_un.srr_unit->srr_limitproblem
        !           121: #define CSR_cr srr_un.srr_unit->srr_cr
        !           122:     struct ds_search_result * srr_next;
        !           123: };
        !           124: #define NULLSRR        ((struct ds_search_result *) 0)
        !           125: 
        !           126: /* following used by search for scheduling */
        !           127: 
        !           128: struct ds_search_task {
        !           129:    DN  st_baseobject;
        !           130:    DN  st_alias;
        !           131:    int st_subset;
        !           132:    int st_size;
        !           133:    struct di_block     * st_di;
        !           134:    struct ds_search_task * st_next;    
        !           135:    ContinuationRef     st_cr;
        !           136:    struct ds_search_task * st_save;    
        !           137:    char st_entryonly;
        !           138: };
        !           139: #define NULL_ST ((struct ds_search_task *) NULL)
        !           140: #define st_alloc() (struct ds_search_task *) smalloc (sizeof(struct ds_search_task));
        !           141: 
        !           142: /* search max 1000 entries before worrying about time limits */
        !           143: #define SEARCH_DELTA_SIZE 1000 
        !           144: 
        !           145: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.