ЯП который будет напоминать pdx язык - lua подобный синтаксис, но чуть более сложный на данном моменте сделаный такие шаблоны исполнения:
- basicfunction
- функция которая может существовать только в скомпилированном виде
- особенность исполнения:
- функция принимает только те аргументы, которые способна поместить в defaultvalues, за исключением функций, которые могут быть описаны в модулях
- функция способна иметь аргументы по умолчанию - путем недозамены в defaultvalues
- для оптимизации организации и исполнения функций типа basicfunction функция исполняет операцию с указателями, которые определены, передача указателей на другой тип данных может дистабилизировать процесс исполнения
- самый быстрый из шаблонов исполнения
- function : basicfunction
- функция которая может быть определена когда угодно
- особенности создания:
- функция может использовать только те функции, что уже существуют
- при добавлении функции обазятельно нужно указать какие аргументы куда идут при исполнении
- особенность исполнения:
- функция принимает только те аргументы, которые способна поместить в defaultvalues, за исключением функций, которые могут быть описаны в модулях
- функция способна иметь аргументы по умолчанию - путем недозамены в defaultvalues
- для оптимизации организации и исполнения функций типа function функция исполняет операцию с указателями, которые определены, передача указателей на другой тип данных может дистабилизировать процесс исполнения
- второе место по скорости среди шаблонов исполнения
- typedfunction : function
- функция которая может быть определена когда угодно
- особенности создания:
- функция может использовать только те функции, что уже существуют
- при добавлении функции обазятельно нужно указать какие аргументы и типы куда идут при исполнении
- особенность исполнения:
- функция принимает только те аргументы, которые способна поместить в defaultvalues + в вектор типов, который имеет тот же размер, что и defaultvalues, за исключением функций, которые могут быть описаны в модулях
- функция должна получить все значения и типы аргументов как указатель на единый вектор
- функция имеет valuetypes, а это означает, что аргументы может иметь несколько допустимых значений
- это самый низкоуровневый тип защиты от выполнения basicfunction с указателями на неверный тип объекта (указатель на значение ошибки должен быть не nullptr)
- третье место по скорости среди шаблонов исполнения
- subtypedfunction : typedfunction
- функция которая может быть определена когда угодно
- наследует особенности шаблона typedfunction, лишь два важных изменения
- используется подтип (то есть реальный тип, без логических флагов, это старшие 32 бита)
- muxfunction : function
- функция которая может быть определена когда угодно
- наследует особенности шаблона function, лишь два важных изменения
- будет выполнена только одна из добавленных функций, а какая из, будет определено в mux
- mux получит только те аргументы, что выходят за пределы индексов defaultvalues (плюс ссылку на индекс функции для выполнения)
- triggeredfunction (скоро будет описание)
- cyclefunction (скоро будет описание) любая функция считается существующей, если ее шаблон инициализирован (даже если поля - нет, но поле name необходимо для поиска, так что если оно не инициализировано, то функцию не возможно будет добавить)
на данный момент тесты прошли basicfunction, function, muxfunction (тесты для typedfunction не проводились)
любая функция имеет систему try catch - то есть функция вызванная с ошибкой не будет выполнена, как и функции после нее
чтобы избежать изменения данных до throw, нужно вызвать через unreliablefunction : typedfunction, где сначала будет вызов функций с указателем на значение ошибки и если оно осталось нулевым, то запустить функции с вызовом с указателем на nullptr по значению ошибки для такой системы любая basicfunction должна будет проверять указатель на значение ошибки, если он не равен nullptr и не выполнять свои действия, а если будет получен nullptr - выполнить без проверки typedfunction и muxfunction способны также изменить значение ошибки и не если это случится их функции не будут выполнены function, typedfunction и muxfunction вне зависимости от указателя на значение ошибки начнут выполнять свои функции function не вызывает изменение значения ошибки, а вот функции которые она вызывает (кроме function) - способны если любая функция вызывается с указателем наошибку равным nullptr, то она будет считать, что ее аргументы верные и исполнение не приведет к ошибке если любая функция вызывается с указателем наошибку не равным nullptr, то она не будет выполнять свои действия, но будет взаимодействовать со значением ошибки итого:
-
указатель на ошибку влияет на basicfunction, которая не выполнит свое дейсвтие если он не равен nullptr (если это не соблюдается в модулях, то эти функции не безопасные)
-
указатель на ошибку влияет на typedfunction и muxfunction, которые провзаимодействуют со значением ошибки при несоответствии аргументов и их типов
-
значение ошибки изменится, если typedfunction и muxfunction при верных аргументах и их типах получат исключение от их функций
-
значение ошибки изменится, если function получит исключение от ее функций
-
stream : basicfunction
- выполняет функцию в отдельном потоке, может быть detached, но несмотря на это может быть контролируем, путем передачи в него errorcode через экземпляр stream