https://github.com/hyperrealm/libconfig
libconfig – C/C++ Configuration File Library
INI 포맷보다 진보된 계층 구조의 형태의 포맷을 가지는 Configuration 파일 Reader/Writer 라이브러리
Libconfig is a simple library for processing structured configuration files, like this one: test.cfg. This file format is more compact and more readable than XML. And unlike XML, it is type-aware, so it is not necessary to do string parsing in application code.
Libconfig is very compact — a fraction of the size of the expat XML parser library. This makes it well-suited for memory-constrained systems like handheld devices.
The library includes bindings for both the C and C++ languages. It works on POSIX-compliant UNIX systems (GNU/Linux, Mac OS X, Solaris, FreeBSD) and Windows (2000, XP and later).
#----------------------------
# Example Configuration File
#---------------------------
#
application:
{
/* This section defines some settings for our
* main application window, such as size and
* position.
*/
window:
{
title = "My Application";
size = { /* width */ w = 640; /* height */ h = 480; };
pos = { x = 350; y = 250; };
};
a = 5;
b = 6;
ff = 1E6;
test-comment = "/* hello\n \"there\"*/";
test-long-string = "A very long string that spans multiple lines. "
/* but wait, there's more... */ "Adjacent strings are automatically"
" concatenated.";
test-escaped-string = "\"This is\n a test.\"";
group1:
{
x = 5; y = 10;
my_array = [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ];
flag = TRUE;
group2: { zzz = "this is a test"; };
states = [ "CT", // Connecticut
"CA", // California
"TX", // Texas
"NV", // Nevada
"FL" // Florida
];
};
/* this would cause an error */
// a = "hi!";
};
binary = [ 0xAA, 0xBB, 0xCC ];
list = ( ( "abc", 123, true ), 1.234, ( /* an empty list */ ) ,[ 1, 2, 3 ],
{ a = (1, 2, true); } );
books = ( "inventory",
{ title = "Treasure Island";
author = "Robert Louis Stevenson";
price = 29.99;
qty = 5; },
{ title = "Snow Crash";
author = "Neal Stephenson";
price = 9.99;
qty = 8; },
{ } );
# miscellaneous stuff
misc:
{
port = 5000;
pi = 3.14159265;
enabled = FALSE;
mask = 0xAABBCCDD;
unicode = "STARGΛ̊TE SG-1"; // UTF-8 string
bigint = 9223372036854775807L;
bighex = 0x1122334455667788L;
};
'블로그 (Blog) > 개발로그 (Devlogs)' 카테고리의 다른 글
Msys2 (0) | 2024.03.18 |
---|---|
GNU GPL과 LGPL의 차이점 (0) | 2024.03.18 |
Virtual frame buffer driver (0) | 2024.03.18 |
오픈소스 LSF 기반의 스케쥴러 openlava (0) | 2024.03.18 |
Helix 형상에 메시까지.. (0) | 2024.03.16 |