bool sml_fuzzy_remove_variable(struct sml_fuzzy *fuzzy, struct sml_variable *variable) { fl::Variable *fl_var = (fl::Variable*) variable; fl::Variable *removed_var = NULL; fl::Engine *engine = (fl::Engine*)fuzzy->engine; uint16_t index; bool ret = true; if (_find_variable((std::vector<fl::Variable*> *) fuzzy->input_list, fl_var, &index)) { removed_var = engine->removeInputVariable(index); fuzzy->input_terms_count -= removed_var->numberOfTerms(); if (sol_vector_del(&fuzzy->input_terms_width, index)) ret = false; } else if (_find_variable((std::vector<fl::Variable*> *) fuzzy->output_list, fl_var, &index)) { removed_var = engine->removeOutputVariable(index); fuzzy->output_terms_count -= removed_var->numberOfTerms(); if (sol_vector_del(&fuzzy->output_terms_width, index)) ret = false; } else { sml_critical("Variable is not a valid input or output"); return false; } delete removed_var; return ret; }
void sml_matrix_remove_col(struct sml_matrix *m, uint16_t line_num, uint16_t col_num) { struct sol_vector *line; line = sol_vector_get(&m->data, line_num); if (!line) return; sol_vector_del(line, col_num); }
void sml_matrix_remove_line(struct sml_matrix *m, uint16_t line_num) { struct sol_vector *line; line = sol_vector_get(&m->data, line_num); if (!line) return; sol_vector_clear(line); sol_vector_del(&m->data, line_num); }
static int out_write(struct subprocess_data *mdata) { int ret = 0; struct timespec start = sol_util_timespec_get_current(); while (mdata->write_data.len) { struct timespec now = sol_util_timespec_get_current(); struct timespec elapsed; struct write_data *w = sol_vector_get(&mdata->write_data, 0); ssize_t r; sol_util_timespec_sub(&now, &start, &elapsed); if (elapsed.tv_sec > 0 || elapsed.tv_nsec > (time_t)CHUNK_MAX_TIME_NS) break; r = write(mdata->pipes.out[1], (uint8_t *)w->blob->mem + w->offset, w->blob->size - w->offset); if (r > 0) { w->offset += r; } else if (r < 0) { if (errno == EINTR) continue; else if (errno == EAGAIN) break; else { ret = -errno; break; } } if (w->blob->size <= w->offset) { sol_blob_unref(w->blob); sol_vector_del(&mdata->write_data, 0); } } return ret; }