// 2025-2026 Богданович Давид Когут Прихожденко (кдб.дійсність.укр)

/* Бібліотека Мавки */

взяти визначення мавка;

простір мавка {
  простір бібліотека {
    структура Дані {
      розмір: природне;
      дані: *п8;
    }
  }
}
// ВАЖЛИВО: параметри дій бібліотеки НЕ ЗМІНЮВАТИ! інакше прийдеться змінювати ВСЮДИ (віндовс, лінукс, макос, васм)
//          якщо треба щось таке зробити, то треба створити нову дію!
//          сумісність цих дій між версіями має завжли зберігатись!
//          це головна біль потім міняти їх у Васм!
дія бібліотека_мавки_синус_р64(значення: р64) -> р64;
дія бібліотека_мавки_косинус_р64(значення: р64) -> р64;
дія бібліотека_мавки_тангенс_р64(значення: р64) -> р64;
дія бібліотека_мавки_арксинус_р64(значення: р64) -> р64;
дія бібліотека_мавки_арккосинус_р64(значення: р64) -> р64;
дія бібліотека_мавки_арктангенс_р64(значення: р64) -> р64;
дія бібліотека_мавки_арктангенс2_р64(а: р64, б: р64) -> р64;
дія бібліотека_мавки_абсолютне_р64(значення: р64) -> р64;
дія бібліотека_мавки_експонента_р64(значення: р64) -> р64;
дія бібліотека_мавки_корінь_р64(значення: р64) -> р64;
дія бібліотека_мавки_стеля_р64(значення: р64) -> р64;
дія бібліотека_мавки_підлога_р64(значення: р64) -> р64;
дія бібліотека_мавки_округлити_р64(значення: р64) -> р64;
дія бібліотека_мавки_видалити(дані_шляху: *п8, розмір_шляху: природне) -> логічне;
дія бібліотека_мавки_дописати_файл(дані_шляху: *п8, розмір_шляху: природне, дані: *п8, розмір_даних: природне) -> логічне;
дія бібліотека_мавки_записати_файл(дані_шляху: *п8, розмір_шляху: природне, дані: *п8, розмір_даних: природне) -> логічне;
дія бібліотека_мавки_прочитати_файл(дані_шляху: *п8, розмір_шляху: природне, вихід: *мавка::бібліотека::Дані) -> логічне;
дія бібліотека_мавки_створити_папку(дані_шляху: *п8, розмір_шляху: природне) -> логічне;

простір мавка {
  простір бібліотека {
    стала Е = 2.71828182845904523536;
    стала ЛОГ2Е = 1.44269504088896340736;
    стала ЛОГ10Е = 0.434294481903251827651;
    стала ЛОГ2 = 0.693147180559945309417;
    стала ЛОГ10 = 2.30258509299404568402;
    стала ПІ = 3.14159265358979323846;
    стала КОРІНЬ2 = 1.41421356237309504880;
    стала КОРІНЬ1_2 = 0.707106781186547524401;

    структура КористувацькіДаніБібліотекиМавки {
      взято__мат: *Притриманий; // ПредметМодуля
      взято__фс: *Притриманий; // ПредметМодуля
      взято__читати: *Притриманий; // ПредметДії
    }

    дія ініціалізувати(М: *Машина);

    дія записати_дію__мат__син(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__кос(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__тан(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__асин(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__акос(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__атан(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__абс(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__експ(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__кор(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__верх(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__низ(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__мат__ціле(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія ініціалізувати__мат(М: *Машина, предмет_модуля: *ПредметМодуля);

    дія записати_дію__фс__видалити(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__фс__дописати(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__фс__записати(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__фс__прочитати(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія записати_дію__фс__створити_папку(М: *Машина, предмет_модуля: *ПредметМодуля);
    дія ініціалізувати__фс(М: *Машина, предмет_модуля: *ПредметМодуля);

    дія створити_дію__читати(М: *Машина) -> *ПредметДії;
  }
}