Anonymous
11/29/2020 (Sun) 14:42:23
No.8164
del
Ну вот, здешний движок символы съел
...
В ней есть свой вектор, но называется он vec!N!<T>. Его суть в том, что размер статический а внутри структуры есть псевдонимы x,y,z,w или r,g,b,a. И это псевдонимы можно объединять для получения другого вектора. Например (vec4<float> a).xz это будет vec2<float> со значениями x и z. Наверное, задефайню частные случаи вектора vec!N!f, vec!N!l, vec!N!s, vec!N!u, vec!N!b для float, long, ssize, usize (или s32 и u32, хм), bool соответсвенно.
Особняком стоит библиотека dapa, которая по интерфейсу будет почти копиркой с pyparsing. Использовать для парсинга различных итерейблов (статических массивов, mem.vector и другие).
Потом библиотеки для ввода-вывода io, stdio, fs, repr. io это просто интерфейс для взаимодействия с потоками, подобный сишному FILE* + fread,fwrite,fopen и т.д. Только более гибкая для различных гипотетических ОС. Например, мне не нравится, что в линуксе нельзя в файловом названии ставить '/', а ведь это всего лишь 47. Самое обычное число. Ни 0, ни 1, ни 2, ни 255, ни 254. Поэтому я собираюсь сделать так, чтобы можно было вектор или массив файловых названий пересылать. Например ['/','home','cloudnite','myfile.txt'] в линуксе преобразуется в '/home/cloudnite/myfile.txt', а в другой ОС может подругому. В винде с обратным слешем, например, хоть это и не обязательно. Если пользователь плюётся от такого, то пусть пишет стандартный путь '/home/cloudnite/myfile.txt' и он будет работать только на линуксе, винде, макос (наверное) и ещё парочке топ-6 самых популярных ОС.
stdio это просто набор констант для stdin, stdout, stderr.
fs это для взаимодействия с файловой системой — создавать директории, удалять файлы, читать директории, а, может быть, даже, искать файлы по тегам. Не уверен, нужен ли такой функционал тут. Точнее нужен, но не уверен как его стандартизировать, ведь мало кто на практике имеет дело с ФС, поддерживающими теги на файлах.
repr это просто библиотека для форматирования и вывода в хуман-ридейбл вид всяких структур и прочих переменных. Думаю так, что надо будет каждому типу оверлоадить функцию _repr_. Если функция определена для типа, то инстантс (так как это темплейт) format/print/ещё чего-то вызовет его для получения строки.
Потом пойдут библиотеки для хранения, загрузки и записи растровых изображений, звуков, 3D-моделей. video, audio и другие названия я не придумал.
Затем идёт библиотека mesh (или другое название придумаю), которая хранит набор вертексов в N-мерном пространстве. Вертексы могут быть физическими, а могут быть управленческими для нурбсов и быть связаны линией, полигоном, объёмом (возможно). Для неё будет сделать ряд модулей для скелетной анимации, булевых операций, различных модификаторов как в блендере, всяких обработок, обсчётов и т.д.