Table: All editor code files have been added from the flash drive.

The start date of development is September 12, 2024.
This commit is contained in:
2025-03-30 22:56:02 +05:00
parent 99cfae2dbf
commit b3981d174a
45 changed files with 3109 additions and 0 deletions

92
formulas.c Normal file
View File

@@ -0,0 +1,92 @@
/*
Файл - Реализация загрузки модулей формул и вызова функций их этих модулей.
Краткое описание системы модулей формул
Модели формул представляют из себя динамическую библиотеку,
имеющую специальную функцию экспорта таблицы функций для формульного
движка.
Данная Функция экспортирует в программу таблицу с указателями на
функции и наименование конкретной функции.
Наменования функций записаны в виде UTF-8 строки заканчивающейся
нуль-терминатором. Строка не должна начинаться с символов цифр, и не
должна включать в себя следующие символы "!","<","=",">","^","(",")",
"*","&",""", управляющих ASCII символов и других служебных символов.
Символ "$" считается разделителем между названием функции, описанием
выходных значений и описанием аргументов.
Пример:
"sum$d$eed"
\___/| \_/
название / | \описание аргументов функции - перечисление значений/ячеек
функции | типа double
|
Описание типа выходного значения - значение типа double
Примером вызова данной функции может быть следующая запись:
"=sum({3,4,5,6:9},A1,A2:C4,1,2,0)"
Типы аргументов и выходного значения имеют одинаковый вид записи,
в виде символа-обозначения типа:
d - double - Числовой и булевый тип. Булевые значения кодируются
в виде чисел, где: 1.0 соответствует значению TRUE
а 0.0 соответствет значению FALSE
s - string - Строковый тип данных, представляет из себя UTF-8
строку завершающуюся нуль-терминатором. Кроме этого,
строки в ячейках начинающиеся с символа "=" не
подпадают под данный тип, их тип вычисляется
формульным движком.
t - time - Тип представляющий собой дату и время
i - image - Значение представляющее собой 32 битное RAW изображение
с указанием размера и выравнивания линий. Может быть
использовано для вывода графика, но это не точно.
c - cell - Специальный тип - ячейка. Данный тип представляет собой
специальный ID, который указывает на "ячейку"(в том
числе виртуальную для константных занчений) у которой
можно узнать тип во время исполнения агоритма работы
функции. Запись в ячейки данного типа также позволяет
выбрать тип возвращаемого значения.
eX - enum - Специальный тип, представляющий из себя набор значений
типа X. Данный тип описывает перечесление значений
только в рамках одной записи, что позволяет получать
несколько таких перечеслений.
eeX - enums - Специальный тип - перечисление перечислений. Может быть
записан только один раз в конце названия. Все парамеры
которые идут далее и под этот тип будут неявно
преобразованы под тип enum.
b - button - Специальный тип - Кнопка. Данный тип нужен для создания
интерактивной кнопки, позволяющей
Так как у формул количество аргументов может быть достаточно большое, то в
функцию передаётся указатель на массив идентификаторов.
stdcall int (*formula)(uint32_t input_id, uint32_t* output_ids);
*/
#include "modules.h"
int formulas_init(module_t* this) {
//check and call 'tmodule_formulas' function
import_formula_t* (*module_get_formulas)(uint32_t);
module_get_formulas = _ksys_dlsym(this -> dll, "tmodule_formulas");
if (module_get_formulas) return 0;
this -> formulas = module_get_formulas(this -> pdata);
return 0
}
/*
https://senior-sigan.notion.site/e371029e51bf4748ab04f0c904f9fc0d
тип (*имя_указателя) (типы_параметров);
Например:
void (*message) (void);
тип (*имя_массива[размер]) (параметры)
Например:
double (*actions[]) (int, int)
*/