Тогда что получается? Если с си переводим алгоритм, то тип аргументов сишних функций (union cairo_path_data_t) так и остаётся таким же типом в функциях оберона (или КП?), а внутри этих функций - явное приведение вместо прямого обращения к полям (а потом уже - обращение)?
Не понятно что выиграли, но получили более громоздкую запись. И - при объявлении типов, и - при приведении в функциях.