Convert soi.c to C++