diff --git a/src/dom/AttrImpl.cpp b/src/dom/AttrImpl.cpp
index 8c65573a42b215a4055701f1fba52835124c1c2f..c05a6ac2032975a8dcbdbadeba476f61ab4c2a2b 100644
--- a/src/dom/AttrImpl.cpp
+++ b/src/dom/AttrImpl.cpp
@@ -57,8 +57,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:39  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:24  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:39  twl
+ * Initial checkin
  *
  * Revision 1.3  1999/11/08 20:44:10  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -171,8 +176,12 @@ void AttrImpl::setSpecified(bool arg)
 void AttrImpl::setValue(const DOMString &val)
 {
     if (readOnly)
-        throw new DOM_DOMException(
-        DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+    {
+        throw DOM_DOMException
+        (
+            DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null
+        );
+    }
     
     NodeImpl *kid;
     while ((kid = getFirstChild()) != null)         // Remove existing kids
diff --git a/src/dom/CharacterDataImpl.cpp b/src/dom/CharacterDataImpl.cpp
index fd309eea064386f64c5034b30fe614391380eeaf..aff77ddab268cebf26a81a865b4964e4a40f9a5e 100644
--- a/src/dom/CharacterDataImpl.cpp
+++ b/src/dom/CharacterDataImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:41  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:24  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:41  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:11  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -88,7 +93,7 @@ CharacterDataImpl::~CharacterDataImpl() {
 void CharacterDataImpl::appendData(const DOMString &data)
 {
     if(readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     value.appendData(data);
@@ -104,10 +109,10 @@ NodeImpl *CharacterDataImpl::cloneNode(bool deep)
 void CharacterDataImpl::deleteData(int offset, int count)
 {
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     if (count < 0)
-        throw new DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
     
     
     //int tailLength = Math.max(value.length() - count - offset, 0);
@@ -117,11 +122,11 @@ void CharacterDataImpl::deleteData(int offset, int count)
     //}
     //catch (StringIndexOutOfBoundsException e)
     //{
-    //      throw new DOM_DOMException(DOMException.INDEX_SIZE_ERR, null);
+    //      throw DOM_DOMException(DOMException.INDEX_SIZE_ERR, null);
     
     int len = value.length();
     if (offset < 0 || offset >= len)
-        throw new DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
     
     value.deleteData(offset, count);
 };
@@ -156,11 +161,11 @@ void CharacterDataImpl::insertData(int offset, const DOMString &data)
 {
     
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     if (offset<0 || offset>value.length())
-        throw new DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
     
     value.insertData(offset, data);
 }
@@ -170,7 +175,7 @@ void CharacterDataImpl::insertData(int offset, const DOMString &data)
 void CharacterDataImpl::replaceData(int offset, int count, const DOMString &data)
 {
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     deleteData(offset, count);
     insertData(offset, data);
@@ -182,7 +187,7 @@ void CharacterDataImpl::replaceData(int offset, int count, const DOMString &data
 void CharacterDataImpl::setData(const DOMString &arg)
 {
     if (readOnly)
-        throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     value = arg.clone();
 };
 
@@ -194,7 +199,7 @@ DOMString CharacterDataImpl::substringData(int offset, int count)
 {
     
     if(count < 0 || offset < 0 || offset > value.length()-1)
-        throw new DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR,null);
     
     return value.substringData(offset, count);
 };
diff --git a/src/dom/DOMString.cpp b/src/dom/DOMString.cpp
index 73254369cb9525a515c956092c00cc68101ae5ca..51bcf82c871e58ba24549ada1e85785828814bab 100644
--- a/src/dom/DOMString.cpp
+++ b/src/dom/DOMString.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:47  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:47  twl
+ * Initial checkin
  *
  * Revision 1.3  1999/11/08 20:44:12  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -803,7 +808,38 @@ XMLCh *DOMString::rawBuffer() const
 };
 
 
-int DOMString::strcmp(const DOMString &other) const
+char *DOMString::transcode() const
+{
+    if (!fHandle)
+    {
+        char* retP = new char[1];
+        *retP = 0;
+        return retP;
+    }
+
+    // We've got some data, so cap it off first
+    XMLCh* srcP = fHandle->fDSData->fData;
+    srcP[fHandle->fLength] = 0;
+
+    //
+    //  Find out how many chars we need and allocate a buffer big enough
+    //  for that plus a null.
+    //
+    const unsigned int charsNeeded = getDomConverter()->calcRequiredSize(srcP);
+    char* retP = new char[charsNeeded + 1];
+
+    if (!getDomConverter()->transcode(srcP, retP, charsNeeded))
+    {
+        // <TBD> We should throw something here?
+    }
+
+    // Cap it off and return it
+    retP[charsNeeded] = 0;
+    return retP;
+}
+
+
+int DOMString::compareString(const DOMString &other) const
 {
     // Note: this strcmp does not match the semantics
     //       of the standard C strcmp.  All it needs to do is
diff --git a/src/dom/DOMString.hpp b/src/dom/DOMString.hpp
index 5c46413ac7b0f394b9c74b2dd01562a271870f99..f32c04df47438f6cf0a1c559dad21ded6c1c95d2 100644
--- a/src/dom/DOMString.hpp
+++ b/src/dom/DOMString.hpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:48  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:48  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:12  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -263,6 +268,15 @@ public:
       */
     XMLCh       *rawBuffer() const;
 
+    /**
+      * Returns a copy of the string, transcoded to the local code page. The
+      * caller is responsible for cleaning up this buffer.
+      *
+      * @return A pointer to a newly allocated buffer of char elements, which
+      *         represents the original string, but in the local encoding.
+      */
+    char        *transcode() const;
+
     /**
       * Returns a sub-string of the <code>DOMString</code> starting at a specified position.
       *
@@ -321,7 +335,7 @@ public:
       * @param other The object to be compared with
       * @return Either -1, 0, or 1 based on the comparison. 
       */
-    int         strcmp(const DOMString &other) const;
+    int         compareString(const DOMString &other) const;
 
     /**
       * Tells if a <code>DOMString</code> contains the same character data
diff --git a/src/dom/DOM_DOMImplementation.cpp b/src/dom/DOM_DOMImplementation.cpp
index e3a39883d45e0d26e33a5dcb5e2d64a1b06a0ec8..d295de463f556d20da37d0527abef64cefb2e824 100644
--- a/src/dom/DOM_DOMImplementation.cpp
+++ b/src/dom/DOM_DOMImplementation.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:56  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:56  twl
+ * Initial checkin
  *
  * Revision 1.3  1999/11/08 20:44:15  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -155,7 +160,7 @@ DOM_DocumentType DOM_DOMImplementation::createDocumentType(const DOMString &qual
 	const DOMString &internalSubset)
 {
     if (!DocumentImpl::isXMLName(qualifiedName))
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::INVALID_CHARACTER_ERR, null);
     
     return DOM_DocumentType(new DocumentTypeImpl(qualifiedName, publicID, systemID, internalSubset));
diff --git a/src/dom/DocumentFragmentImpl.cpp b/src/dom/DocumentFragmentImpl.cpp
index 1fb16b20f9016f10e78a30081cfcecad6114b3bd..1b0d1a4e7cb8694e120ca0eff1bb573c9f161a3b 100644
--- a/src/dom/DocumentFragmentImpl.cpp
+++ b/src/dom/DocumentFragmentImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:43  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:43  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:23  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -107,5 +112,5 @@ bool DocumentFragmentImpl::isDocumentFragmentImpl()
 
 void DocumentFragmentImpl::setNodeValue(const DOMString &x)
 {
-        throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
 };
diff --git a/src/dom/DocumentImpl.cpp b/src/dom/DocumentImpl.cpp
index 162a54b550dd0af2b1ee4a8fedbe036fd0a11686..fb36824c7e96263ee4e7175dfc283caa5f685fac 100644
--- a/src/dom/DocumentImpl.cpp
+++ b/src/dom/DocumentImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:43  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:43  twl
+ * Initial checkin
  *
  * Revision 1.5  1999/11/08 20:44:24  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -114,7 +119,7 @@ DocumentImpl::DocumentImpl(const DOMString &namespaceURI,
 : NodeImpl(null, namespaceURI, qualifiedName, DOM_Node::DOCUMENT_NODE, false, null)
 {
     if (doctype != null && doctype->getOwnerDocument() != null)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
 	    DOM_DOMException::WRONG_DOCUMENT_ERR, null);
     docType=doctype;
     if (doctype != null)
@@ -159,7 +164,7 @@ bool DocumentImpl::isDocumentImpl() {
 AttrImpl *DocumentImpl::createAttribute(const DOMString &nam)
 {
     if(!isXMLName(nam))
-        throw new DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
     return new AttrImpl(this,nam);
 };
 
@@ -188,7 +193,7 @@ DocumentFragmentImpl *DocumentImpl::createDocumentFragment()
 DocumentTypeImpl *DocumentImpl::createDocumentType(const DOMString &nam)
 {
     if (!isXMLName(nam))
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::INVALID_CHARACTER_ERR, null);
 
     return new DocumentTypeImpl(this, nam);
@@ -199,7 +204,7 @@ DocumentTypeImpl *DocumentImpl::createDocumentType(const DOMString &nam)
 ElementImpl *DocumentImpl::createElement(const DOMString &tagName)
 {
     if(!isXMLName(tagName))
-        throw new DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
     DOMString pooledTagName = this->namePool->getPooledString(tagName);
     return new ElementImpl(this,pooledTagName);
 };
@@ -217,7 +222,7 @@ ElementImpl *DocumentImpl::createElement(const XMLCh *tagName)
 EntityImpl *DocumentImpl::createEntity(const DOMString &nam)
 {
     if (!isXMLName(nam))
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::INVALID_CHARACTER_ERR, null);
 
     return new EntityImpl(this, nam);
@@ -228,7 +233,7 @@ EntityImpl *DocumentImpl::createEntity(const DOMString &nam)
 EntityReferenceImpl *DocumentImpl::createEntityReference(const DOMString &nam)
 {
     if (!isXMLName(nam))
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::INVALID_CHARACTER_ERR, null);
 
     return new EntityReferenceImpl(this, nam);
@@ -239,7 +244,7 @@ EntityReferenceImpl *DocumentImpl::createEntityReference(const DOMString &nam)
 NotationImpl *DocumentImpl::createNotation(const DOMString &nam)
 {
     if (!isXMLName(nam))
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::INVALID_CHARACTER_ERR, null);
 
     return new NotationImpl(this, nam);
@@ -251,7 +256,7 @@ ProcessingInstructionImpl *DocumentImpl::createProcessingInstruction(
                                           const DOMString &target, const DOMString &data)
 {
     if(!isXMLName(target))
-        throw new DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
     return new ProcessingInstructionImpl(this,target,data);
 };
 
@@ -429,7 +434,7 @@ NodeImpl *DocumentImpl::importNode(NodeImpl *source, bool deep)
 
     case DOM_Node::DOCUMENT_NODE : // Document can't be child of Document
     default:                                                // Unknown node type
-        throw new DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
     }
 
     // If deep, replicate and attach the kids.
@@ -452,7 +457,7 @@ NodeImpl *DocumentImpl::insertBefore(NodeImpl *newChild, NodeImpl *refChild)
         ||
         (newChild->isDocumentTypeImpl() && docType!=null)
         )
-        throw new DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
 
     NodeImpl::insertBefore(newChild,refChild);
 
@@ -518,7 +523,7 @@ NodeImpl *DocumentImpl::removeChild(NodeImpl *oldChild)
 
 void DocumentImpl::setNodeValue(const DOMString &x)
 {
-    throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+    throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
 };
 
 
@@ -547,7 +552,7 @@ ElementImpl *DocumentImpl::createElementNS(const DOMString &namespaceURI,
     if (namespaceURI == null || namespaceURI.length() == 0)
 	return createElement(qualifiedName);
     if(!isXMLName(qualifiedName))
-        throw new DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
     //DOMString pooledTagName = this->namePool->getPooledString(qualifiedName);
     return new ElementImpl(this, namespaceURI, qualifiedName);
 }
@@ -559,7 +564,7 @@ AttrImpl *DocumentImpl::createAttributeNS(const DOMString &namespaceURI,
     if (namespaceURI == null || namespaceURI.length() == 0)
 	return createAttribute(qualifiedName);
     if(!isXMLName(qualifiedName))
-        throw new DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::INVALID_CHARACTER_ERR,null);
     return new AttrImpl(this, namespaceURI, qualifiedName); 
 }
 
diff --git a/src/dom/DocumentTypeImpl.cpp b/src/dom/DocumentTypeImpl.cpp
index 5c47620502aad1e8010286c76d88d018858083c3..611a296001caa3e7b78db79e5d30da5c14752b27 100644
--- a/src/dom/DocumentTypeImpl.cpp
+++ b/src/dom/DocumentTypeImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:08:44  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:08:44  twl
+ * Initial checkin
  *
  * Revision 1.3  1999/11/08 20:44:24  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -178,7 +183,7 @@ bool DocumentTypeImpl::isDocumentTypeImpl()
 
 void DocumentTypeImpl::setNodeValue(const DOMString &val)
 {
-    throw new DOM_DOMException(
+    throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
 };
 
diff --git a/src/dom/ElementImpl.cpp b/src/dom/ElementImpl.cpp
index ea62c1736f49e00b13573b1fc6bda6db5df1354d..c9136964f32b58b52193520d70109108f6b016bc 100644
--- a/src/dom/ElementImpl.cpp
+++ b/src/dom/ElementImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:08  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:08  twl
+ * Initial checkin
  *
  * Revision 1.3  1999/11/08 20:44:26  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -212,7 +217,7 @@ void ElementImpl::normalize()
 void ElementImpl::removeAttribute(const DOMString &nam)
 {
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     AttrImpl *att = (AttrImpl *) attributes->getNamedItem(nam);
@@ -231,7 +236,7 @@ void ElementImpl::removeAttribute(const DOMString &nam)
 AttrImpl *ElementImpl::removeAttributeNode(AttrImpl *oldAttr)
 {
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     AttrImpl *found = (AttrImpl *) attributes->getNamedItem(oldAttr->getName());
@@ -246,7 +251,7 @@ AttrImpl *ElementImpl::removeAttributeNode(AttrImpl *oldAttr)
         return found;
     }
     else
-        throw new DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
 	return null;	// just to keep the compiler happy
 };
 
@@ -255,7 +260,7 @@ AttrImpl *ElementImpl::removeAttributeNode(AttrImpl *oldAttr)
 void ElementImpl::setAttribute(const DOMString &nam, const DOMString &val)
 {
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     AttrImpl *newAttr = (AttrImpl *) ownerDocument->createAttribute(nam);
@@ -275,11 +280,11 @@ void ElementImpl::setAttribute(const DOMString &nam, const DOMString &val)
 AttrImpl * ElementImpl::setAttributeNode(AttrImpl *newAttr)
 {
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     if (!(newAttr->isAttrImpl()))
-        throw new DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR, null);
     AttrImpl *oldAttr = (AttrImpl *) attributes->getNamedItem(newAttr->getName());
     if (oldAttr)
 	oldAttr->setOwnerElement(null);	    //DOM Level 2
@@ -302,7 +307,7 @@ AttrImpl * ElementImpl::setAttributeNode(AttrImpl *newAttr)
 
 void ElementImpl::setNodeValue(const DOMString &x)
 {
-    throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+    throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
 };
 
 
@@ -334,7 +339,7 @@ void ElementImpl::setAttributeNS(const DOMString &namespaceURI,
 	return;
     }
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
 	    DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     AttrImpl *newAttr = (AttrImpl *) ownerDocument->createAttributeNS(namespaceURI, qualifiedName);
@@ -358,7 +363,7 @@ void ElementImpl::removeAttributeNS(const DOMString &namespaceURI,
 	return;
     }
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
 	    DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     AttrImpl *att = (AttrImpl *) attributes->getNamedItemNS(namespaceURI, localName);
@@ -386,11 +391,11 @@ AttrImpl *ElementImpl::setAttributeNodeNS(AttrImpl *newAttr)
     if (newAttr && newAttr ->getNamespaceURI() == null)
 	return setAttributeNode(newAttr);
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
 	    DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     if (newAttr -> getOwnerDocument() != this -> getOwnerDocument())
-        throw new DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR, null);
     AttrImpl *oldAttr = (AttrImpl *) attributes->getNamedItemNS(
 	newAttr->getNamespaceURI(), newAttr->getLocalName());
     if (oldAttr)
diff --git a/src/dom/EntityImpl.cpp b/src/dom/EntityImpl.cpp
index 4ab0548e098a25db83b4fd948ae80acea53872ef..cf51a1cb23bbcd644b8b5e80f78d420a61ee8e50 100644
--- a/src/dom/EntityImpl.cpp
+++ b/src/dom/EntityImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:08  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:08  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:26  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -114,7 +119,7 @@ DOMString EntityImpl::getSystemId()
 
 void EntityImpl::setNodeValue(const DOMString &arg)
 {
-    throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+    throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
 };
 
 
diff --git a/src/dom/EntityReferenceImpl.cpp b/src/dom/EntityReferenceImpl.cpp
index d6a46910f584a96bb2b52451ccfc004e00b30172..18d6765ca46a5060e55a1658e60b6fea62b2c62a 100644
--- a/src/dom/EntityReferenceImpl.cpp
+++ b/src/dom/EntityReferenceImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:09  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:09  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:27  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -274,7 +279,7 @@ NodeImpl *EntityReferenceImpl::item(int index) {
 */
 void EntityReferenceImpl::setNodeValue(const DOMString &x)
 {
-    throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+    throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
 }
 
 
@@ -289,7 +294,7 @@ void EntityReferenceImpl::setNodeValue(const DOMString &x)
 void EntityReferenceImpl::setReadOnly(bool readOnl,bool deep)
 {
     if(readOnl==false)
-        throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR,null);
     NodeImpl::setReadOnly(readOnl,deep);
 }
 
diff --git a/src/dom/NamedNodeMapImpl.cpp b/src/dom/NamedNodeMapImpl.cpp
index d6d5e7b3091d26273c723df6076e3d57db74f66b..7d96ef4739d908f2e7ad8417584445f0c8968f40 100644
--- a/src/dom/NamedNodeMapImpl.cpp
+++ b/src/dom/NamedNodeMapImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:11  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:11  twl
+ * Initial checkin
  *
  * Revision 1.3  1999/11/08 20:44:29  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -175,7 +180,7 @@ int NamedNodeMapImpl::findNamePoint(const DOMString &name)
         while(first<=last)
         {
             i=(first+last)/2;
-            int test = name.strcmp(nodes->elementAt(i)->getNodeName());
+            int test = name.compareString(nodes->elementAt(i)->getNodeName());
             if(test==0)
                 return i; // Name found
             else if(test<0)
@@ -259,7 +264,7 @@ void NamedNodeMapImpl::reconcileDefaults()
         {
             nnode = (AttrImpl *) nodes->elementAt(n);
             dnode = (AttrImpl *) defaults->nodes->elementAt(d);
-            int test = nnode->getNodeName().strcmp( dnode->getNodeName());
+            int test = nnode->getNodeName().compareString( dnode->getNodeName());
             // nnode->getNodeName()->compareTo(dnode->getNodeName());
             
             // Same name and a default -- make sure same value
@@ -313,7 +318,7 @@ NodeImpl * NamedNodeMapImpl::removeNamedItem(const DOMString &name)
 {
     int i=findNamePoint(name);
     if(i<0)
-        throw new DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
     else
     {
         NodeImpl * n = (NodeImpl *) (nodes->elementAt(i));
@@ -354,7 +359,7 @@ NodeImpl * NamedNodeMapImpl::removeNamedItem(const DOMString &name)
       return n;
       }
       }
-      throw new DOMExceptionImpl(DOMException.NOT_FOUND_ERR, null);
+      throw DOMExceptionImpl(DOMException.NOT_FOUND_ERR, null);
     **************/ 
 	return null;	// just to keep the compiler happy
 };
@@ -379,10 +384,10 @@ void NamedNodeMapImpl::removeRef(NamedNodeMapImpl *This)
 NodeImpl * NamedNodeMapImpl::setNamedItem(NodeImpl * arg)
 {
     if(arg->getOwnerDocument()!=ownerDoc)
-        throw new DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR,null);
     
     if (arg->owned)
-        throw new DOM_DOMException(DOM_DOMException::INUSE_ATTRIBUTE_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::INUSE_ATTRIBUTE_ERR,null);
     
     arg->owned = true;
     int i=findNamePoint(arg->getNodeName());
@@ -494,13 +499,13 @@ NodeImpl *NamedNodeMapImpl::removeNamedItemNS(const DOMString &namespaceURI,
 	const DOMString &name)
 {
     if (readOnly)
-	throw new DOM_DOMException(
+	throw DOM_DOMException(
 	    DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     if (namespaceURI == null || namespaceURI.length() == 0)
 	return removeNamedItem(name);
     int i = findNamePoint(namespaceURI, name);
     if (i < 0)
-	throw new DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
+	throw DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
     NodeImpl * n = nodes -> elementAt(i);   //node to be removed or replaced
     //find if n has a default value defined in DTD, if so replace n in nodes
     //by its corresponding default value node, otherwise remove n from nodes
diff --git a/src/dom/NodeImpl.cpp b/src/dom/NodeImpl.cpp
index e1ad40d9a9c176e1e24e1fad1afd98f0cbe45776..153ff9050e7cd9a036ea8a41fc0dcf045b917fc6 100644
--- a/src/dom/NodeImpl.cpp
+++ b/src/dom/NodeImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:13  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:13  twl
+ * Initial checkin
  *
  * Revision 1.3  1999/11/08 20:44:29  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -346,7 +351,7 @@ bool NodeImpl::hasChildNodes()
 
 NodeImpl *NodeImpl::insertBefore(NodeImpl *newChild, NodeImpl *refChild) {
     if (readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     
     if(  !(newChild->getOwnerDocument() == ownerDocument   ||
@@ -354,7 +359,7 @@ NodeImpl *NodeImpl::insertBefore(NodeImpl *newChild, NodeImpl *refChild) {
         ( this->isDocumentImpl() &&
         newChild->getOwnerDocument() == (DocumentImpl *)this ) 
         ) )
-        throw new DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::WRONG_DOCUMENT_ERR, null);
     
     // Convert to internal type, to avoid repeated casting  
     //   (left over from the original Java.  Meaningless in this version.)
@@ -365,11 +370,11 @@ NodeImpl *NodeImpl::insertBefore(NodeImpl *newChild, NodeImpl *refChild) {
     for(NodeImpl *a=this->parentNode;treeSafe && a!=null;a=a->parentNode)
         treeSafe=(newInternal!=a);
     if(!treeSafe)
-        throw new DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
     
     // refChild must in fact be a child of this node (or null)
     if(refChild!=null && refChild->parentNode != this)
-        throw new DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR,null);
     
     if (newInternal->isDocumentFragmentImpl())
     {
@@ -395,14 +400,14 @@ NodeImpl *NodeImpl::insertBefore(NodeImpl *newChild, NodeImpl *refChild) {
         kid=kid->getNextSibling())
         {
             if(!isKidOK(this,kid))
-                throw new DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
+                throw DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
         }                       
         while(newInternal->hasChildNodes())     // Move
             insertBefore(newInternal->getFirstChild(),refChild);
     }
     
     else if(!isKidOK(this, newInternal))
-        throw new DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
+        throw DOM_DOMException(DOM_DOMException::HIERARCHY_REQUEST_ERR,null);
     
     else
     {
@@ -509,11 +514,11 @@ tree structure is legal.
   NodeImpl *NodeImpl::removeChild(NodeImpl *oldChild) 
   {
       if (readOnly)
-          throw new DOM_DOMException(
+          throw DOM_DOMException(
           DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
       
       if (oldChild != null && oldChild->parentNode != this)
-          throw new DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
+          throw DOM_DOMException(DOM_DOMException::NOT_FOUND_ERR, null);
       
       // Patch tree past oldChild
       NodeImpl *prev = oldChild->previousSibling;
@@ -565,7 +570,7 @@ tree structure is legal.
   this instanceof Document && 
   newChild.getOwnerDocument() != (Document) this)
   {
-  throw new DOMExceptionImpl(DOMException.WRONG_DOCUMENT_ERR, null);
+  throw DOMExceptionImpl(DOMException.WRONG_DOCUMENT_ERR, null);
   }
       *********************************************************************/
       insertBefore(newChild, oldChild);
@@ -579,7 +584,7 @@ tree structure is legal.
   void NodeImpl::setNodeValue(const DOMString &val)
   {
       if (readOnly)
-          throw new DOM_DOMException(
+          throw DOM_DOMException(
           DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
       
       // Default behavior, overridden in some subclasses
@@ -642,7 +647,7 @@ DOMString NodeImpl::getLocalName()
 void NodeImpl::setPrefix(const DOMString &prefix)
 {
     if (readOnly)
-	throw new DOM_DOMException(
+	throw DOM_DOMException(
 	    DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
     if (isAttrImpl() || isElementImpl()) {
 	name = this -> prefix = prefix;
diff --git a/src/dom/NodeIteratorImpl.cpp b/src/dom/NodeIteratorImpl.cpp
index 77bfd9ae190109d9610915aa7e9eec1a22a61ebb..eec324b760fe7cb9e0796bc3998b91ff333c252e 100644
--- a/src/dom/NodeIteratorImpl.cpp
+++ b/src/dom/NodeIteratorImpl.cpp
@@ -56,6 +56,11 @@
 
 /**
  * $Log$
+ * Revision 1.4  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
  * Revision 1.3  1999/11/23 01:48:16  rahulj
  * Changed 0L to 0. CC under HPUX is happy now.
  *
@@ -165,7 +170,7 @@ void NodeIteratorImpl::setFilter (DOM_NodeFilter filter) {
 
 DOM_Node NodeIteratorImpl::nextNode () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
 	DOM_Node result;
 
@@ -214,7 +219,7 @@ DOM_Node NodeIteratorImpl::nextNode () {
 
 DOM_Node NodeIteratorImpl::previousNode () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 		
 	DOM_Node result;
 
@@ -259,7 +264,7 @@ DOM_Node NodeIteratorImpl::previousNode () {
 /** The node is accepted if it passes the whatToShow and the filter. */
 bool NodeIteratorImpl::acceptNode (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     if (fNodeFilter == 0) {
         return ((fWhatToShow & ((1 << node.getNodeType()) - 1)) != 0);
@@ -291,7 +296,7 @@ DOM_Node NodeIteratorImpl::matchNodeOrParent (DOM_Node node) {
 
 DOM_Node NodeIteratorImpl::nextNode (DOM_Node node, bool visitChildren) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     if (node.isNull()) return fRoot;
 
@@ -334,7 +339,7 @@ DOM_Node NodeIteratorImpl::nextNode (DOM_Node node, bool visitChildren) {
 
 DOM_Node NodeIteratorImpl::previousNode (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     DOM_Node result;
 
@@ -367,7 +372,7 @@ DOM_Node NodeIteratorImpl::previousNode (DOM_Node node) {
 
 void NodeIteratorImpl::removeNode (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     // Implementation note: Fix-up means setting the current node properly
     // after a remove.
diff --git a/src/dom/NotationImpl.cpp b/src/dom/NotationImpl.cpp
index 451252e3a013764730e0ccadc8a60d3ad9c3f1c4..c971358d5709ed0137e356f63939dade6aaa2bbd 100644
--- a/src/dom/NotationImpl.cpp
+++ b/src/dom/NotationImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:17  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:25  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:17  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:31  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -128,14 +133,14 @@ DOMString NotationImpl::getSystemId()
 
 void NotationImpl::setNodeValue(const DOMString &arg)
 {
-    throw new DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
+    throw DOM_DOMException(DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
 };
 
 
 void NotationImpl::setPublicId(const DOMString &arg)
 {
     if(readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR,null);
     
     publicId = arg.clone();
@@ -145,7 +150,7 @@ void NotationImpl::setPublicId(const DOMString &arg)
 void NotationImpl::setSystemId(const DOMString &arg)
 {
     if(readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR,null);
     
     systemId = arg.clone();
diff --git a/src/dom/ProcessingInstructionImpl.cpp b/src/dom/ProcessingInstructionImpl.cpp
index 6e0f6b025aadd57be41fa78a20bb3dec17ab8607..37a5963fb25ef216ee1b9c53052b86dd2b207dbf 100644
--- a/src/dom/ProcessingInstructionImpl.cpp
+++ b/src/dom/ProcessingInstructionImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:18  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:26  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:18  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:32  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -126,7 +131,7 @@ DOMString ProcessingInstructionImpl::getTarget()
 void ProcessingInstructionImpl::setData(const DOMString &arg)
 {
     if(readOnly)
-        throw new DOM_DOMException(
+        throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR,null);
     
     value = arg;
diff --git a/src/dom/TextImpl.cpp b/src/dom/TextImpl.cpp
index a3e67de643534440f189f21b61f39066bfdd2419..169f37321925d3a82991531500514ff810f26144 100644
--- a/src/dom/TextImpl.cpp
+++ b/src/dom/TextImpl.cpp
@@ -56,8 +56,13 @@
 
 /**
  * $Log$
- * Revision 1.1  1999/11/09 01:09:19  twl
- * Initial revision
+ * Revision 1.2  1999/11/30 21:16:26  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
+ * Revision 1.1.1.1  1999/11/09 01:09:19  twl
+ * Initial checkin
  *
  * Revision 1.2  1999/11/08 20:44:33  rahul
  * Swat for adding in Product name and CVS comment log variable.
@@ -105,10 +110,10 @@ NodeImpl *TextImpl::cloneNode(bool deep)
 TextImpl *TextImpl::splitText(int offset)
 {
         if (readOnly)
-                throw new DOM_DOMException(
+                throw DOM_DOMException(
         DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
         if (offset < 0 || offset > value.length() - 1)
-        throw new DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
+        throw DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
                 
         TextImpl *newText = 
                 (TextImpl *) ownerDocument->createTextNode(
diff --git a/src/dom/TreeWalkerImpl.cpp b/src/dom/TreeWalkerImpl.cpp
index 22ed99b7bd52987d9d82a4d8d4814eaa7c8fd12f..67b9a9358416ad2d5fc18b83108bb4e86bd6fb86 100644
--- a/src/dom/TreeWalkerImpl.cpp
+++ b/src/dom/TreeWalkerImpl.cpp
@@ -56,6 +56,11 @@
 
 /**
  * $Log$
+ * Revision 1.3  1999/11/30 21:16:26  roddey
+ * Changes to add the transcode() method to DOMString, which returns a transcoded
+ * version (to local code page) of the DOM string contents. And I changed all of the
+ * exception 'throw by pointer' to 'throw by value' style.
+ *
  * Revision 1.2  1999/11/23 01:48:17  rahulj
  * Changed 0L to 0. CC under HPUX is happy now.
  *
@@ -159,7 +164,7 @@ DOM_NodeFilter TreeWalkerImpl::getFilter () {
 /** Return the current Node. */
 DOM_Node TreeWalkerImpl::getCurrentNode () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     return fCurrentNode;
 }
@@ -168,7 +173,7 @@ DOM_Node TreeWalkerImpl::getCurrentNode () {
 /** Return the current Node. */
 void TreeWalkerImpl::setCurrentNode (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     fCurrentNode = node;
 }
@@ -180,7 +185,7 @@ void TreeWalkerImpl::setCurrentNode (DOM_Node node) {
  */
 DOM_Node TreeWalkerImpl::parentNode () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
 	DOM_Node result;
 
@@ -201,7 +206,7 @@ DOM_Node TreeWalkerImpl::parentNode () {
  */
 DOM_Node TreeWalkerImpl::firstChild () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
 	DOM_Node result;
 
@@ -221,7 +226,7 @@ DOM_Node TreeWalkerImpl::firstChild () {
  */
 DOM_Node TreeWalkerImpl::lastChild () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 		
 	DOM_Node result;
 
@@ -242,7 +247,7 @@ DOM_Node TreeWalkerImpl::lastChild () {
 
 DOM_Node TreeWalkerImpl::previousSibling () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 	
 	DOM_Node result;
 
@@ -263,7 +268,7 @@ DOM_Node TreeWalkerImpl::previousSibling () {
 
 DOM_Node TreeWalkerImpl::nextSibling () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 		
 	DOM_Node result;
 
@@ -284,7 +289,7 @@ DOM_Node TreeWalkerImpl::nextSibling () {
 
 DOM_Node TreeWalkerImpl::previousNode () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     DOM_Node result;
 
@@ -328,7 +333,7 @@ DOM_Node TreeWalkerImpl::previousNode () {
 
 DOM_Node TreeWalkerImpl::nextNode () {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 	
 	DOM_Node result;
 
@@ -373,7 +378,7 @@ DOM_Node TreeWalkerImpl::nextNode () {
 
 DOM_Node TreeWalkerImpl::getParentNode (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 	
 	DOM_Node result;
 
@@ -403,7 +408,7 @@ DOM_Node TreeWalkerImpl::getParentNode (DOM_Node node) {
 
 DOM_Node TreeWalkerImpl::getNextSibling (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 	
 	DOM_Node result;
 
@@ -453,7 +458,7 @@ DOM_Node TreeWalkerImpl::getNextSibling (DOM_Node node) {
 
 DOM_Node TreeWalkerImpl::getPreviousSibling (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 		
 	DOM_Node result;
 
@@ -502,7 +507,7 @@ DOM_Node TreeWalkerImpl::getPreviousSibling (DOM_Node node) {
 
 DOM_Node TreeWalkerImpl::getFirstChild (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 		
 	DOM_Node result;
 
@@ -536,7 +541,7 @@ DOM_Node TreeWalkerImpl::getFirstChild (DOM_Node node) {
 
 DOM_Node TreeWalkerImpl::getLastChild (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
 	DOM_Node result;
 
@@ -568,7 +573,7 @@ DOM_Node TreeWalkerImpl::getLastChild (DOM_Node node) {
 
 short TreeWalkerImpl::acceptNode (DOM_Node node) {
 	if (fDetached)
-		throw new DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
+		throw DOM_DOMException(DOM_DOMException::INVALID_STATE_ERR, null);
 
     if (fNodeFilter == 0) {
         if ( ( fWhatToShow & (1 << (node.getNodeType() - 1))) != 0)