/usr/include/cgicc/HTMLClasses.h is in libcgicc5-dev 3.2.9-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | /* -*-mode:c++; c-file-style: "gnu";-*- */
/*
* $Id: HTMLClasses.h,v 1.16 2007/07/02 18:48:18 sebdiaz Exp $
*
* Copyright (C) 1996 - 2004 Stephen F. Booth <sbooth@gnu.org>
* 2007 Sebastien DIAZ <sebastien.diaz@gmail.com>
* Part of the GNU cgicc library, http://www.gnu.org/software/cgicc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*/
#ifndef _HTMLCLASSES_H_
#define _HTMLCLASSES_H_ 1
/*! \file HTMLClasses.h
* \brief The header file containing HTML output classes.
*
* One class is defined for each element in the HTML 4.0 standard.
*/
#include "cgicc/CgiDefs.h"
#include "cgicc/HTMLAtomicElement.h"
#include "cgicc/HTMLBooleanElement.h"
#include "cgicc/HTMLDoctype.h"
// ============================================================
// Macros defining types of elements
// ============================================================
/*!
* \brief Create an HTML element rendering class
*
* \param name The name of the class to define
* \param tag The text to output when this tag is rendered
*/
#define TAG(name, tag) \
class name##Tag \
{ public: inline static const char* getName() { return tag; } }
/*!
* \brief Create an atomic HTML element
*
* Atomic HTML elements maintain no internal on/off state. For
* example, \c br and \c meta are atomic elements.
* \param name The name of the class to define
* \param tag The text to output when this tag is rendered
*/
#define ATOMIC_ELEMENT(name, tag) \
TAG(name, tag); typedef HTMLAtomicElement<name##Tag> name
/*!
* \brief An HTML element maintaining an internal on/off state
*
* Boolean HTML elements maintain an internal state, and the output
* rendered depends on the current state. For example, \c h1 and \c
* title are boolean elements.
* \param name The name of the class to define
* \param tag The text to output when this tag is rendered
*/
#define BOOLEAN_ELEMENT(name, tag) \
TAG(name, tag); typedef HTMLBooleanElement<name##Tag> name
// ============================================================
// HTML 4.0 elements - for details see http://www.w3.org/
// ============================================================
namespace cgicc {
// ============================================================
// Class comment - needs special render function
// ============================================================
class nullTag
{ public: inline static const char* getName() { return 0; } };
/*! \class comment HTMLClasses.h cgicc/HTMLClasses.h
* \brief An HTML comment
*/
class comment : public HTMLBooleanElement<nullTag>
{
virtual void render(std::ostream& out) const
{
if(getData().empty() && false == dataSpecified()) {
swapState();
out << (getState() ? "<!-- " : " -->");
}
else
out << "<!-- " << getData() << " -->";
}
};
BOOLEAN_ELEMENT (html, "html"); // HTML document
BOOLEAN_ELEMENT (head, "head"); // document head
BOOLEAN_ELEMENT (title, "title"); // document title
ATOMIC_ELEMENT (meta, "meta"); // meta data
BOOLEAN_ELEMENT (style, "style"); // style sheet
BOOLEAN_ELEMENT (body, "body"); // document body
BOOLEAN_ELEMENT (div, "div"); // block-level grouping
BOOLEAN_ELEMENT (span, "span"); // inline grouping
BOOLEAN_ELEMENT (h1, "h1"); // level 1 heading
BOOLEAN_ELEMENT (h2, "h2"); // level 2 heading
BOOLEAN_ELEMENT (h3, "h3"); // level 3 heading
BOOLEAN_ELEMENT (h4, "h4"); // level 4 heading
BOOLEAN_ELEMENT (h5, "h5"); // level 5 heading
BOOLEAN_ELEMENT (h6, "h6"); // level 6 heading
BOOLEAN_ELEMENT (address, "address"); // contact information
// text markup
BOOLEAN_ELEMENT (em, "em"); // emphasis
BOOLEAN_ELEMENT (strong, "strong"); // stronger emphasis
BOOLEAN_ELEMENT (cite, "cite"); // citation/reference
BOOLEAN_ELEMENT (dfn, "dfn"); // defining instance
BOOLEAN_ELEMENT (code, "code"); // computer code
BOOLEAN_ELEMENT (samp, "samp"); // sample output
BOOLEAN_ELEMENT (kbd, "kbd"); // user input
BOOLEAN_ELEMENT (var, "var"); // variable/argument
BOOLEAN_ELEMENT (abbr, "abbr"); // abbreviated form
BOOLEAN_ELEMENT (acronym, "acronym"); // acronym
BOOLEAN_ELEMENT (blockquote, "blockquote"); // block-level quotation
BOOLEAN_ELEMENT (q, "q"); // inline quotation
BOOLEAN_ELEMENT (sub, "sub"); // subscript
BOOLEAN_ELEMENT (sup, "sup"); // superscript
BOOLEAN_ELEMENT (p, "p"); // paragraph
ATOMIC_ELEMENT (br, "br"); // line break
BOOLEAN_ELEMENT (pre, "pre"); // preformatted text
BOOLEAN_ELEMENT (ins, "ins"); // inserted text
BOOLEAN_ELEMENT (del, "del"); // deleted text
BOOLEAN_ELEMENT (bdo, "bdo"); // overriding direction
// lists
BOOLEAN_ELEMENT (ul, "ul"); // unordered list
BOOLEAN_ELEMENT (ol, "ol"); // ordered list
BOOLEAN_ELEMENT (li, "li"); // list item
BOOLEAN_ELEMENT (dl, "dl"); // definition list
BOOLEAN_ELEMENT (dt, "dt"); // term to be defined
BOOLEAN_ELEMENT (dd, "dd"); // definition of term
// tables
BOOLEAN_ELEMENT (table, "table"); // table element
BOOLEAN_ELEMENT (caption, "caption"); // table caption
BOOLEAN_ELEMENT (thead, "thead"); // table head section
BOOLEAN_ELEMENT (tfoot, "tfoot"); // table foot section
BOOLEAN_ELEMENT (tbody, "tbody"); // table body section
BOOLEAN_ELEMENT (colgroup, "colgroup"); // vertical section
ATOMIC_ELEMENT (col, "col"); // column attributes
BOOLEAN_ELEMENT (tr, "tr"); // table row
BOOLEAN_ELEMENT (th, "th"); // table header cell
BOOLEAN_ELEMENT (td, "td"); // table data cell
// links
BOOLEAN_ELEMENT (a, "a"); // anchor
ATOMIC_ELEMENT (link, "link"); // document link
ATOMIC_ELEMENT (base, "base"); // path information
// objects
ATOMIC_ELEMENT (img, "img"); // inline image
BOOLEAN_ELEMENT (object, "object"); // generic object
ATOMIC_ELEMENT (param, "param"); // object parameters
BOOLEAN_ELEMENT (map, "map"); // client image map
ATOMIC_ELEMENT (area, "area"); // image map region
ATOMIC_ELEMENT (hr, "hr"); // horizontal rule
// fonts - preferably use stylesheets
BOOLEAN_ELEMENT (tt, "tt"); // monospaced text
BOOLEAN_ELEMENT (i, "i"); // italic text style
BOOLEAN_ELEMENT (b, "b"); // bold text style
BOOLEAN_ELEMENT (big, "big"); // large font
BOOLEAN_ELEMENT (small, "small"); // small font
// frames - not part of the strict DTD
BOOLEAN_ELEMENT (frameset, "frameset"); // frame layout
ATOMIC_ELEMENT (frame, "frame"); // frame contents
BOOLEAN_ELEMENT (noframes, "noframes"); // alternative text
BOOLEAN_ELEMENT (iframe, "iframe"); // inline frame
// forms
BOOLEAN_ELEMENT (form, "form"); // form element
ATOMIC_ELEMENT (input, "input"); // generic input
BOOLEAN_ELEMENT (button, "button"); // special button
BOOLEAN_ELEMENT (select, "select"); // option menu
BOOLEAN_ELEMENT (optgroup, "optgroup"); // option group
BOOLEAN_ELEMENT (option, "option"); // option item
BOOLEAN_ELEMENT (textarea, "textarea"); // multi-line text input
BOOLEAN_ELEMENT (label, "label"); // input label
BOOLEAN_ELEMENT (fieldset, "fieldset"); // grouping input fields
BOOLEAN_ELEMENT (legend, "legend"); // caption for field set
// scripts
BOOLEAN_ELEMENT (script, "script"); // script element
BOOLEAN_ELEMENT (noscript, "noscript"); // alternative text
} // namespace cgicc
#endif /* ! _HTMLCLASSES_H_ */
|