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
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/* automatically generated by rust-bindgen */

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fasttext_t {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fasttext_args_t {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fasttext_prediction_t {
    pub prob: f32,
    pub label: *mut ::std::os::raw::c_char,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fasttext_predictions_t {
    pub predictions: *mut fasttext_prediction_t,
    pub length: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fasttext_tokens_t {
    pub tokens: *mut *mut ::std::os::raw::c_char,
    pub length: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fasttext_words_t {
    pub words: *const i32,
    pub length: usize,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum model_name_t {
    MODEL_CBOW = 1,
    MODEL_SG = 2,
    MODEL_SUP = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum loss_name_t {
    LOSS_HS = 1,
    LOSS_NS = 2,
    LOSS_SOFTMAX = 3,
    LOSS_OVA = 4,
}

extern "C" {
    pub fn cft_str_free(s: *mut ::std::os::raw::c_char);
    pub fn cft_args_new() -> *mut fasttext_args_t;
    pub fn cft_args_parse(
        handle: *mut fasttext_args_t,
        argc: ::std::os::raw::c_int,
        argv: *mut *mut ::std::os::raw::c_char,
    );
    pub fn cft_args_free(handle: *mut fasttext_args_t);
    pub fn cft_args_get_input(handle: *mut fasttext_args_t) -> *const ::std::os::raw::c_char;
    pub fn cft_args_set_input(handle: *mut fasttext_args_t, input: *const ::std::os::raw::c_char);
    pub fn cft_args_get_output(handle: *mut fasttext_args_t) -> *const ::std::os::raw::c_char;
    pub fn cft_args_set_output(handle: *mut fasttext_args_t, output: *const ::std::os::raw::c_char);
    pub fn cft_args_get_lr(handle: *mut fasttext_args_t) -> ::std::os::raw::c_double;
    pub fn cft_args_set_lr(handle: *mut fasttext_args_t, lr: ::std::os::raw::c_double);
    pub fn cft_args_get_lr_update_rate(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_lr_update_rate(handle: *mut fasttext_args_t, lr: ::std::os::raw::c_int);
    pub fn cft_args_get_dim(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_dim(handle: *mut fasttext_args_t, dim: ::std::os::raw::c_int);
    pub fn cft_args_get_ws(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_ws(handle: *mut fasttext_args_t, ws: ::std::os::raw::c_int);
    pub fn cft_args_get_epoch(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_epoch(handle: *mut fasttext_args_t, epoch: ::std::os::raw::c_int);
    pub fn cft_args_get_thread(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_thread(handle: *mut fasttext_args_t, thread: ::std::os::raw::c_int);
    pub fn cft_args_get_model(handle: *mut fasttext_args_t) -> model_name_t;
    pub fn cft_args_set_model(handle: *mut fasttext_args_t, model: model_name_t);
    pub fn cft_args_get_loss(handle: *mut fasttext_args_t) -> loss_name_t;
    pub fn cft_args_set_loss(handle: *mut fasttext_args_t, loss: loss_name_t);
    pub fn cft_args_get_min_count(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_min_count(handle: *mut fasttext_args_t, min_count: ::std::os::raw::c_int);
    pub fn cft_args_get_min_count_label(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_min_count_label(
        handle: *mut fasttext_args_t,
        min_count: ::std::os::raw::c_int,
    );
    pub fn cft_args_get_neg(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_neg(handle: *mut fasttext_args_t, neg: ::std::os::raw::c_int);
    pub fn cft_args_get_word_ngrams(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_word_ngrams(handle: *mut fasttext_args_t, ngrams: ::std::os::raw::c_int);
    pub fn cft_args_get_bucket(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_bucket(handle: *mut fasttext_args_t, bucket: ::std::os::raw::c_int);
    pub fn cft_args_get_minn(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_minn(handle: *mut fasttext_args_t, minn: ::std::os::raw::c_int);
    pub fn cft_args_get_maxn(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_maxn(handle: *mut fasttext_args_t, maxn: ::std::os::raw::c_int);
    pub fn cft_args_get_t(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_t(handle: *mut fasttext_args_t, t: ::std::os::raw::c_int);
    pub fn cft_args_get_verbose(handle: *mut fasttext_args_t) -> ::std::os::raw::c_int;
    pub fn cft_args_set_verbose(handle: *mut fasttext_args_t, verbose: ::std::os::raw::c_int);
    pub fn cft_args_get_label(handle: *mut fasttext_args_t) -> *const ::std::os::raw::c_char;
    pub fn cft_args_set_label(handle: *mut fasttext_args_t, label: *const ::std::os::raw::c_char);
    pub fn cft_args_get_save_output(handle: *mut fasttext_args_t) -> bool;
    pub fn cft_args_set_save_output(handle: *mut fasttext_args_t, save_output: bool);
    pub fn cft_args_get_qout(handle: *mut fasttext_args_t) -> bool;
    pub fn cft_args_set_qout(handle: *mut fasttext_args_t, qout: bool);
    pub fn cft_args_get_retrain(handle: *mut fasttext_args_t) -> bool;
    pub fn cft_args_set_retrain(handle: *mut fasttext_args_t, retrain: bool);
    pub fn cft_args_get_qnorm(handle: *mut fasttext_args_t) -> bool;
    pub fn cft_args_set_qnorm(handle: *mut fasttext_args_t, qnorm: bool);
    pub fn cft_args_get_cutoff(handle: *mut fasttext_args_t) -> usize;
    pub fn cft_args_set_cutoff(handle: *mut fasttext_args_t, cutoff: usize);
    pub fn cft_args_get_dsub(handle: *mut fasttext_args_t) -> usize;
    pub fn cft_args_set_dsub(handle: *mut fasttext_args_t, dsub: usize);
    pub fn cft_args_print_help(handle: *mut fasttext_args_t);
    pub fn cft_args_print_basic_help(handle: *mut fasttext_args_t);
    pub fn cft_args_print_dictionary_help(handle: *mut fasttext_args_t);
    pub fn cft_args_print_training_help(handle: *mut fasttext_args_t);
    pub fn cft_args_print_quantization_help(handle: *mut fasttext_args_t);

    pub fn cft_fasttext_new() -> *mut fasttext_t;
    pub fn cft_fasttext_free(handle: *mut fasttext_t);
    pub fn cft_fasttext_load_model(
        handle: *mut fasttext_t,
        filename: *const ::std::os::raw::c_char,
        errptr: *mut *mut ::std::os::raw::c_char
    );
    pub fn cft_fasttext_save_model(handle: *mut fasttext_t, filename: *const ::std::os::raw::c_char, errptr: *mut *mut ::std::os::raw::c_char);
    pub fn cft_fasttext_save_output(handle: *mut fasttext_t, filename: *const ::std::os::raw::c_char, errptr: *mut *mut ::std::os::raw::c_char);
    pub fn cft_fasttext_save_vectors(handle: *mut fasttext_t, filename: *const ::std::os::raw::c_char, errptr: *mut *mut ::std::os::raw::c_char);
    pub fn cft_fasttext_get_dimension(handle: *mut fasttext_t) -> ::std::os::raw::c_int;
    pub fn cft_fasttext_get_word_id(
        handle: *mut fasttext_t,
        word: *const ::std::os::raw::c_char,
    ) -> i32;
    pub fn cft_fasttext_get_subword_id(
        handle: *mut fasttext_t,
        word: *const ::std::os::raw::c_char,
    ) -> i32;
    pub fn cft_fasttext_is_quant(handle: *mut fasttext_t) -> bool;
    pub fn cft_fasttext_load_vectors(
        handle: *mut fasttext_t,
        filename: *const ::std::os::raw::c_char,
        errptr: *mut *mut ::std::os::raw::c_char
    );
    pub fn cft_fasttext_train(
        handle: *mut fasttext_t,
        args: *mut fasttext_args_t,
        errptr: *mut *mut ::std::os::raw::c_char
    );
    pub fn cft_fasttext_predict(
        handle: *mut fasttext_t,
        text: *const ::std::os::raw::c_char,
        k: i32,
        threshold: f32,
        errptr: *mut *mut ::std::os::raw::c_char,
    ) -> *mut fasttext_predictions_t;
    pub fn cft_fasttext_predict_on_words(
        handle: *mut fasttext_t,
        words: *const fasttext_words_t,
        k: i32,
        threshold: f32,
        errptr: *mut *mut ::std::os::raw::c_char,
    ) -> *mut fasttext_predictions_t;
    pub fn cft_fasttext_predictions_free(predictions: *mut fasttext_predictions_t);
    pub fn cft_fasttext_quantize(
        handle: *mut fasttext_t,
        args: *mut fasttext_args_t,
        errptr: *mut *mut ::std::os::raw::c_char
    );
    pub fn cft_fasttext_get_word_vector(handle: *mut fasttext_t, word: *const ::std::os::raw::c_char, buf: *mut ::std::os::raw::c_float);
    pub fn cft_fasttext_get_sentence_vector(handle: *mut fasttext_t, sentence: *const ::std::os::raw::c_char, buf: *mut ::std::os::raw::c_float);
    pub fn cft_fasttext_tokenize(handle: *mut fasttext_t, text: *const ::std::os::raw::c_char) -> *mut fasttext_tokens_t;
    pub fn cft_fasttext_tokens_free(tokens: *mut fasttext_tokens_t);
}