Статус репозитория:
Это лишь экспериментальная версия оболочки. В ней запросто могут найтись ошибки и недоработки. Обо всех проблемах, пожалуйста, сообщайте лично или через "Issues" на GitHub.
Весь проект разделён на множество заголовочных файлов:
-
main.c
отвечает за запуск интерфейса; -
config.h
позволяет включить или отключить определённый модуль; -
template.h
содержит список доступных функций и структур для работы с числами, дробями и многочленами.
В папке interface/
:
-
interface.h
выводит интерфейс и обеспечивает ввод команд; -
list.h
выводит справку по доступным модулям; -
call.h
вызывает функции из директорииinterface/call/
; -
system.h
содержит функции для низкоуровневой работы с памятью; -
numbers.h
содержит функции для работы с числами, дробями и многочленами; -
io.h
упрощает печать и ввод символов; -
locale.h
содержит элементы текстовой части интерфейса; -
include.h
отвечает за включение в проект модулей, прописанных вconfig.h
.
В interface/call/
содержатся файлы с обёртками для каждого модуля.
В директории modules/
содержатся сами модули.
Каждому модулю доступны функции и структуры для работы с числами, дробями и многочленами, описанные в template.h
. Они позволяют упростить взаимодействие модулей и работу с памятью. Например, нет надобности в проверке успешности выделения памяти — в случае возникновения ошибки интерфейс самостоятельно очистит ранее выделенную память и корректно завершит работу. Однако стоит отметить, что интерфейс неустойчив против ошибок вроде "Segmentation fault" или "Buffer overflow" — таким образом, ответственность за обработку таких ситуаций ложится на разработчика.