/
pi-svetlana
/
CalculatorPython
Обзор
Документация
Войти
/
pi-svetlana
/
CalculatorPython
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/model/wrapper.cc
57 строк
2 KB
pi-svetlana
calculator
17 ноя 2024, 17:19
17 ноя 2024, 17:19
4ec612c
Код
Авторство
О чём код?
#include "wrapper.h" #include <cstring> using namespace s21; extern "C" { Model* WrModel() { return new Model(); } int WrCalculate(Model* model, const char* expression, double x, char* error_message, size_t message_size) { std::string expr(expression); try { model->Calculate(expr, x); return 0; } catch (const std::exception& e) { strncpy(error_message, e.what(), message_size - 1); error_message[message_size - 1] = '\0'; return 1; } } double WrGetResult(Model* model) { return model->GetResult(); } int WrCalculateGraphPoints(Model* model, const char* expression, double x_min, double x_max, char* error_message, size_t message_size) { std::string expr(expression); try { model->CalculateGraphPoints(expr, x_min, x_max); return 0; } catch (const std::exception& e) { strncpy(error_message, e.what(), message_size - 1); error_message[message_size - 1] = '\0'; return 1; } } WrGraphPoints* WrGetGraphPoints(Model* model) { GraphPoints points = model->GetGraphPoints(); WrGraphPoints* wrapper = new WrGraphPoints(); wrapper->x_size = points.x_val.size(); wrapper->y_size = points.y_val.size(); wrapper->x_val = new double[wrapper->x_size]; wrapper->y_val = new double[wrapper->y_size]; for (size_t i = 0; i < wrapper->x_size; ++i) { wrapper->x_val[i] = points.x_val[i]; } for (size_t i = 0; i < wrapper->y_size; ++i) { wrapper->y_val[i] = points.y_val[i]; } return wrapper; } }