본문으로 바로가기

libconfig

category 블로그 (Blog)/개발로그 (Devlogs) 2024. 3. 18. 14:38

https://github.com/hyperrealm/libconfig

libconfig – C/C++ Configuration File Library

libconfig-master.zip
3.68MB


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