Features
Features of MiniINI as of MiniINI 0.9 :
INI parsing
- Reads most common ini/cfg files, or from user provided buffer containing contents of an ini/cfg file. This allows the user e.g. to load data from a compressed file and pass it to MiniINI.
- Can read headerless ini/cfg files.
- Only plain ASCII files are supported. There is no support for Unicode, and there probably never will be.
- Case-sensitive. That means that [CASE], [case] and [Case] are not the same and there is a difference between Tag= and TAG=
-
Ignores all spaces, i.e. no spaces/tabs in tags or values. For
example:
tag=125685
and
t a g = 125 685
both have the same meaning. Spaces might be supported in the future for values, if there will be a need, but are not planned at the moment. - Can read arrays of data from tags with multiple, comma separated values.
-
Can also read arrays from numbered sequences of tags, for example:
a1=1
a2=2
a3=3 - Cannot write to ini files at this time. This should be implemented in future.
Interface
- Provides methods to read strings, ints, floats and bools from inifile and checks the ini data for errors, allowing the programmer to use their own default values.
- Supports both plain strings and arrays and STL strings and vectors. STL functionality can be disabled for more minimalism.
- Supports iteration over contents of INI files.
Configurability
- Supports single line comments with a configurable comment character. So if you want to use '#' instead of ';' , you can. There is no support for multiple comment characters at the same time for performance reasons.
- Name=value separator character is configurable as well, '=' by default.
Documentation
- Tutorials detailing every feature of the library
- Maintained API documentation
Performance
- Extremely fast. Even multi-MB ini files with hundreds or thousands of sections can be processed in fractions of a second.
- Low memory usage. Data structure overhead is reduced as much as possible.
Debugging
- Debug build can issue warnings to the user using a callback function specified by the programmer. For example when a tag from which the program tries to load an int contains something else.