]> mj.ucw.cz Git - libucw.git/blob - lib/custom.h
loop unrolling turned on for hashfunc.o
[libucw.git] / lib / custom.h
1 /*
2  *      Sherlock: Custom Parts of Configuration
3  *
4  *      (c) 2001--2002 Martin Mares <mj@ucw.cz>
5  */
6
7 /* Name of this customization (version suffix) */
8
9 #define SHER_SUFFIX ""
10
11 /* Word types */
12
13 enum word_type {
14   WT_RESERVED,                          /* Reserved word type */
15   WT_TEXT,                              /* Ordinary text */
16   WT_EMPH,                              /* Emphasized text */
17   WT_SMALL,                             /* Small font */
18   WT_TITLE,                             /* Document title */
19   WT_SMALL_HEADING,                     /* Heading */
20   WT_BIG_HEADING,                       /* Larger heading */
21   WT_KEYWORD,                           /* Explicitly marked keyword */
22   WT_META,                              /* Various meta-information */
23   WT_ALT,                               /* Alternate texts for graphical elements */
24   WT_URL1,                              /* Word extracted from document URL (low and high weight) */
25   WT_URL2,
26   WT_FILE,                              /* Part of file name */
27   WT_LINK,                              /* Link text */
28   WT_MAX
29 };
30
31 /* Descriptive names used for user output */
32 #define WORD_TYPE_USER_NAMES                                                    \
33    "reserved", "text", "emph", "small", "title", "hdr1", "hdr2", "keywd",       \
34    "meta", "alt", "urlword1", "urlword2", "nameword", "link", "type14", "type15"
35
36 /* Keywords for word type names */
37 #define WORD_TYPE_NAMES                         \
38         T(WORD, ~((1 << WT_FILE) | (1 << WT_LINK)))     \
39         T(TEXT, 1 << WT_TEXT)                   \
40         T(EMPH, 1 << WT_EMPH)                   \
41         T(SMALL, 1 << WT_SMALL)                 \
42         T(TITLE, 1 << WT_TITLE)                 \
43         T(HDR, (1 << WT_SMALL_HEADING) | (1 << WT_BIG_HEADING))  \
44         T(HDR1, 1 << WT_SMALL_HEADING)          \
45         T(HDR2, 1 << WT_BIG_HEADING)            \
46         T(KEYWD, 1 << WT_KEYWORD)               \
47         T(META, 1 << WT_META)                   \
48         T(ALT, 1 << WT_ALT)                     \
49         T(URLWORD, (1 << WT_URL1) | (1 << WT_URL2))     \
50         T(FILE, 1 << WT_FILE)                   \
51         T(LINK, 1 << WT_LINK)
52
53 /* These types are not shown in document contexts */
54 #define WORD_TYPES_HIDDEN ((1 << WT_URL1) | (1 << WT_URL2) | (1 << WT_FILE))
55
56 /* These types are always matched without accents if accent mode is set to "auto" */
57 #define WORD_TYPES_NO_AUTO_ACCENT ((1 << WT_URL1) | (1 << WT_URL2) | (1 << WT_FILE) | (1 << WT_LINK))
58
59 /* String types */
60
61 enum string_type {
62   ST_RESERVED,                          /* Reserved string type */
63   ST_URL,                               /* URL of the document */
64   ST_HOST,                              /* Host name */
65   ST_DOMAIN,                            /* Domain name */
66   ST_REF,                               /* URL reference */
67   ST_MAX
68 };
69
70 #define STRING_TYPE_USER_NAMES                                                  \
71    "URL", "host", "domain", "ref", "type4", "type5", "type6", "type7",  \
72    "type8", "type9", "type10", "type11", "type12", "type13", "type14", "type15"
73
74 #define STRING_TYPE_NAMES                       \
75         T(URL, 1 << ST_URL)                     \
76         T(HOST, 1 << ST_HOST)                   \
77         T(DOMAIN, 1 << ST_DOMAIN)               \
78         T(REF, 1 << ST_REF)
79
80 #define STRING_TYPES_URL ((1 << ST_URL) | (1 << ST_REF))
81 /* These must be indexed in lowercase form */
82 #define STRING_TYPES_CASE_INSENSITIVE ((1 << ST_HOST) | (1 << ST_DOMAIN))
83
84 /*
85  *  Definitions of custom attributes:
86  *
87  *  INT_ATTR(type, id, oattr, keyword, get_func, parse_func)
88  *
89  *  type        data type used to hold the value
90  *  id          C identifier of the attribute
91  *  oattr       object attribute we get the value from
92  *  keywd       search server keyword for the attribute
93  *  void get_func(struct card_attr *ca, byte *attr)
94  *              parse object attribute (may be NULL)
95  *  byte *parse_func(u32 *dest, byte *value, uns intval)
96  *              parse value in query (returns error message or NULL)
97  *              for KEYWD = "string", it gets value="string", intval=0
98  *              for KEYWD = num, it gets value=NULL, intval=num.
99  *
100  *  A good place for definitions of the functions is lib/custom.c.
101  *
102  *  Please order the attributes by decreasing size to get optimum padding.
103  */
104
105 #if 0           /* Example */
106
107 #define CUSTOM_ATTRS INT_ATTR(u32, lm, 'L', LM, custom_get_lm, custom_parse_lm)
108
109 struct card_attr;
110 void custom_get_lm(struct card_attr *ca, byte *attr);
111 byte *custom_parse_lm(u32 *dest, byte *value, uns intval);
112
113 #else
114
115 #define CUSTOM_ATTRS
116
117 #endif