GitHub - Viatorus/emio: A safe and fast high-level and low-level character input/output library for bare-metal and RTOS based embedded systems with a very small binary footprint. (original) (raw)

logo

Continuous Integration codecov Conan Center

em{io} is a safe and fast high-level and low-level character input/output library for bare-metal and RTOS based embedded systems with a very small binary footprint.

// High-level std::string str = emio::format("The answer is {}.", 42); // Format argument.

int answer{}; emio::result scan_res = emio::scan(str, "The answer is {}.", answer); // Scan input string. if (scan_res) { emio::print("The answer is {}.", answer); // Output to console. }

// Without using heap. emio::static_buffer<128> buf{}; emio::format_to(buf, "The answer is {:#x}.", 42).value(); buf.view(); // <- The answer is 0x2a.

// Low-level emio::writer wrt{buf}; wrt.write_str(" In decimal: ").value(); wrt.write_int(42).value(); wrt.write_char('.').value(); buf.view(); // <- The answer is 0x2a. In decimal: 42.

emio::reader rdr{"17c"}; EMIO_TRY(uint32_t number, rdr.parse_int()); // <- 17 EMIO_TRY(char suffix, rdr.read_char()); // <- c

This library is in beta status! Please help to make it fly!

Yet another character input/output library

Bare-metal and RTOS based embedded systems do have special requirements which are mostly overlooked by the C++ standard, its implementations and other libraries.

Therefore, this library:

Read more about it in the DESIGN document.

Including emio in your project

FetchContent_Declare( emio GIT_TAG main GIT_REPOSITORY https://github.com/Viatorus/emio.git GIT_SHALLOW TRUE ) FetchContent_MakeAvailable(emio)

A compiler supporting C++20 is required. Tested with GCC 11/12/13 and Clang 16/17.

Contributing

See the CONTRIBUTING document.

Licensing

em{io} is distributed under the MIT license.