Skip to content

evilncrazy/ctoml

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 

Ctoml

A statically typed parser for @mojombo's TOML, written in C++11. Currently supports commit c6ea50d of the TOML spec, with a few exceptions:

  • Unicode support for strings
  • Null characters ('\0') in string literals

Usage

#include "toml.h"

#include <iostream>

using namespace ctoml;

int main() {
	TomlParser toml("example.toml");
	auto doc = toml.parse();

	// Get the value of a key
	auto val = doc.get("potatoe.cake");

	// You can print it out
	std::cout << val->to_string() << std::endl;

	// Or check equality
	if (val->equals("foobar")) {
		// ....
	}

	// To use the primitive value of a key, you can do:
	std::cout << doc.get_as<float>("pi") * 2 << std::endl;

	// We can iterate through all the keys
	for (auto it = doc.cbegin(); it != doc.cend(); ++it) {
		std::cout << it->first << " = " << it->second->to_string() << std::endl;
	}

	// We can modify the document on the fly
	doc.set("title", TomlValue::create_string("Hello world!"));

	// You can even write the document to a stream
	doc.write(std::cout);
}

Command line tool

A command line tool that parses TOML is provided (src/main.cc). It can take a file as input. If the parse is successful, it spews out every key and its value.

./ctoml "path/to/file"

Licence

This software is released under the MIT licence (see LICENCE).

Todo

  • Needs more powerful write to stream methods
    • Write only certain key groups to a stream

About

Fast TOML parser written in C++

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages