[mrpt-system]

Overview

An OS abstraction layer and other miscellaneous functionality: filesystem, date and time, memory handling and much more.

Library mrpt-system

This C++ library is part of MRPT and can be installed in Debian-based systems with:

sudo apt install libmrpt-system-dev

Read also how to import MRPT into your CMake scripts.

Library contents

// structs

struct mrpt::system::CTimeLoggerEntry;
struct mrpt::system::CTimeLoggerSaveAtDtor;

// classes

class mrpt::system::CConsoleRedirector;
class mrpt::system::CControlledRateTimer;
class mrpt::system::CDirectoryExplorer;
class mrpt::system::CFileSystemWatcher;
class mrpt::system::CObservable;
class mrpt::system::CObserver;
class mrpt::system::COutputLogger;
class mrpt::system::CRateTimer;
class mrpt::system::CTicTac;
class mrpt::system::CTimeLogger;
class mrpt::system::mrptEvent;
class mrpt::system::mrptEventOnDestroy;

// global functions

std::string mrpt::system::hyperlink(
    const std::string& text,
    const std::string& uri,
    bool force_use_format = false,
    bool show_uri_anyway = false
    );

std::string mrpt::system::progress(
    const double progressRatio0to1,
    const std::size_t barLength,
    bool encloseInSquareBrackets = true
    );

void mrpt::system::thread_name(const std::string& name, std::thread& theThread);
void mrpt::system::thread_name(const std::string& name);
std::string mrpt::system::thread_name(std::thread& theThread);
std::string mrpt::system::thread_name();

Global Functions

std::string mrpt::system::hyperlink(
    const std::string& text,
    const std::string& uri,
    bool force_use_format = false,
    bool show_uri_anyway = false
    )

Build an text with a hyperlink, if printed to a terminal that supports it (e.g.

Ubuntu >=21.04), or the plain text otherwise.

(New in MRPT 2.11.8)

See also:

See discussion in, for example, https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

std::string mrpt::system::progress(
    const double progressRatio0to1,
    const std::size_t barLength,
    bool encloseInSquareBrackets = true
    )

Build an text incremental progress bar with UNICODE block elements, for example:

50%  => "[████    ]"

See example: system_progress_bar/test.cpp

#include <mrpt/core/exceptions.h>
#include <mrpt/system/progress.h>

#include <chrono>
#include <iostream>
#include <thread>

void TestProgressBar()
{
    const int end = 400;
    const size_t barWidth = 30;

    for (int i = 0; i <= end; i++)
    {
        double p = double(i) / end;

        std::cout << "Progress: " << mrpt::system::progress(p, barWidth)
                  << mrpt::format(" %5.02f%%", 100 * p) << "\r";
        std::cout.flush();
        std::this_thread::sleep_for(std::chrono::milliseconds(5));
    }
    std::cout << std::endl;
}

(New in MRPT 2.3.0)

void mrpt::system::thread_name(const std::string& name, std::thread& theThread)

Sets the name of the given thread; useful for debuggers.

New in MRPT 2.0.4

void mrpt::system::thread_name(const std::string& name)

Sets the name of the current thread; useful for debuggers.

New in MRPT 2.0.4

std::string mrpt::system::thread_name(std::thread& theThread)

Gets the name of the given thread; useful for debuggers.

New in MRPT 2.0.4

std::string mrpt::system::thread_name()

Gets the name of the current thread; useful for debuggers.

New in MRPT 2.0.4