#ifndef SCREEN_HH # define SCREEN_HH_ # include #define CMD_BUFFER_SIZE 512 class Screen { public: Screen(); void init(); void run(); friend Screen &operator<< (Screen &, const string &s); friend Screen &operator<< (Screen &, int i); private: void cmd_draw(); bool add_char(char c, char *string, ssize_t offset, size_t buf_len); bool del_char(char *string, ssize_t offset, size_t buf_len); void sigwinch(int); private: WINDOW *msg_; // cmd window WINDOW *cmd_; char cmd_buffer_[CMD_BUFFER_SIZE]; char cmd_history_buffer_[CMD_BUFFER_SIZE]; size_t cmd_buf_off_; size_t cmd_win_off_; size_t cmd_win_size_; size_t cmd_history_off_; }; extern Screen S; #endif