+++ /dev/null
-// Roast+ License
-
-/*
-
-*/
-#ifndef __SFJP_ROAST__debug__console_monitor_HPP__
-#define __SFJP_ROAST__debug__console_monitor_HPP__
-
-#include "roast/console/console.hpp"
-#include <string>
-#include <stack>
-#include <list>
-
-namespace roast
-{
- namespace debug
- {
- struct into{
- ::std::string name;
-
- into(const ::std::string &s):name(s){}
- into(const char* s):name(s){}
- };
-
- struct out{};
- }
-
- class debug_console_monitor
- {
- private:
- ::std::list<::std::string> m_stack;
- typedef ::std::list<::std::string>::iterator _StackIterator;
- public:
- debug_console_monitor()
- {
- update_screen();
- }
-
- void update_stackframe()
- {
- using namespace console;
- set_cursol(0,3);
- //for(size_t i=0; i<m_stack.size(); i++)
- int i=0;
- for(_StackIterator it=m_stack.begin(); it != m_stack.end(); it++, i++)
- {
- putchar_repeat(' ',i*2);
- printf("%s\n", it->c_str());
- }
- getc(stdin);
- }
-
- void update_screen()
- {
- using namespace console;
-
- clear_screen();
-
- set_cursol(0,0);
- repeat_to_screen_max('*',2);
- // printf("\n*");
- printf("\n* Roast+ lexical Debugging Monitor\n");
- // printf("*\n");
- repeat_to_screen_max('*',2);
-
- set_cursol(0,console::screen_height - 4);
- repeat_to_screen_max('-');
- printf("> ");
-
- update_stackframe();
- }
-
- void operator << (const debug::into& in)
- {
- m_stack.push_back(in.name);
- update_screen();
- }
-
- void operator << (const debug::out& out)
- {
- m_stack.pop_back();
- update_screen();
- }
- };
-
- class debug_null_monitor
- {
- public:
- void operator << (const debug::into&){}
- void operator << (const debug::out&){}
- };
-}
-
-#endif//__SFJP_ROAST__debug__console_monitor_HPP__