00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _HTMLCLASSES_H_
00023 #define _HTMLCLASSES_H_ 1
00024
00031 #include "cgicc/CgiDefs.h"
00032 #include "cgicc/HTMLAtomicElement.h"
00033 #include "cgicc/HTMLBooleanElement.h"
00034 #include "cgicc/HTMLDoctype.h"
00035
00036
00037
00038
00039
00046 #define TAG(name, tag) \
00047 class name##Tag \
00048 { public: inline static const char* getName() { return tag; } }
00049
00058 #define ATOMIC_ELEMENT(name, tag) \
00059 TAG(name, tag); typedef HTMLAtomicElement<name##Tag> name
00060
00070 #define BOOLEAN_ELEMENT(name, tag) \
00071 TAG(name, tag); typedef HTMLBooleanElement<name##Tag> name
00072
00073
00074
00075
00076
00077
00078 CGICC_BEGIN_NAMESPACE
00079
00080
00081
00082
00083
00084 class nullTag
00085 { public: inline static const char* getName() { return 0; } };
00086
00090 class comment : public HTMLBooleanElement<nullTag>
00091 {
00092 virtual void render(STDNS ostream& out) const
00093 {
00094 if(getData().empty() && dataSpecified() == false) {
00095 swapState();
00096 out << (getState() ? "<!-- " : " -->");
00097 }
00098 else
00099 out << "<!-- " << getData() << " -->";
00100 }
00101 };
00102
00103 BOOLEAN_ELEMENT (html, "html");
00104 BOOLEAN_ELEMENT (head, "head");
00105 BOOLEAN_ELEMENT (title, "title");
00106 ATOMIC_ELEMENT (meta, "meta");
00107 BOOLEAN_ELEMENT (style, "style");
00108 BOOLEAN_ELEMENT (body, "body");
00109 #if CGICC_USE_NAMESPACES
00110 BOOLEAN_ELEMENT (div, "div");
00111 #else
00112 BOOLEAN_ELEMENT (div_, "div");
00113 #endif
00114 BOOLEAN_ELEMENT (span, "span");
00115 BOOLEAN_ELEMENT (h1, "h1");
00116 BOOLEAN_ELEMENT (h2, "h2");
00117 BOOLEAN_ELEMENT (h3, "h3");
00118 BOOLEAN_ELEMENT (h4, "h4");
00119 BOOLEAN_ELEMENT (h5, "h5");
00120 BOOLEAN_ELEMENT (h6, "h6");
00121 BOOLEAN_ELEMENT (address, "address");
00122
00123
00124
00125 BOOLEAN_ELEMENT (em, "em");
00126 BOOLEAN_ELEMENT (strong, "strong");
00127 BOOLEAN_ELEMENT (cite, "cite");
00128 BOOLEAN_ELEMENT (dfn, "dfn");
00129 BOOLEAN_ELEMENT (code, "code");
00130 BOOLEAN_ELEMENT (samp, "samp");
00131 BOOLEAN_ELEMENT (kbd, "kbd");
00132 BOOLEAN_ELEMENT (var, "var");
00133 BOOLEAN_ELEMENT (abbr, "abbr");
00134 BOOLEAN_ELEMENT (acronym, "acronym");
00135 BOOLEAN_ELEMENT (blockquote, "blockquote");
00136 BOOLEAN_ELEMENT (q, "q");
00137 BOOLEAN_ELEMENT (sub, "sub");
00138 BOOLEAN_ELEMENT (sup, "sup");
00139 BOOLEAN_ELEMENT (p, "p");
00140 ATOMIC_ELEMENT (br, "br");
00141 BOOLEAN_ELEMENT (pre, "pre");
00142 BOOLEAN_ELEMENT (ins, "ins");
00143 BOOLEAN_ELEMENT (del, "del");
00144 BOOLEAN_ELEMENT (bdo, "bdo");
00145
00146
00147
00148 BOOLEAN_ELEMENT (ul, "ul");
00149 BOOLEAN_ELEMENT (ol, "ol");
00150 BOOLEAN_ELEMENT (li, "li");
00151 BOOLEAN_ELEMENT (dl, "dl");
00152 BOOLEAN_ELEMENT (dt, "dt");
00153 BOOLEAN_ELEMENT (dd, "dd");
00154
00155
00156
00157 BOOLEAN_ELEMENT (table, "table");
00158 BOOLEAN_ELEMENT (caption, "caption");
00159 BOOLEAN_ELEMENT (thead, "thead");
00160 BOOLEAN_ELEMENT (tfoot, "tfoot");
00161 BOOLEAN_ELEMENT (tbody, "tbody");
00162 BOOLEAN_ELEMENT (colgroup, "colgroup");
00163 ATOMIC_ELEMENT (col, "col");
00164 BOOLEAN_ELEMENT (tr, "tr");
00165 BOOLEAN_ELEMENT (th, "th");
00166 BOOLEAN_ELEMENT (td, "td");
00167
00168
00169
00170 BOOLEAN_ELEMENT (a, "a");
00171 #if CGICC_USE_NAMESPACES
00172 ATOMIC_ELEMENT (link, "link");
00173 #else
00174 ATOMIC_ELEMENT (link_, "link");
00175 #endif
00176 ATOMIC_ELEMENT (base, "base");
00177
00178
00179
00180 ATOMIC_ELEMENT (img, "img");
00181 BOOLEAN_ELEMENT (object, "object");
00182 ATOMIC_ELEMENT (param, "param");
00183 BOOLEAN_ELEMENT (map, "map");
00184 ATOMIC_ELEMENT (area, "area");
00185 ATOMIC_ELEMENT (hr, "hr");
00186
00187
00188
00189 BOOLEAN_ELEMENT (tt, "tt");
00190 BOOLEAN_ELEMENT (i, "i");
00191 BOOLEAN_ELEMENT (b, "b");
00192 BOOLEAN_ELEMENT (big, "big");
00193 BOOLEAN_ELEMENT (small, "small");
00194
00195
00196
00197 BOOLEAN_ELEMENT (frameset, "frameset");
00198 ATOMIC_ELEMENT (frame, "frame");
00199 BOOLEAN_ELEMENT (noframes, "noframes");
00200 BOOLEAN_ELEMENT (iframe, "iframe");
00201
00202
00203
00204 BOOLEAN_ELEMENT (form, "form");
00205 ATOMIC_ELEMENT (input, "input");
00206 BOOLEAN_ELEMENT (button, "button");
00207 #if CGICC_USE_NAMESPACES
00208 BOOLEAN_ELEMENT (select, "select");
00209 #else
00210 BOOLEAN_ELEMENT (select_, "select");
00211 #endif
00212 BOOLEAN_ELEMENT (optgroup, "optgroup");
00213 BOOLEAN_ELEMENT (option, "option");
00214 BOOLEAN_ELEMENT (textarea, "textarea");
00215 BOOLEAN_ELEMENT (label, "label");
00216 BOOLEAN_ELEMENT (fieldset, "fieldset");
00217 BOOLEAN_ELEMENT (legend, "legend");
00218
00219
00220
00221 BOOLEAN_ELEMENT (script, "script");
00222 BOOLEAN_ELEMENT (noscript, "noscript");
00223
00224 CGICC_END_NAMESPACE
00225
00226 #endif