// 2025-2026 Богданович Давид Когут Прихожденко (кдб.дійсність.укр)
взяти визначення КД;
взяти визначення мавка/пристрій;
дія КД_виділити_сиру_памʼять(система: *КД::Система, розмір: природне) -> *п8 {
вернути пристрій_мавки_виділити(розмір) як *п8;
}
дія КД_перевиділити_сиру_памʼять(система: *КД::Система, значення: *п8, новий_розмір: природне) -> *п8 {
вернути пристрій_мавки_перевиділити(значення, новий_розмір) як *п8;
}
дія КД_звільнити_сиру_памʼять(система: *КД::Система, значення: адреса) {
пристрій_мавки_звільнити(значення);
}
дія пристрій_мавки_перекодувати_ю8_в_кд(розмір: природне, дані: *п8, вихід_розміру: *природне, вихід_даних: **п8, вихід_позиції_помилки: *природне) -> логічне {
змінна система_КД = КД::Система {
дані = пусто,
виділити_сиру_памʼять = КД_виділити_сиру_памʼять,
звільнити_сиру_памʼять = КД_звільнити_сиру_памʼять,
перевиділити_сиру_памʼять = КД_перевиділити_сиру_памʼять
};
змінна вихід: кд;
змінна позиція_помилки: природне;
змінна успіх = КД::перекодувати_з_ю8(
система_КД::адреса,
ю8 { дані, розмір },
ні,
так,
вихід::адреса,
позиція_помилки::адреса
);
якщо успіх {
вихід_розміру::вміст = вихід.розмір;
вихід_даних::вміст = вихід.дані;
}
вернути успіх;
}
// нул-термінатед
дія пристрій_мавки_перекодувати_кд_в_ю8(розмір: природне, дані: *п8, вихід_розміру: *природне, вихід_даних: **п8, вихід_позиції_помилки: *природне) -> логічне {
змінна система_КД = КД::Система {
дані = пусто,
виділити_сиру_памʼять = КД_виділити_сиру_памʼять,
звільнити_сиру_памʼять = КД_звільнити_сиру_памʼять,
перевиділити_сиру_памʼять = КД_перевиділити_сиру_памʼять
};
змінна вихід: ю8;
змінна позиція_помилки: природне;
змінна успіх = КД::перекодувати_в_ю8(
система_КД::адреса,
кд { дані, розмір },
так,
вихід::адреса,
позиція_помилки::адреса
);
якщо успіх {
вихід_розміру::вміст = вихід.розмір;
вихід_даних::вміст = вихід.дані;
}
вернути успіх;
}