{
namespace tag
{
+ /////////////////////////////////////////////////////////////////////
+
using namespace ::roast::lexical::rule;
using namespace ::roast::roast_xml::rule;
//struct _str_attr {};// : xml::name_static_attr<_Name, T>
struct _str_attr : ::roast::roast_xml::rule::attr_<_Name, T> {};
+#define ROAST_HTML_STR_DEF(TAGNAME) ROAST_LEXICAL_FIXSTR(TAGNAME,#TAGNAME)
+#define ROAST_HTML_DECL_ATTR(ATTRNAME) \
+ private: ROAST_HTML_STR_DEF(_str_##ATTRNAME); \
+ public: template <typename T> struct ATTRNAME : _str_attr<_str_##ATTRNAME, T> {};
+
//////////////////////////////
struct _tagname_str
{
-#define ROAST_HTML_STR_DEF(TAGNAME) ROAST_LEXICAL_FIXSTR(TAGNAME,#TAGNAME)
+ // a-d
ROAST_HTML_STR_DEF(a)
+ ROAST_HTML_STR_DEF(b)
+ ROAST_HTML_STR_DEF(big)
+ ROAST_HTML_STR_DEF(body)
+ ROAST_HTML_STR_DEF(br)
+ ROAST_HTML_STR_DEF(blockquote)
+ ROAST_HTML_STR_DEF(button)
+ ROAST_HTML_STR_DEF(center)
+ ROAST_HTML_STR_DEF(dd)
+ ROAST_HTML_STR_DEF(div)
+ ROAST_HTML_STR_DEF(dl)
+ ROAST_HTML_STR_DEF(dt)
+
+ // e-i
+ ROAST_HTML_STR_DEF(embed)
+ ROAST_HTML_STR_DEF(form)
+ ROAST_HTML_STR_DEF(frame)
+ ROAST_HTML_STR_DEF(frameset)
+ ROAST_HTML_STR_DEF(h)
ROAST_HTML_STR_DEF(head)
+ ROAST_HTML_STR_DEF(hr)
ROAST_HTML_STR_DEF(html)
+ ROAST_HTML_STR_DEF(i)
+ ROAST_HTML_STR_DEF(iframe)
ROAST_HTML_STR_DEF(img)
+ ROAST_HTML_STR_DEF(input)
+
+ // l-p
+ ROAST_HTML_STR_DEF(li)
+ ROAST_HTML_STR_DEF(meta)
+ ROAST_HTML_STR_DEF(noembed)
+ ROAST_HTML_STR_DEF(ol)
+ ROAST_HTML_STR_DEF(option)
+ ROAST_HTML_STR_DEF(p)
+ ROAST_HTML_STR_DEF(plaintext)
+ ROAST_HTML_STR_DEF(pre)
+
+ // r
+ ROAST_HTML_STR_DEF(rb)
+ ROAST_HTML_STR_DEF(rp)
+ ROAST_HTML_STR_DEF(rt)
+ ROAST_HTML_STR_DEF(ruby)
+
+ // s
+ ROAST_HTML_STR_DEF(s)
+ ROAST_HTML_STR_DEF(script)
+ ROAST_HTML_STR_DEF(select)
+ ROAST_HTML_STR_DEF(small)
+ ROAST_HTML_STR_DEF(span)
+ ROAST_HTML_STR_DEF(strike)
+ ROAST_HTML_STR_DEF(strong)
+ ROAST_HTML_STR_DEF(style)
+
+ // t
+ ROAST_HTML_STR_DEF(table)
+ ROAST_HTML_STR_DEF(td)
+ ROAST_HTML_STR_DEF(textarea)
+ ROAST_HTML_STR_DEF(th)
+ ROAST_HTML_STR_DEF(title)
+ ROAST_HTML_STR_DEF(tr)
+
+ // u-z
+ ROAST_HTML_STR_DEF(ul)
+ ROAST_HTML_STR_DEF(xmp)
};
+
+ /////////////////////////////////////////////////////////////////////
template <typename _Attrs=no_attrs, typename _Inners=no_inner>
struct a_ : public _tagbase<_tagname_str::a, _Attrs, _Inners>
{
struct attr
{
- private:
- struct str
- {
- ROAST_HTML_STR_DEF(href);
- };
- public:
- template <typename T> struct href : _str_attr<typename str::href, T> {};
+ ROAST_HTML_DECL_ATTR(href);
};
};
typedef a_<> a;
template <typename _Attrs=no_attrs, typename _Inners=no_inner>
- struct body_ : public _base<_Attrs, _Inners>
+ struct b_ : public _tagbase<_tagname_str::b, _Attrs, _Inners>
+ {
+ };
+ typedef b_<> b;
+
+
+ template <typename _Attrs=no_attrs, typename _Inners=no_inner>
+ struct body_ : public _tagbase<_tagname_str::body, _Attrs, _Inners>
{
};
typedef body_<> body;
-
template <typename _Attrs=no_attrs, typename _Inners=no_inner>
struct head_ : public _tagbase<_tagname_str::head, _Attrs, _Inners>
{
struct attr
{
- private:
- struct str
- {
- ROAST_HTML_STR_DEF(src);
- };
- public:
- template <typename T> struct src : _str_attr<typename str::src, T> {};
+ ROAST_HTML_DECL_ATTR(src);
};
};
typedef img_<> img;