OSDN Git Service

lexical/debug_util.hpp: debug_monitor追加
authorMyun2 <myun2@nwhite.info>
Thu, 23 Dec 2010 16:17:16 +0000 (01:17 +0900)
committerMyun2 <myun2@nwhite.info>
Thu, 23 Dec 2010 16:17:16 +0000 (01:17 +0900)
roast/include/roast/lexical/debug_util.hpp

index 0099b6b..dcdaee1 100644 (file)
@@ -60,20 +60,40 @@ namespace roast
                                const char* m_name;
                        protected:
                                named_base(const char* name):m_name(name){}
+                       public:
+                               const char* get_name() const { return m_name; }
                        };
 
 #define                ROAST_LEXICAL_DECL_NAMED(TARGET)        \
                        class _##TARGET##_name : public named_base{ public: _##TARGET##_name() : named_base(#TARGET){} };
-                       class named_start{};
-                       class named_end{};
 
-                       class debug_monitor
-                       {
-                       public:
-                               //void operator << 
+                       class named_start : public named_base{ public: named_start(const char* name):named_base(name){} };
+                       class named_end : public named_base{ public: named_end(const char* name):named_base(name){}};
+               }
+
+               class debug_monitor
+               {
+               private:
+                       unsigned int m_mode;
+               public:
+                       //struct step_mode_ {} step_mode;
+                       enum modes{
+                               step_mode=1
                        };
-                       
+               public:
+                       debug_monitor(unsigned int mode=0) : m_mode(mode) {}
+                       //debug_monitor(const step_mode_&){}
+
+                       void operator << (const rule::named_start& name)
+                       {
+                       }
+                       void operator << (const rule::named_end& name)
+                       {
+                       }
+               };
+               
+               namespace rule{
+
                        //template <typename T, typename _Namer>
                        template <typename _Namer, typename T>
                        class named : public lengthable
@@ -84,11 +104,12 @@ namespace roast
                                template <typename _It, typename _Param>
                                void on_analyze_start(_It& it, _Param& param)
                                {
-                                       //param << 
+                                       param << named_start(_namer.get_name());
                                }
                                template <typename _It, typename _Param>
                                void on_analyze_end(_It& it, _Param& param)
                                {
+                                       param << named_end(_namer.get_name());
                                }
                                template <typename _Strm, typename _Document>
                                void on_generate_start(_Strm& strm, _Document& doc)