Lendo arquivos TOML com C

Você fazia ideia dessa possibilidade? pois é, por um tempo eu também não fazia ideia, mas por a caso vasculhando pela web acabei encontrando essa biblioteca C que é extremamente fácil e simples de usar.

17/05/2023

O que são arquivos TOML?

Com o acrônimo de "Tom's Obvious, Minimal Language" (do inglês: "Linguagem Mínima Óbvia do Tom") os arquivos TOML são arquivos de configuração criados com o intuito de serem mais fáceis para a leitura humana, usando uma sintaxe extremamente simples e legível.

exemplo:
# Trecho de código TOML retirado da Wikipédia.

title = "Exemplo TOML"
            
    [owner]
        name = "Tom Preston-Werner"
            
# Datas são um tipo nativo
        dob = 1979-05-27T07:32:00-08:00
            
    [database]
        server = "192.168.1.1"
        ports = [ 8001, 8001, 8002 ]
        connection_max = 5000
        enabled = true
            
# Indentação é permitida mas não obrigatória
    [servers.alpha]
          ip = "10.0.0.1"
          dc = "eqdc10"
            
    [servers.beta]
          ip = "10.0.0.2"
          dc = "eqdc10"
            
    [clients]
        data = [ ["gamma", "delta"], [1, 2] ]
            
# Quebras de linha são
# permitidas dentro de arrays

        hosts = [
          "alpha",
          "omega"
        ]
        

A Biblioteca tomlc99

A biblioteca tomlc99 é uma biblioteca de parsing de arquivos TOML escrita em C. O código fonte para uso livre e aberto está disponível no Github por este link aqui: tomlc99.

Instalação

Você precisará de Git e make para a instalação.

Digite os comandos a seguir:
$~ git clone https://github.com/cktan/tomlc99.git
$~ cd tomlc99/
$~ make install
            

Alternativamente você também pode fazer o make install assim:

$~ make install prefix=/a/file/path
            

Isso instalará dentro de um caminho de inclusão de biblioteca pra você poder usar dentro dos seus arquivos C da seguinte maneira:

#include <toml.h>

int main(int argc, char **argv) { 
    printf("Texto Exemplo\n");
    return 0;
}

Alternativamente você também pode só adicionar os arquivos toml.h e toml.c nos diretórios do projeto em que você estiver trabalhando. Eu particularmente prefiro fazer assim.

No geral isso é tudo, para mais informações de utilização das funções da biblioteca leia o arquivo toml_sample.c ou leia a documentação.