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
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)