forked from wownero/wownero
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
640 B
41 lines
640 B
7 years ago
|
#pragma once
|
||
|
|
||
|
#include <streambuf>
|
||
|
#include <sstream>
|
||
|
#include <iostream>
|
||
|
|
||
|
namespace rdln
|
||
|
{
|
||
|
class readline_buffer : public std::stringbuf
|
||
|
{
|
||
|
public:
|
||
|
readline_buffer();
|
||
|
void start();
|
||
|
void stop();
|
||
|
int process();
|
||
|
bool is_running()
|
||
|
{
|
||
|
return m_cout_buf != NULL;
|
||
|
}
|
||
|
void get_line(std::string& line);
|
||
|
void set_prompt(const std::string& prompt);
|
||
|
|
||
|
protected:
|
||
|
virtual int sync();
|
||
|
|
||
|
private:
|
||
|
std::streambuf* m_cout_buf;
|
||
|
};
|
||
|
|
||
|
class suspend_readline
|
||
|
{
|
||
|
public:
|
||
|
suspend_readline();
|
||
|
~suspend_readline();
|
||
|
private:
|
||
|
readline_buffer* m_buffer;
|
||
|
bool m_restart;
|
||
|
};
|
||
|
}
|
||
|
|