Skip to content
Snippets Groups Projects
view.hpp 994 B
Newer Older
#include <functional>
#include <shared_mutex>
Leon Dietrich's avatar
Leon Dietrich committed
#include "progress_indicator.hpp"

Leon Dietrich's avatar
Leon Dietrich committed
/**
 * This class is designed to be the first level adapter to curses.
 * It implements some basic information handling and a registry for
 * views.
 */
class display : public std::enable_shared_from_this<display> {
public:
    typedef display self_type;
    typedef std::shared_ptr<self_type> ptr_type;

private:
    typedef std::shared_mutex mutex_type;
    typedef std::lock_guard<mutex_type> lock_type;
    mutable mutex_type m;

public:

public:
    template<typename F, typename ...Args>
    decltype(auto) sync(F &&f, Args &&... args) {
        lock_type lock(m);

        return std::forward<F>(f)(shared_from_this(), std::forward<Args>(args)...);
    }

Leon Dietrich's avatar
Leon Dietrich committed
/**
 * This abstract class implements a view page.
 */
Leon Dietrich's avatar
Leon Dietrich committed
class view {
Leon Dietrich's avatar
Leon Dietrich committed
public:
Leon Dietrich's avatar
Leon Dietrich committed
    virtual void set_progress_indicator(std::shared_ptr<progress_indicator>);
};