Thanks to visit codestin.com
Credit goes to Github.com

Skip to content
generated from nodef/asio.cxx

Fastest type-safe parsing library in the world for C++14 or C++17 (up to 300x faster than std::regex); Adam Yaxley (2017).

License

Notifications You must be signed in to change notification settings

nodef/unformat.cxx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Source available on GitHub

Unformat

Parsing and extraction of original data from brace style "{}" formatted strings. It basically unformats what you thought was formatted for good. It is developed and maintained by Adam Yaxley.


Installation

Run:

$ npm i unformat.cxx

And then include unformat.h as follows:

// main.cxx
#include "node_modules/unformat.cxx/unformat.h"

int main() { /* ... */ }

And then compile with clang++ or g++ as usual.

$ clang++ main.cxx  # or, use g++
$ g++     main.cxx

You may also use a simpler approach:

// main.cxx
#include <unformat.h>

int main() { /* ... */ }

If you add the path node_modules/unformat.cxx to your compiler's include paths.

$ clang++ -I./node_modules/unformat.cxx main.cxx  # or, use g++
$ g++     -I./node_modules/unformat.cxx main.cxx

Quick Example

Unformat is simple to use and works on all basic types. See the below example for extracting a std::string and an 'int'

std::string name;
int age;

unformat("Harry is 18 years old.", "{} is {} years old.", name, age);
// name == "Harry" and age == 18

As an optimisation, if the format string is known at compile time, it can be parsed into a constant expression by making use of ay::make_format. In tests, this increases runtime speed by a factor of 3 or 4.

std::string name;
int age;

constexpr auto format = ay::make_format("{} is {} years old.");
unformat("Harry is 18 years old.", format, name, age);
// name == "Harry" and age == 18

How do I use this library?

Unformat is a single-file header only library so integration is easy. All you need to do is copy unformat.h into your project, and away you go.


Public Domain

This software is completely open source and in the public domain. See LICENSE for details.


Contributing

Pull requests are very welcome. You may also create Issues and I will have a look into it as soon as I can.


Speed

Unformat is super awesome back to the future style lightning fast compared to traditional parsing methods. Below is the output from Google Benchmark on unformat_benchmark.cpp. Great Scott!

Run on (16 X 2993 MHz CPU s)
03/13/19 18:10:57
--------------------------------------------------------------------
Benchmark                             Time           CPU Iterations
--------------------------------------------------------------------
Unformat                             72 ns         71 ns    8960000
Unformat_ConstChar                   69 ns         70 ns    8960000
Unformat_ConstexprMakeFormat         36 ns         35 ns   19478261
StdStringStream                     844 ns        854 ns     896000
StdRegex                           9975 ns      10010 ns      64000
StdScanf                           1716 ns       1726 ns     407273


SRC ORG

About

Fastest type-safe parsing library in the world for C++14 or C++17 (up to 300x faster than std::regex); Adam Yaxley (2017).

Resources

License

Stars

Watchers

Forks