Вот это место
int decode(int correct_mode, int *errs, unsigned long *cw)
сделать так:
public int[] decode(int correct_mode, int errs, int cw);
Соответственно внутри функции везде вместо
*errs и *cs
сделать без звезд, то есть так:
errs и cs
ну и в конце функции, там где return(2), возвращаем так:
int[] arr = int long[3];
arr[1]=2;
arr[1]=errs;
arr[2]=cs;
return arr;
return 0 и return 1 аналогично.
А вызов оформляем так:
int[] arr = decode(correct_mode, errs, cw);
result = arr[0];
errs = arr[1];
cw = arr[2];
Вроде бы ничего не забыл.
Короче, возвращаем результат в виде массива, а потом десериализируем массив.
Можно, кстати и изначально в виде массива передавать,
внутри этот массив «курочить» и возвращать его же как результат.
А можно и вообще ничего не передавать и не возвращать, все внутри класса, то есть в итоге мы придем к тому, что написал уважаемый
Maccimo в варианте a)
Но если стоит задача тупо переписать код С++ на Java без рефакторинга, то мой метод более идеален.