~ubuntu-branches/ubuntu/wily/dovecot/wily

« back to all changes in this revision

Viewing changes to src/lib-fts/fts-language.h

  • Committer: Package Import Robot
  • Author(s): Jelmer Vernooij
  • Date: 2015-05-24 15:01:19 UTC
  • mto: (4.1.53 sid)
  • mto: This revision was merged to the branch mainline in revision 102.
  • Revision ID: package-import@ubuntu.com-20150524150119-hsh6cbr1fqseapga
Tags: upstream-2.2.18
ImportĀ upstreamĀ versionĀ 2.2.18

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef FTS_LANGUAGE_H
 
2
#define FTS_LANGUAGE_H
 
3
 
 
4
struct fts_language_list;
 
5
 
 
6
enum fts_language_result {
 
7
        /* Provided sample is too short. */
 
8
        FTS_LANGUAGE_RESULT_SHORT,
 
9
        /* Language is unknown or not in the provided list . */
 
10
        FTS_LANGUAGE_RESULT_UNKNOWN,
 
11
 
 
12
        FTS_LANGUAGE_RESULT_OK,
 
13
        /* textcat library initialization failed. */
 
14
        FTS_LANGUAGE_RESULT_ERROR
 
15
};
 
16
 
 
17
struct fts_language {
 
18
        /* Two-letter language name lowercased, e.g. "en" */
 
19
        const char *name;
 
20
};
 
21
ARRAY_DEFINE_TYPE(fts_language, const struct fts_language *);
 
22
 
 
23
/* Used for raw data that is indexed. This data shouldn't go through any
 
24
   language-specific filters. */
 
25
extern const struct fts_language fts_language_data;
 
26
 
 
27
/* Find a specified language by name. This finds from the internal list of
 
28
   supported languages. */
 
29
const struct fts_language *fts_language_find(const char *name);
 
30
 
 
31
int fts_language_list_init(const char *const *settings,
 
32
                           struct fts_language_list **list_r,
 
33
                           const char **error_r);
 
34
void fts_language_list_deinit(struct fts_language_list **list);
 
35
 
 
36
/* Add a language to the list of wanted languages. */
 
37
void fts_language_list_add(struct fts_language_list *list,
 
38
                           const struct fts_language *lang);
 
39
/* Add wanted languages from a space-separated list of language names.
 
40
   Duplicates are ignored. Returns TRUE if ok, FALSE and unknown_name if an
 
41
   unknown language was found from the list. */
 
42
bool fts_language_list_add_names(struct fts_language_list *list,
 
43
                                 const char *names,
 
44
                                 const char **unknown_name_r);
 
45
 
 
46
/* Return an array of all wanted languages. */
 
47
const ARRAY_TYPE(fts_language) *
 
48
fts_language_list_get_all(struct fts_language_list *list);
 
49
/* Returns the first wanted language (default language). */
 
50
const struct fts_language *
 
51
fts_language_list_get_first(struct fts_language_list *list);
 
52
 
 
53
/* If text was detected to be one of the languages in the list,
 
54
   returns FTS_LANGUAGE_RESULT_OK and (a pointer to) the language (in
 
55
   the list). */
 
56
enum fts_language_result
 
57
fts_language_detect(struct fts_language_list *list,
 
58
                    const unsigned char *text, size_t size,
 
59
                    const struct fts_language **lang_r);
 
60
 
 
61
#endif