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.