Public Types | List of all members
cgicc::HTMLElement Class Referenceabstract

Class representing an HTML element. More...

`#include <cgicc/HTMLElement.h>`

Inheritance diagram for cgicc::HTMLElement:

## Public Types
enum | EElementType { eAtomic , eBoolean }
| Possible types of HTMLElements. More...

## Public Member Functions
Constructors and Destructor
| HTMLElement (const HTMLElement &element)
| Copy constructor. More...
virtual | ~HTMLElement ()
| Destructor. More...
Overloaded Operators
bool | operator== (const HTMLElement &element) const
| Compare two HTMLElements for equality. More...
bool | operator!= (const HTMLElement &element) const
| Compare two HTMLElements for inequality. More...
HTMLElement & | operator= (const HTMLElement &element)
| Assignment operator. More...
Accessor Methods
Information on the element
virtual const char * | getName () const =0
| Get the name of this element. More...
std::string | getData () const
| Get the data contained in this element, if any. More...
EElementType | getType () const
| Get the type of this element. More...
Mutator Methods
Set properties of the element
void | setData (const std::string &data)
| Set the data contained in this element. More...
virtual HTMLElement * | clone () const =0
| Clone this HTMLElement. More...
Embedded HTMLElement Management
Manage elements embedded in this one
const HTMLElementList * | getEmbedded () const
| Get the HTMLElementList embedded in this element, if any. More...
void | setEmbedded (const HTMLElementList &embedded)
| Set the HTMLElementList associated with this element. More...
HTMLElement & | add (const HTMLElement &element)
| Add an embedded HTMLElement in this one. More...
HTMLElement & | add (HTMLElement *element)
| Add an embedded HTMLElement in this one. More...
HTMLAttribute Management
Manage attributes embedded in this element
const HTMLAttributeList * | getAttributes () const
| Get the attributes associated with this element. More...
void | setAttributes (const HTMLAttributeList &attributes)
| Set the attributes associated with this element. More...
HTMLElement & | set (const std::string &name)
| Set an HTMLAttribute on this HTMLElement. More...
HTMLElement & | set (const std::string &name, const std::string &value)
| Set an HTMLAttribute on this HTMLElement. More...
Public Member Functions inherited from cgicc::MStreamable
| MStreamable ()
| Empty constructor. More...
virtual | ~MStreamable ()
| Empty destructor. More...
virtual void | render (std::ostream &out) const =0
| Write this object to a stream. More...

## Boolean element methods
Methods specific to boolean elements
virtual void | swapState () const
| Swap the state of the boolean element. More...
virtual bool | getState () const
| Get the state of this boolean element. More...
virtual void | render (std::ostream &out) const
| Render this HTMLElement to an ostream. More...
| HTMLElement (const HTMLAttributeList *attributes, const HTMLElement *embedded, const std::string *data, EElementType type)
| Subclass constructor. More...
bool | dataSpecified () const
| For subclasses only. More...

## Detailed Description

Class representing an HTML element.

An HTML element is any entity enclosed in angle brackets (< and >) interpreted as HTML, for example `a`, `img`, `html`, and `body`.

This class is an abstract base class that defines the interface for all HTMLElement subclasses.

Definition at line 60 of file HTMLElement.h.

## Member Enumeration Documentation

## ◆ EElementType

enum cgicc::HTMLElement::EElementType

Possible types of HTMLElements.

An HTMLElement is either atomic, meaning it has no corresponding closing tag (elements such as `hr` and `br` are atomic) or boolean (elements such as `a` and `ol` are boolean)

Enumerator
eAtomic | Atomic element, such as `hr`
eBoolean | Boolean element, such as `strong`

Definition at line 71 of file HTMLElement.h.

## Constructor & Destructor Documentation

## ◆ HTMLElement() [1/2]

cgicc::HTMLElement::HTMLElement | ( | const HTMLElement & | element | ) |

Copy constructor.

Sets the name and internal state of this element to those of `element`

Parameters

  element | The HTMLElement to copy.

## ◆ ~HTMLElement()

virtual cgicc::HTMLElement::~HTMLElement | ( |  | ) |
| virtual

Destructor.

Delete this HTMLElement object

## ◆ HTMLElement() [2/2]

cgicc::HTMLElement::HTMLElement | ( | const HTMLAttributeList * | attributes,
|  | const HTMLElement * | embedded,
|  | const std::string * | data,
|  | EElementType | type
| ) |  |
| protected

Subclass constructor.

This allows the subclasses to fully specify all properties

Parameters

  attributes | A pointer to an HTMLAttributeList containing the HTMLAttributes for this HTMLElement, if any
  embedded | A pointer to the embedded HTMLElement, if any
  data | A pointer to the data, if any
  type | The type of element

## Member Function Documentation

## ◆ add() [1/2]

HTMLElement & cgicc::HTMLElement::add | ( | const HTMLElement & | element | ) |

Add an embedded HTMLElement in this one.

Parameters

  element | A reference to an HTMLElement to embed in this one

Returns
  A reference to `this`

## ◆ add() [2/2]

HTMLElement & cgicc::HTMLElement::add | ( | HTMLElement * | element | ) |

Add an embedded HTMLElement in this one.

This element takes ownership of `element`, which should not be deleted.

Parameters

  element | A pointer to an HTMLElement to embed.

Returns
  A reference to `this`

## ◆ clone()

virtual HTMLElement * cgicc::HTMLElement::clone | ( |  | ) | const
| pure virtual

Clone this HTMLElement.

This performs a deep copy of the element

