1 /*
2  * Online help index definitions for CUPS.
3  *
4  * Copyright 2007-2011 by Apple Inc.
5  * Copyright 1997-2007 by Easy Software Products.
6  *
7  * Licensed under Apache License v2.0.  See the file "LICENSE" for more information.
8  */
9 
10 #ifndef _CUPS_HELP_INDEX_H_
11 #  define _CUPS_HELP_INDEX_H_
12 
13 /*
14  * Include necessary headers...
15  */
16 
17 #  include <cups/array.h>
18 
19 
20 /*
21  * C++ magic...
22  */
23 
24 #  ifdef __cplusplus
25 extern "C" {
26 #  endif /* __cplusplus */
27 
28 /*
29  * Data structures...
30  */
31 
32 typedef struct help_word_s		/**** Help word structure... ****/
33 {
34   int		count;			/* Number of occurrences */
35   char		*text;			/* Word text */
36 } help_word_t;
37 
38 typedef struct help_node_s		/**** Help node structure... ****/
39 {
40   char		*filename;		/* Filename, relative to help dir */
41   char		*section;		/* Section name (NULL if none) */
42   char		*anchor;		/* Anchor name (NULL if none) */
43   char		*text;			/* Text in anchor */
44   cups_array_t	*words;			/* Words after this node */
45   time_t	mtime;			/* Last modification time */
46   off_t		offset;			/* Offset in file */
47   size_t	length;			/* Length in bytes */
48   int		score;			/* Search score */
49 } help_node_t;
50 
51 typedef struct help_index_s		/**** Help index structure ****/
52 {
53   int		search;			/* 1 = search index, 0 = normal */
54   cups_array_t	*nodes;			/* Nodes sorted by filename */
55   cups_array_t	*sorted;		/* Nodes sorted by score + text */
56 } help_index_t;
57 
58 
59 /*
60  * Functions...
61  */
62 
63 extern void		helpDeleteIndex(help_index_t *hi);
64 extern help_node_t	*helpFindNode(help_index_t *hi, const char *filename,
65 			              const char *anchor);
66 extern help_index_t	*helpLoadIndex(const char *hifile, const char *directory);
67 extern int		helpSaveIndex(help_index_t *hi, const char *hifile);
68 extern help_index_t	*helpSearchIndex(help_index_t *hi, const char *query,
69 			                 const char *section,
70 					 const char *filename);
71 
72 
73 #  ifdef __cplusplus
74 }
75 #  endif /* __cplusplus */
76 
77 #endif /* !_CUPS_HELP_INDEX_H_ */
78