summaryrefslogtreecommitdiffstats
path: root/ldap/servers/plugins/collation/collate.h
blob: 679cb039759ab8e1c68bc0ab84ad6d731a1984bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/** BEGIN COPYRIGHT BLOCK
 * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
 * Copyright (C) 2005 Red Hat, Inc.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/

#ifndef _COLLATE_H_
#define _COLLATE_H_

#include <stddef.h> /* size_t */
#include <dirlite_strings.h> /* PLUGIN_MAGIC_VENDOR_STR */

struct indexer_t;

typedef void (*ix_destroy_t) (struct indexer_t*);
typedef struct berval** (*ix_index_t) (struct indexer_t*, struct berval** values,
				       struct berval** prefixes /* inserted into each key */);

typedef struct indexer_t
{
    char*        ix_oid;
    ix_index_t   ix_index; /* map values to index keys */
    ix_destroy_t ix_destroy;
    void*        ix_etc; /* whatever state the implementation needs */
} indexer_t;

extern void
collation_init( char *configpath );

extern int
collation_config (size_t argc, char** argv, const char* fname, size_t lineno);

extern indexer_t*
collation_indexer_create (const char* oid);

#endif