# libpom C/C++ parser for [POM configuration language](https://pom.computer). This library is implemented in C, with C++-friendly bindings available as well. See dedicated C++ README [here](cpp/README.md). ## About libpom has - small size (~30KB code+data) - support for custom memory allocation - no dependencies other than libc ## Building Build with ``` make -j`nproc` ``` Install with ``` sudo make install ``` You can also do `PROFILE=Debug make` to build with debug information. The `Makefile` creates a build directory and runs cmake for you by default. You can also do this manually for more control over cmake options: ``` mkdir special-build cd special-build # e.g. don't build C++ library, tests, or examples cmake -DLIBPOM_CXX=OFF -DLIBPOM_TESTS=OFF -DLIBPOM_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release .. make -j`nproc` ``` ## Basic usage ```c #include #include int main(void) { pom_error *error; pom_conf *conf = pom_load_path(NULL, "conf.pom", &error); if (!conf) { pom_error_print(error); free(error); return EXIT_FAILURE; } const char *indentation_type = pom_conf_get(conf, "indentation-type"); if (indentation_type) printf("Indenting with %s\n", indentation_type); else printf("No indentation type set!\n"); pom_conf_free(conf); } ``` Assuming you have run `make install`, you just need to add `-l:libpom.a` (or `-lpom` to use the shared library) to your compiler flags. See `examples/` directory for more examples. ## Contributing Contributions are welcome, including bug fixes, examples, improvements to documentation or code readability, and error message translations (see `errors.c`). ## License ```text Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ```