Registered 2010-01-05 by Ferdinand Majerech

MiniINI is a a free/open source, minimalistic, fast and easy to use C++ library for reading INI (or CFG) files. It has no dependencies other than the standard library and should compile on any platform with a standard compliant C++ compiler with C99 support.

Main priority of MiniINI is, as its name suggests, minimalism and speed.
The goal is to create fastest INI parser possible without sacrificing ease of use.
MiniINI should be useful especially for game development,
for instance storing game settings, properties of units in strategy games, etc.
MiniINI can also check ini files it reads, and issue
warnings for the most common mistakes in ini code.
This should be useful mainly for users of programs based on MiniINI,
for instance game modders. MiniINI is already quite fast, being able
to load, parse and unload a ~1MB ini file with 512 sections in less than 50 ms.

At the moment, MiniINI can only read INI files, not write to them.
This should change in future versions.

MiniINI is released under the MIT/X license.

Features:

-INI parsing:
- Reads from 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 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 integer contains something else.

Project information

Maintainer:
Ferdinand Majerech
Driver:
Not yet selected
Development focus:

trunk series 

lp:miniini 
Browse the code

Programming Languages:
C++, Python
Licences:
MIT / X / Expat Licence
()

RDF metadata

View full history Series and milestones

miniini trunk series is the current focus of development

All bugs Latest bugs reported

All blueprints Latest blueprints

Get Involved

Announcements

  • MiniINI 0.9 released on 2010-07-13
    Another release of MiniINI has been completed. MiniINI 0.9 comes with almost ...
  • MiniINI 0.8 released on 2010-06-11
    I finished work on MiniINI 0.8. Most changes in this release are under the ho...
  • MiniINI 0.7.2 released on 2010-06-04
    I've released MiniINI 0.7.2, a bugfix release. This release fixes a memory le...
  • MiniINI 0.7.1 released on 2010-04-11
    I've just released MiniINI 0.7.1, a bugfix release. The only change in this r...
  • MiniINI 0.7 released on 2010-04-10
    Announcing release of MiniINI 0.7. This release finally adds support for tags...