libHX aids in quickly writing up C and C++ data processing
programs, by consolidating tasks that often happen to be open-coded, such as
(simple) config file reading, option parsing, directory traversal, and others,
into a library. The focus is on reducing the amount of time (and secondarily,
the amount of code) a developer has to spend for otherwise implementing
such.

Quicklinks

Many Linux distributions already ship packages — just use their
package system! See Distro Availability
Matrix for distros that we know to have it.

Components (by all means
not all)

Originally created to provide a data structure
like Perl's associative
arrays. Multiple models and underlying storage data
structures are
available (unordered hash-based map, ordered rbtree).

linked lists (HXdeque_*, HXlist_*,
HXclist_*)

Doubly-linked lists
are suitable for both providing stack and queue
functionality. Different implementations are available for use,
depending on situation.

directory handling (HXdir_*)

HXdir provides for opendir-readdir-closedir
semantics. Windows uses a different kind, so it had to be naturally
covered up. On the other hand, Solaris's readdir()
implementation is nasty in terms of memory management. HXdir covers
up these discrepancies and provides a sane Linux-style readdir.

HXformat is something in the direction of
printf(), but the argument list is not implemented by
means of varargs, so is flexible even beyond compile time. You can
change the format string — in fact, just let the user configuration
provide it — without having to worry about argument evaluation
problems. Positional and optional arguments are simply freely
choosable.

memory containers, auto-sizing string ops (HXmc_*)

At the cost of slightly increased number memory
allocations as you work with the buffers, the hmc collection of
functions provide scripting-level semantics for strings. Appending
to a string is simply hmc_strcat(&s, "123") [cf.
$s .= "123"], without having to worry about overflowing
a buffer.

option parsing (HXoption_*)

Put blunt, libpopt failed to do some elementary
things and there was no maintainer to fix it. Well, it's packaged
with rpm which already diverged in all distros.
HXoption is table- and callback-based, much like popt.

shellconfig parser (HXshconfig_*)

Parsers shconfig files. Their format is a subset of
shell code. Files in /etc/sysconfig are commonly
shconfig-style.