#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;
+ };
+
+ struct out{};
+ }
+
class debug_console_monitor
{
+ private:
+ ::std::stack<::std::string> m_stack;
+ typedef ::std::stack<::std::string>::iterator _StackIterator;
public:
debug_console_monitor()
{
set_cursol(0,0);
repeat_to_screen_max('*',2);
- printf("\n*");
+ // printf("\n*");
printf("\n* Roast+ lexical Debugging Monitor\n");
- printf("*\n");
+ // printf("*\n");
repeat_to_screen_max('*',2);
set_cursol(0,console::screen_height - 4);
repeat_to_screen_max('-');
printf("> ");
}
+
+ void update_stackframe()
+ {
+ using namespace console;
+ set_cursol(0,3);
+ //for(size_t i=0; i<m_stack.size(); i++)
+ for(_StackIterator it=m_stack.begin(); it != m_stack.end(); it++)
+ {
+ printf("%s\n", it->c_str());
+ }
+ }
+
+ void operator << (const debug::into& in)
+ {
+ m_stack.push(in);
+ update_stackframe();
+ }
};
}