Коллоквиум по дискретной математике

Статус репозитория:

Build status Test status

Это лишь экспериментальная версия оболочки. В ней запросто могут найтись ошибки и недоработки. Обо всех проблемах, пожалуйста, сообщайте лично или через "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" — таким образом, ответственность за обработку таких ситуаций ложится на разработчика.