With a delay of two months after their first official release I have now added my newest projects, libsgfc++ and SgfcKit, to the list of software projects.
libsgfc++ (GitHub project page) is a cross-platform C++ wrapper library around SGFC, the SGF Syntax Checker & Converter. SGFC is a command line utility written in C that reads and writes SGF (Smart Game Format) files. By wrapping SGFC’s functionality, libsgfc++ transforms the command line utility into a reusable software library that makes the functionality available in the form of an object-oriented API.
SgfcKit (GitHub project page) is an Objective-C wrapper library around libsgfc++, making the combined libsgfc++ / SGFC functionality available to Objective-C clients.
I originally wrote libsgfc++ and SgfcKit so that I could add SGF parsing and writing capabilities to Little Go (which happened in the 1.6.0 release). However, neither of the two libraries is tied to Little Go in any way, both are standalone projects that are perfectly usable by other clients out there.
Why write two libraries? Indeed, if the only target had been Little Go, which is written in Objective-C, then it would not have been necessary to write libsgfc++ at all - I could have simply designed SgfcKit as a direct wrapper around SGFC. However, I intended to make the SGFC functionality available to the widest possible audience, so I took the extra effort to create libsgfc++, because C++ is much wider used than Objective-C and there is the possibility that someone might take the time to create bindings to some other programming language or platform. Also it was a good exercise to re-acquaint myself with C++ and some of its modern features from the C++11/14/17/20 standards 😊.