#ifndef BIBLIOTEKA_H
#define BIBLIOTEKA_H
#include "mavka/tsil.h"
// мат
р64 бібліотека_мавки_Е_р64();
р64 бібліотека_мавки_ЛОГ10_р64();
р64 бібліотека_мавки_ЛОГ2_р64();
р64 бібліотека_мавки_ЛОГ2Е_р64();
р64 бібліотека_мавки_ЛОГ10Е_р64();
р64 бібліотека_мавки_ПІ_р64();
р64 бібліотека_мавки_КОРІНЬ1_2_р64();
р64 бібліотека_мавки_КОРІНЬ2_р64();
р64 бібліотека_мавки_синус_р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 бібліотека_мавки_корінь2_р64(р64 значення);
р64 бібліотека_мавки_стеля_р64(р64 значення);
р64 бібліотека_мавки_підлога_р64(р64 значення);
р64 бібліотека_мавки_округлити_р64(р64 значення);
р64 бібліотека_мавки_остача_від_ділення_р64(р64 а, р64 б);
р64 бібліотека_мавки_лог_р64(р64 значення);
р64 бібліотека_мавки_лог2_р64(р64 значення);
р64 бібліотека_мавки_лог10_р64(р64 значення);
// афс
void бібліотека_мавки_афс_видалити(п8* дані_шляху,
природне розмір_шляху,
void (*обробник)(природне видалено,
природне помилка,
адреса аргумент),
адреса аргумент);
void бібліотека_мавки_афс_дописати(п8* дані_шляху,
природне розмір_шляху,
п8* дані_даних,
природне розмір_даних,
void (*обробник)(природне помилка,
адреса аргумент),
адреса аргумент);
void бібліотека_мавки_афс_записати(п8* дані_шляху,
природне розмір_шляху,
п8* дані_даних,
природне розмір_даних,
void (*обробник)(природне помилка,
адреса аргумент),
адреса аргумент);
void бібліотека_мавки_афс_прочитати(п8* дані_шляху,
природне розмір_шляху,
void (*обробник)(п8* дані_даних,
природне розмір_даних,
природне помилка,
адреса аргумент),
адреса аргумент);
void бібліотека_мавки_афс_створити_папку(п8* дані_шляху,
природне розмір_шляху,
void (*обробник)(природне помилка,
адреса аргумент),
адреса аргумент);
// інет
#define МАВКА_ІНЕТ_УСПІХ 0
#define МАВКА_ІНЕТ_ПОМИЛКА_НЕВІДОМА 1000
#define МАВКА_ІНЕТ_ПОМИЛКА_НЕДОСТАТНЬО_ПАМʼЯТІ 1001
#define МАВКА_ІНЕТ_ПОМИЛКА_АРГУМЕНТУ 1002
#define МАВКА_ІНЕТ_ПОМИЛКА_АДРЕСА_ВИКОРИСТОВУЄТЬСЯ 1003
#define МАВКА_ІНЕТ_ПОМИЛКА_ЗʼЄДНАННЯ_ВІДХИЛЕНО 1004
#define МАВКА_ІНЕТ_ПОМИЛКА_ЗʼЄДНАННЯ_СКИНОТО 1005
#define МАВКА_ІНЕТ_ПОМИЛКА_МЕРЕЖА_НЕДОСТУПНА 1006
#define МАВКА_ІНЕТ_ПОМИЛКА_ХОСТ_НЕДОСТУПНИЙ 1007
#define МАВКА_ІНЕТ_ПОМИЛКА_ТАЙМАУТ 1008
#define МАВКА_ІНЕТ_ПОМИЛКА_КАНАЛ_ЗЛАМАНО 1009
#define МАВКА_ІНЕТ_ПОМИЛКА_ДОСТУПУ 1010
#define МАВКА_ІНЕТ_ПОМИЛКА_ЗАБАГАТО_ФАЙЛІВ 1011
#define МАВКА_ІНЕТ_ПОМИЛКА_АДРЕСА_НЕДОСТУПНА 1012
#define МАВКА_ІНЕТ_ПОМИЛКА_ПЕРЕПОВНЕННЯ_БУФЕРА 1013
#define МАВКА_ІНЕТ_ПОМИЛКА_МЕРЕЖА_ВІДМОВИЛА 1014
#define МАВКА_ІНЕТ_ПОМИЛКА_МЕРЕЖА_СКИНУТА 1015
#define МАВКА_ІНЕТ_ПОМИЛКА_ЗʼЄДНАННЯ_ПЕРЕРВАНО 1016
#define МАВКА_ІНЕТ_ПОМИЛКА_ВЖЕ_ПІДДОСЛІДЖЕНО 1017
#define МАВКА_ІНЕТ_ПОМИЛКА_НЕ_ПІДʼЄДНАНО 1018
#define МАВКА_ІНЕТ_ПОМИЛКА_ВХІД_ВИХІД 1019
#define МАВКА_ІНЕТ_ПОМИЛКА_НЕПРАВИЛЬНИЙ_ФАЙЛ 1020
#define БІБЛІОТЕКА_МАВКИ_ВИД_ІА_ІП4 4
#define БІБЛІОТЕКА_МАВКИ_ВИД_ІА_ІП6 6
// інет слуга
typedef void (*БібліотекаМавкиІнетСлугаОбробникЗапуску)(адреса адр_слуга,
природне помилка);
typedef void (*БібліотекаМавкиІнетСлугаОбробникПомилки)(адреса адр_слуга,
природне помилка);
typedef void (*БібліотекаМавкиІнетСлугаОбробникЗупинки)(адреса адр_слуга);
typedef void (*БібліотекаМавкиІнетСлугаОбробникЗнищення)(адреса аргумент);
typedef void (*БібліотекаМавкиІнетСлугаОбробникПідключенняЗвʼязку)(
адреса адр_слуга,
адреса адр_звʼязок);
typedef void (*БібліотекаМавкиІнетСлугаОбробникДанихЗвʼязку)(адреса адр_слуга,
адреса адр_звʼязок,
п8* дані,
природне розмір);
typedef void (*БібліотекаМавкиІнетСлугаОбробникСтіканняЗвʼязку)(
адреса адр_слуга,
адреса адр_звʼязок);
typedef void (*БібліотекаМавкиІнетСлугаОбробникЗакінченняЗвʼязку)(
адреса адр_слуга,
адреса адр_звʼязок);
typedef void (*БібліотекаМавкиІнетСлугаОбробникПомилкиЗвʼязку)(
адреса адр_слуга,
адреса адр_звʼязок,
природне помилка);
typedef void (*БібліотекаМавкиІнетСлугаОбробникВідключенняЗвʼязку)(
адреса адр_слуга,
адреса адр_звʼязок);
void бібліотека_мавки_інет_служити(
природне іа_вид,
п8* іа_дані,
природне іа_розмір,
природне порт,
БібліотекаМавкиІнетСлугаОбробникЗапуску обробник_запуску,
БібліотекаМавкиІнетСлугаОбробникПомилки обробник_помилки,
БібліотекаМавкиІнетСлугаОбробникЗупинки обробник_зупинки,
адреса аргумент,
БібліотекаМавкиІнетСлугаОбробникЗнищення обробник_знищення,
БібліотекаМавкиІнетСлугаОбробникПідключенняЗвʼязку
обробник_підключення_звʼязку,
БібліотекаМавкиІнетСлугаОбробникДанихЗвʼязку обробник_даних_звʼязку,
БібліотекаМавкиІнетСлугаОбробникСтіканняЗвʼязку обробник_стікання_звʼязку,
БібліотекаМавкиІнетСлугаОбробникЗакінченняЗвʼязку
обробник_закінчення_звʼязку,
БібліотекаМавкиІнетСлугаОбробникПомилкиЗвʼязку обробник_помилки_звʼязку,
БібліотекаМавкиІнетСлугаОбробникВідключенняЗвʼязку
обробник_відключення_звʼязку);
адреса бібліотека_мавки_інет_отримати_аргумент_слуги(адреса адр_слуга);
void бібліотека_мавки_інет_зупинити_слугу(адреса адр_слуга,
природне закрити_підключення);
// інет клієнт
typedef void (*БібліотекаМавкиІнетКлієнтОбробникПідключення)(адреса адр_звʼязок,
природне помилка);
typedef void (*БібліотекаМавкиІнетКлієнтОбробникДаних)(адреса адр_звʼязок,
п8* дані,
природне розмір);
typedef void (*БібліотекаМавкиІнетКлієнтОбробникСтікання)(адреса адр_звʼязок);
typedef void (*БібліотекаМавкиІнетКлієнтОбробникЗакінчення)(адреса адр_звʼязок);
typedef void (*БібліотекаМавкиІнетКлієнтОбробникПомилки)(адреса адр_звʼязок,
природне помилка);
typedef void (*БібліотекаМавкиІнетКлієнтОбробникВідключення)(
адреса адр_звʼязок);
typedef void (*БібліотекаМавкиІнетЗвʼязокОбробникЗнищення)(
адреса аргумент_звʼязку);
typedef void (*БібліотекаМавкиІнетЗвʼязокОбробникНадіслання)(
адреса адр_звʼязок,
адреса аргумент_надіслання);
typedef void (*БібліотекаМавкиІнетЗвʼязокОбробникЗакінчення)(
адреса адр_звʼязок,
адреса аргумент_закінчення);
void бібліотека_мавки_інет_підключитись(
природне іа_вид,
п8* іа_дані,
природне іа_розмір,
природне порт,
БібліотекаМавкиІнетКлієнтОбробникПідключення обробник_підключення,
БібліотекаМавкиІнетКлієнтОбробникДаних обробник_даних,
БібліотекаМавкиІнетКлієнтОбробникСтікання обробник_стікання,
БібліотекаМавкиІнетКлієнтОбробникЗакінчення обробник_закінчення,
БібліотекаМавкиІнетКлієнтОбробникПомилки обробник_помилки,
БібліотекаМавкиІнетКлієнтОбробникВідключення обробник_відключення,
адреса аргумент,
БібліотекаМавкиІнетЗвʼязокОбробникЗнищення обробник_знищення);
// returns 4 if IPv4
// returns 6 if IPv6
природне бібліотека_мавки_інет_отримати_іа_звʼязку(адреса адр_звʼязок,
природне* вихід_іа4,
п8* вихід_іа6);
void бібліотека_мавки_інет_записати_аргумент_звʼязку(
адреса адр_звʼязок,
адреса аргумент,
БібліотекаМавкиІнетЗвʼязокОбробникЗнищення обробник_знищення);
адреса бібліотека_мавки_інет_отримати_аргумент_звʼязку(адреса адр_звʼязок);
// returns true when queued
// returns false when buffer is full
логічне бібліотека_мавки_інет_звʼязок_надіслати(
адреса адр_звʼязок,
п8* дані,
природне розмір,
адреса аргумент,
БібліотекаМавкиІнетЗвʼязокОбробникНадіслання обробник);
void бібліотека_мавки_інет_звʼязок_закінчити(
адреса адр_звʼязок,
п8* дані,
природне розмір,
адреса аргумент,
БібліотекаМавкиІнетЗвʼязокОбробникЗакінчення обробник);
void бібліотека_мавки_інет_звʼязок_знищити(адреса адр_звʼязок);
// хттп
typedef void (*БібліотекаМавкиХТТПВідклик)(ціле помилка,
ціле код_статусу,
п8* дані_тіла,
природне розмір_тіла,
адреса аргумент);
void бібліотека_мавки_хттп_гет(п8* дані_урл,
природне розмір_урл,
БібліотекаМавкиХТТПВідклик відклик,
адреса аргумент);
#endif // BIBLIOTEKA_H