# Poco::XML

# class DOMObject

Library: XML
Package: DOM
Header: Poco/DOM/DOMObject.h

## Description

The base class for all objects in the Document Object Model.

DOMObject defines the rules for memory management in this implementation of the DOM. Violation of these rules, which are outlined in the following, results in memory leaks or dangling pointers.

Every object created by new or by a factory method (for example, Document::create*) must be released with a call to release() or autoRelease() when it is no longer needed.

Every object created by cloning or importing another object must be released. For every call to duplicate() there must be a matching call to release(). An object obtained via any other way must not be released, except ownership of it has been explicitely taken with a call to duplicate().

While DOMObjects are safe for use in multithreaded programs, a DOMObject or one of its subclasses must not be accessed from multiple threads simultaneously.

## Inheritance

Known Derived Classes: Comment, MutationEvent, Event, Text, AttrMap, AbstractContainerNode, Document, DocumentFragment, ElementsByTagNameListNS, ElementsByTagNameList, DocumentType, NodeList, ProcessingInstruction, AbstractNode, CDATASection, Attr, CharacterData, ChildNodesList, DTDMap, Entity, NamedNodeMap, EntityReference, Element, EventTarget, Node, Notation

## Member Summary

Member Functions: autoRelease, duplicate, release

## Constructors

### DOMObject

DOMObject();

Creates the DOMObject. The object's reference count is initialized to one.

## Destructor

### ~DOMObject

virtual ~DOMObject();

Destroys the DOMObject.

## Member Functions

### autoRelease

virtual void autoRelease() = 0;

Adds the object to an appropriate AutoReleasePool, which is usually the AutoReleasePool managed by the Document to which this object belongs.

### duplicate

void duplicate() const;

Increases the object's reference count.

### release

void release() const;

Decreases the object's reference count. If the reference count reaches zero, the object is deleted.