files
Table/formulas.c
Mikhail Frolov b3981d174a Table: All editor code files have been added from the flash drive.
The start date of development is September 12, 2024.
2025-03-30 22:56:32 +05:00

92 lines
5.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Файл - Реализация загрузки модулей формул и вызова функций их этих модулей.
Краткое описание системы модулей формул
Модели формул представляют из себя динамическую библиотеку,
имеющую специальную функцию экспорта таблицы функций для формульного
движка.
Данная Функция экспортирует в программу таблицу с указателями на
функции и наименование конкретной функции.
Наменования функций записаны в виде 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)
*/