Ygor: a C++ utility library

Hal Clark


Ygor (pronounced ‘eye-gore’) is a GPLv3 C++ utility library. It is used to share common math, physics, and misc utility functions amongst a handful of disparate projects.

Ygor is actively maintained as part of the DICOMautomaton suite.


All source code is available here.


Ygor contains routines for strings, files and directories, networking, thread pools, work queues, vector math, image data, simple config file parsing, mesh processing, various IO formats, and argument parsing, among other things. Ygor is not a comprehensive library – nor will it ever be. It exists to support ongoing (unrelated) projects.


Ygor was written to factor common code amongst a handful of disparate projects. Therefore, like the Igor of Frankenstein-fame, it is hideous. It exists to stand in the shadows and provide support. It is primarily composed of ugly (but useful) code which other projects require (but don’t want to touch with a ten-foot-pole).


Q. Why not use other (more mature, more comprehensive, better tested) utility libraries?
A. Ygor was written to factor common code amongst a handful of projects. Ygor fits the needs of the author quite well.

Q. What is the best way to use libYgor?
A. Copying whatever source you need directly into your project is probably the easiest (and is encouraged). A single shared library and a single static library are provided for linking. More fine-grained libraries can be produced from individual components (e.g. networking routines only), if required.

Q. How do I contribute?
Q. Where do I send bug reports?
Q. How do I contact the author?
A. Please send comments, questions, and pull requests via opening an issue on the project page here


Please send questions, comments, or pull requests here.