OSDN Git Service

debug: move from roast (main)
authorMyun2 <myun2@nwhite.info>
Sat, 26 May 2012 06:51:35 +0000 (15:51 +0900)
committerMyun2 <myun2@nwhite.info>
Sat, 26 May 2012 06:51:35 +0000 (15:51 +0900)
include/roast/debug/console_monitor.hpp [new file with mode: 0644]
include/roast/debug/util.hpp [new file with mode: 0644]

diff --git a/include/roast/debug/console_monitor.hpp b/include/roast/debug/console_monitor.hpp
new file mode 100644 (file)
index 0000000..73a25aa
--- /dev/null
@@ -0,0 +1,94 @@
+//     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__
diff --git a/include/roast/debug/util.hpp b/include/roast/debug/util.hpp
new file mode 100644 (file)
index 0000000..b71a224
--- /dev/null
@@ -0,0 +1,11 @@
+//     Roast+ License
+
+/*
+       
+*/
+#ifndef __SFJP_ROAST__debug__util_HPP__
+#define __SFJP_ROAST__debug__util_HPP__
+
+
+
+#endif//__SFJP_ROAST__debug__util_HPP__