// 2025-2026 Богданович Давид Когут Прихожденко
взяти визначення КД;
взяти визначення пристрій_мавки;
// почати мавку з аргументами кд, і файлами ю8
дія почати_мавку_кд_ю8(кількість_аргументів: природне, аргументи: *кд) -> ціле {
змінна успіх: логічне;
змінна код_помилки: ціле;
змінна п: природне;
змінна М: *мавка::Машина;
змінна текстові_аргументи: **мавка::ПредметТексту;
М = пристрій_мавки_створити_машину();
текстові_аргументи = мавка::виділити<*мавка::ПредметТексту>(М, кількість_аргументів);
п = 0;
поки п < кількість_аргументів {
текстові_аргументи[п] = М.створити_текст(аргументи[п]);
п += 1;
}
код_помилки = мавка::почати(
М,
кількість_аргументів,
текстові_аргументи,
);
якщо код_помилки {
стрибнути вихід;
}
мавка::звільнити(М, текстові_аргументи);
мавка::розлаштувати_машину(М);
вихід:
вернути код_помилки;
}
// почати мавку з аргументами ю8, і файлами ю8
дія почати_мавку_ю8_ю8(кількість_аргументів: природне, аргументи: *ю8) -> ціле {
змінна успіх: логічне;
змінна п: природне;
змінна аргументи_кд: *кд;
змінна код_помилки: ціле;
змінна позиція_помилки: природне;
аргументи_кд = пристрій_мавки_виділити(кількість_аргументів * кд.розмір) як *кд;
п = 0;
поки п < кількість_аргументів {
успіх = пристрій_мавки_перекодувати_ю8_в_кд(
аргументи[п].розмір,
аргументи[п].дані,
аргументи_кд[п].розмір::адреса,
аргументи_кд[п].дані::адреса,
позиція_помилки::адреса,
);
якщо не успіх {
кількість_аргументів = п;
код_помилки = 1;
стрибнути вихід;
}
п += 1;
}
код_помилки = почати_мавку_кд_ю8(
кількість_аргументів,
аргументи_кд
);
вихід:
п = 0;
поки п < кількість_аргументів {
пристрій_мавки_звільнити(аргументи_кд[п].дані);
п += 1;
}
пристрій_мавки_звільнити(аргументи_кд);
вернути код_помилки;
}