From 9c73f2715ed6e800cc8bb49eb9996387b99d5861 Mon Sep 17 00:00:00 2001 From: Myun2 Date: Fri, 24 Dec 2010 09:04:40 +0900 Subject: [PATCH] =?utf8?q?web/html=5Ftags.hpp:=20=E5=90=84=E3=82=BF?= =?utf8?q?=E3=82=B0=E5=90=8D=E3=81=AE=E5=AE=9A=E7=BE=A9=E3=82=92=E8=BF=BD?= =?utf8?q?=E5=8A=A0,=20ROAST=5FHTML=5FDECL=5FATTR()=20=E3=83=9E=E3=82=AF?= =?utf8?q?=E3=83=AD=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=80=81=E3=81=93?= =?utf8?q?=E3=82=8C=E3=81=AB=E3=82=88=E3=82=8A=E3=82=BF=E3=82=B0=E3=82=92?= =?utf8?q?=E5=AE=9A=E7=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- roast/include/roast/web/html_tags.hpp | 97 +++++++++++++++++++++++++++++------ 1 file changed, 80 insertions(+), 17 deletions(-) diff --git a/roast/include/roast/web/html_tags.hpp b/roast/include/roast/web/html_tags.hpp index 3e2e2006..585ea476 100644 --- a/roast/include/roast/web/html_tags.hpp +++ b/roast/include/roast/web/html_tags.hpp @@ -17,6 +17,8 @@ namespace roast { namespace tag { + ///////////////////////////////////////////////////////////////////// + using namespace ::roast::lexical::rule; using namespace ::roast::roast_xml::rule; @@ -32,41 +34,108 @@ namespace roast //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 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 struct a_ : public _tagbase<_tagname_str::a, _Attrs, _Inners> { struct attr { - private: - struct str - { - ROAST_HTML_STR_DEF(href); - }; - public: - template struct href : _str_attr {}; + ROAST_HTML_DECL_ATTR(href); }; }; typedef a_<> a; template - struct body_ : public _base<_Attrs, _Inners> + struct b_ : public _tagbase<_tagname_str::b, _Attrs, _Inners> + { + }; + typedef b_<> b; + + + template + struct body_ : public _tagbase<_tagname_str::body, _Attrs, _Inners> { }; typedef body_<> body; - template struct head_ : public _tagbase<_tagname_str::head, _Attrs, _Inners> @@ -87,13 +156,7 @@ namespace roast { struct attr { - private: - struct str - { - ROAST_HTML_STR_DEF(src); - }; - public: - template struct src : _str_attr {}; + ROAST_HTML_DECL_ATTR(src); }; }; typedef img_<> img; -- 2.11.0