37 configuration = profileManager->get_configuration();
39 contextTracker =
new ContextTracker(configuration, predictorRegistry, callback);
40 predictorActivator =
new PredictorActivator(configuration, predictorRegistry, contextTracker);
41 selector =
new Selector(configuration, contextTracker);
48 configuration = profileManager->get_configuration();
50 contextTracker =
new ContextTracker(configuration, predictorRegistry, callback);
51 predictorActivator =
new PredictorActivator(configuration, predictorRegistry, contextTracker);
52 selector =
new Selector(configuration, contextTracker);
67 std::vector<std::string> result;
69 unsigned int multiplier = 1;
82 previous_prediction = prediction;
93 std::multimap<double, std::string> result;
95 std::vector<std::string> selection;
96 const char** internal_filter = 0;
101 internal_filter =
new const char*[filter.size() + 1];
102 for (std::vector<std::string>::size_type i = 0; i < filter.size(); i++) {
103 internal_filter[i] = filter[i].c_str();
105 internal_filter[filter.size()] = 0;
108 unsigned int multiplier = 1;
109 Prediction prediction = predictorActivator->predict(multiplier++, internal_filter);
110 selection = selector->select(prediction);
113 while ((selection.size() < (selector->get_suggestions()))
114 && (prediction = predictorActivator->predict(multiplier++, internal_filter)).size() > previous_prediction.
size()) {
120 selection = selector->select(prediction);
121 previous_prediction = prediction;
124 delete[] internal_filter;
126 for (std::vector<std::string>::const_iterator it = selection.begin();
127 it != selection.end();
134 contextTracker->update();
142 return const_cast<PresageCallback*
>(contextTracker->callback(callback));
164 std::string::size_type offset = str.find_first_not_of(
'\b');
170 if (contextTracker->isCompletionValid(str)) {
171 std::string prefix = contextTracker->getPrefix();
172 result = str.substr(prefix.size());
174 std::string message =
"[Presage] Error: token '";
176 message +=
"' does not match prefix: ";
177 message += contextTracker->getPrefix();
214 return configuration->find (variable)->get_value ();
220 configuration->find (variable)->set_value (value);
266 #define presage_exception_handler(CODE) \
271 catch (PresageException& ex) \
277 #define presage_exception_handler_with_result(CODE) \
282 catch (PresageException& ex) \
291 char* result_c_str = (
char*) malloc (str.size() + 1);
293 strcpy (result_c_str, str.c_str());
298 void* past_stream_cb_arg,
300 void* future_stream_cb_arg,
310 future_stream_cb_arg);
311 (*result)->presage_object =
new Presage ((*result)->presage_callback_object);
317 void* past_stream_cb_arg,
319 void* future_stream_cb_arg,
330 future_stream_cb_arg);
331 (*result)->presage_object =
new Presage ((*result)->presage_callback_object, config);
354 for (
size_t t = 0; strs[t] != 0; t++) {
367 size_t prediction_c_str_size = prediction.size() + 1;
368 char** prediction_c_str = (
char**) malloc (prediction_c_str_size *
sizeof(
char*));
369 memset (prediction_c_str, 0, prediction_c_str_size *
sizeof(
char*));
372 while (i < prediction_c_str_size - 1) {
373 prediction_c_str[i] = (
char*) malloc (prediction[i].size() + 1);
374 strcpy (prediction_c_str[i], prediction[i].c_str());
377 prediction_c_str[i] = 0;
379 *result = prediction_c_str;