Returns
  A pointer to a newly-allocated copy of `this`.

Implemented in cgicc::HTMLAtomicElement< Tag >, cgicc::HTMLBooleanElement< Tag >, and cgicc::HTMLBooleanElement< nullTag >.

## ◆ dataSpecified()

bool cgicc::HTMLElement::dataSpecified | ( |  | ) | const
| inline protected

For subclasses only.

Returns `true` if data was specified in the constructor.

Returns
  `true` if data was specified in the constructor, `false` otherwise

Definition at line 367 of file HTMLElement.h.

## ◆ getAttributes()

const HTMLAttributeList * cgicc::HTMLElement::getAttributes | ( |  | ) | const
| inline

Get the attributes associated with this element.

If this method returns 0, no attributes are embedded

Returns
  The attribute list.

Definition at line 271 of file HTMLElement.h.

## ◆ getData()

std::string cgicc::HTMLElement::getData | ( |  | ) | const
| inline

Get the data contained in this element, if any.

This is only applicable for boolean elements

Returns
  The data contained in this element.

Definition at line 166 of file HTMLElement.h.

## ◆ getEmbedded()

const HTMLElementList * cgicc::HTMLElement::getEmbedded | ( |  | ) | const
| inline

Get the HTMLElementList embedded in this element, if any.

If this method returns 0, no elements are embedded

Returns
  The embedded element list.

Definition at line 223 of file HTMLElement.h.

## ◆ getName()

virtual const char * cgicc::HTMLElement::getName | ( |  | ) | const
| pure virtual

Get the name of this element.

For example, `html` or `body`.

Returns
  The name of this element.

Implemented in cgicc::HTMLAtomicElement< Tag >, cgicc::HTMLBooleanElement< Tag >, and cgicc::HTMLBooleanElement< nullTag >.

## ◆ getState()

virtual bool cgicc::HTMLElement::getState | ( |  | ) | const
| inline virtual

Get the state of this boolean element.

Returns
  `true` if the element is active, `false` otherwise

Reimplemented in cgicc::HTMLBooleanElement< Tag >, and cgicc::HTMLBooleanElement< nullTag >.

Definition at line 330 of file HTMLElement.h.

## ◆ getType()

EElementType cgicc::HTMLElement::getType | ( |  | ) | const
| inline

Get the type of this element.

Most HTMLElements are boolean

Returns
  The type of this element

Definition at line 176 of file HTMLElement.h.

## ◆ operator!=()

bool cgicc::HTMLElement::operator!= | ( | const HTMLElement & | element | ) | const
| inline

Compare two HTMLElements for inequality.

HTMLElements are equal if they have the same name

Parameters

  element | The HTMLElement to compare to this one.

Returns
  `false` if the two HTMLElements are equal, `true` otherwise.

Definition at line 122 of file HTMLElement.h.

## ◆ operator=()

HTMLElement & cgicc::HTMLElement::operator= | ( | const HTMLElement & | element | ) |

Assignment operator.

Sets the name and internal state of this element to those of `element`

Parameters

  element | The HTMLElement to copy

Returns
  A reference to `this`

## ◆ operator==()

bool cgicc::HTMLElement::operator== | ( | const HTMLElement & | element | ) | const

Compare two HTMLElements for equality.

HTMLElements are equal if they have the same name

Parameters

  element | The HTMLElement to compare to this one.

Returns
  `true` if the two HTMLElements are equal, `false` otherwise.

## ◆ render()

virtual void cgicc::HTMLElement::render | ( | std::ostream & | out | ) | const
| virtual

Render this HTMLElement to an ostream.

This is used for output

Parameters

  out | The ostream to which to write

Implements cgicc::MStreamable.

## ◆ set() [1/2]

HTMLElement & cgicc::HTMLElement::set | ( | const std::string & | name | ) |

Set an HTMLAttribute on this HTMLElement.

Parameters

  name | The name of the HTMLAttribute to set

Returns
  A reference to `this`

## ◆ set() [2/2]

HTMLElement & cgicc::HTMLElement::set | ( | const std::string & | name,
|  | const std::string & | value
| ) |  |

Set an HTMLAttribute on this HTMLElement.

Parameters

  name | The name of the HTMLAttribute
  value | The value of the HTMLAttribute

Returns
  A reference to `this`

## ◆ setAttributes()

void cgicc::HTMLElement::setAttributes | ( | const HTMLAttributeList & | attributes | ) |

Set the attributes associated with this element.

This is usually called by subclass constructors

Parameters

  attributes | The HTMLAttributeList containing the HTMLAttributes belonging to this element.

## ◆ setData()

void cgicc::HTMLElement::setData | ( | const std::string & | data | ) |
| inline

Set the data contained in this element.

The data is the text contained between the opening and closing tags

Parameters

  data | The data to store in this element.

Definition at line 194 of file HTMLElement.h.

## ◆ setEmbedded()

void cgicc::HTMLElement::setEmbedded | ( | const HTMLElementList & | embedded | ) |

Set the HTMLElementList associated with this element.

This is usually called by subclass constructors

Parameters

  embedded | The HTMLElementList containing the HTMLElements embedded in this element.

## ◆ swapState()

virtual void cgicc::HTMLElement::swapState | ( |  | ) | const
| inline virtual

Swap the state of the boolean element.

A state of `true` means the element is active

Reimplemented in cgicc::HTMLBooleanElement< Tag >, and cgicc::HTMLBooleanElement< nullTag >.

Definition at line 320 of file HTMLElement.h.

The documentation for this class was generated from the following file:

- HTMLElement.h