diff options
Diffstat (limited to '')
| -rwxr-xr-x | src/dom/lsimpl.cpp | 437 | ||||
| -rwxr-xr-x | src/dom/lsimpl.cpp.orig | 671 |
2 files changed, 1108 insertions, 0 deletions
diff --git a/src/dom/lsimpl.cpp b/src/dom/lsimpl.cpp new file mode 100755 index 000000000..67c899f35 --- /dev/null +++ b/src/dom/lsimpl.cpp @@ -0,0 +1,437 @@ +/** + * Phoebe DOM Implementation. + * + * This is a C++ approximation of the W3C DOM model, which follows + * fairly closely the specifications in the various .idl files, copies of + * which are provided for reference. Most important is this one: + * + * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html + * + * Authors: + * Bob Jamison + * + * Copyright (C) 2005 Bob Jamison + * + * 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 2.1 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 St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "lsimpl.h" + +#include <stdarg.h> + +namespace org +{ +namespace w3c +{ +namespace dom +{ +namespace ls +{ + + + +/*######################################################################### +## LSParserImpl +#########################################################################*/ + + +/** + * + */ +bool LSParserImpl::getBusy() +{ + return false; +} + +/** + * + */ +Document *LSParserImpl::parse(const LSInput &input) + throw(dom::DOMException, LSException) +{ + + //#### Check the various inputs of 'input' in order, according + //# to the L&S spec + LSReader *lsreader = input.getCharacterStream(); + if (lsreader) + { + DOMString buf; + while (true) + { + int ch = lsreader->get(); + if (ch < 0) + break; + buf.push_back(ch); + } + XmlReader reader; + Document *doc = reader.parse(buf); + return doc; + } + + LSInputStream *inputStream = input.getByteStream(); + if (inputStream) + { + DOMString buf; + while (true) + { + int ch = inputStream->get(); + if (ch < 0) + break; + buf.push_back(ch); + } + XmlReader reader; + Document *doc = reader.parse(buf); + return doc; + } + + DOMString stringData = input.getStringData(); + if (stringData.size() > 0) + { + XmlReader reader; + Document *doc = reader.parse(stringData); + return doc; + } + + DOMString systemId = input.getSystemId(); + if (systemId.size() > 0) + { + //lets not do this yet + return NULL; + } + + DOMString publicId = input.getPublicId(); + if (publicId.size() > 0) + { + //lets not do this yet + return NULL; + } + + return NULL; +} + + +/** + * + */ +Document *LSParserImpl::parseURI(const DOMString &uri) + throw(dom::DOMException, LSException) +{ + return NULL; +} + + /** + * + */ +Node *LSParserImpl::parseWithContext(const LSInput &input, + const Node *contextArg, + unsigned short action) + throw(dom::DOMException, LSException) +{ + return NULL; +} + + + +//################## +//# Non-API methods +//################## + + + + + + + + + + + +/*######################################################################### +## LSSerializerImpl +#########################################################################*/ + + +/** + * + */ +bool LSSerializerImpl::write( + const Node *nodeArg, + const LSOutput &destination) + throw (LSException) +{ + outbuf = ""; + indent = 0; + + writeNode(nodeArg); + + //## Check in order specified in the L&S specs + LSWriter *writer = destination.getCharacterStream(); + if (writer) + { + for (unsigned int i=0 ; i<outbuf.size() ; i++) + { + int ch = outbuf[i]; + writer->put(ch); + } + return true; + } + + LSOutputStream *outputStream = destination.getByteStream(); + if (outputStream) + { + for (unsigned int i=0 ; i<outbuf.size() ; i++) + { + int ch = outbuf[i]; + writer->put(ch); + } + return true; + } + + DOMString systemId = destination.getSystemId(); + if (systemId.size() > 0) + { + //DO SOMETHING + return true; + } + + return false; +} + +/** + * + */ +bool LSSerializerImpl::writeToURI(const Node *nodeArg, + const DOMString &uriArg) + throw(LSException) +{ + outbuf = ""; + indent = 0; + + writeNode(nodeArg); + + DOMString uri = uriArg; + char *fileName = (char *) uri.c_str(); //temporary hack + FILE *f = fopen(fileName, "rb"); + if (!f) + return false; + for (unsigned int i=0 ; i<outbuf.size() ; i++) + { + int ch = outbuf[i]; + fputc(ch, f); + } + fclose(f); + return false; +} + +/** + * + */ +DOMString LSSerializerImpl::writeToString(const Node *nodeArg) + throw(dom::DOMException, LSException) +{ + outbuf = ""; + indent = 0; + + writeNode(nodeArg); + return outbuf; +} + + + +//################## +//# Non-API methods +//################## + + +/** + * + */ +void LSSerializerImpl::spaces() +{ + for (int i=0 ; i<indent ; i++) + { + outbuf.push_back(' '); + } +} + +/** + * + */ +void LSSerializerImpl::po(char *fmt, ...) +{ + char str[257]; + va_list args; + va_start(args, fmt); + vsnprintf(str, 256, fmt, args); + va_end(args) ; + + outbuf.append(str); +} + + +void LSSerializerImpl::pos(const DOMString &str) +{ + outbuf.append(str); +} + +void LSSerializerImpl::poxml(const DOMString &str) +{ + for (unsigned int i=0 ; i<str.size() ; i++) + { + XMLCh ch = (XMLCh) str[i]; + if (ch == '&') + outbuf.append("&r;"); + else if (ch == '<') + outbuf.append("<"); + else if (ch == '>') + outbuf.append(">"); + else if (ch == '"') + outbuf.append("""); + else if (ch == '\'') + outbuf.append("'"); + else + outbuf.push_back(ch); + } +} + +/** + * + */ +void LSSerializerImpl::writeNode(const Node *nodeArg) +{ + Node *node = (Node *)nodeArg; + + int type = node->getNodeType(); + + switch (type) + { + + //############# + //# DOCUMENT + //############# + case Node::DOCUMENT_NODE: + { + Document *doc = dynamic_cast<Document *>(node); + writeNode(doc->getDocumentElement()); + } + break; + + //############# + //# TEXT + //############# + case Node::TEXT_NODE: + { + poxml(node->getNodeValue()); + } + break; + + + //############# + //# CDATA + //############# + case Node::CDATA_SECTION_NODE: + { + pos("<![CDATA["); + poxml(node->getNodeValue()); + pos("]]>"); + } + break; + + + //############# + //# ELEMENT + //############# + case Node::ELEMENT_NODE: + { + + indent+=2; + + NamedNodeMap attributes = node->getAttributes(); + int nrAttrs = attributes.getLength(); + + //### Start open tag + spaces(); + po("<"); + pos(node->getNodeName()); + //if (nrAttrs>0) + // pos(newLine); + + //### Attributes + for (int i=0 ; i<nrAttrs ; i++) + { + Node *attr = attributes.item(i); + spaces(); + pos(attr->getNodeName()); + po("=\""); + pos(attr->getNodeValue()); + po("\""); + //pos(newLine); + } + + //### Finish open tag + //if (nrAttrs>0) + // spaces(); + po(">"); + //pos(newLine); + + //### Contents + //spaces(); + pos(node->getNodeValue()); + + //### Children + for (Node *child = node->getFirstChild() ; + child ; + child=child->getNextSibling()) + { + writeNode(child); + } + + //### Close tag + //spaces(); + po("</"); + pos(node->getNodeName()); + po(">"); + pos(newLine); + + indent-=2; + } + break; + + }//switch + +} + + + + + + + + + + +} //namespace ls +} //namespace dom +} //namespace w3c +} //namespace org + + + + + +/*######################################################################### +## E N D O F F I L E +#########################################################################*/ + diff --git a/src/dom/lsimpl.cpp.orig b/src/dom/lsimpl.cpp.orig new file mode 100755 index 000000000..4397a2517 --- /dev/null +++ b/src/dom/lsimpl.cpp.orig @@ -0,0 +1,671 @@ +/* + * Copyright (c) 2004 World Wide Web Consortium, + * + * (Massachusetts Institute of Technology, European Research Consortium for + * Informatics and Mathematics, Keio University). All Rights Reserved. This + * work is distributed under the W3C(r) Software License [1] 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. + * + * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + */ + +// File: http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/ls.idl + +#include "domimpl.h" +#include "eventsimpl.h" +#include "traversalimpl.h" +#include "lsimpl.h" + + + +namespace org { +namespace w3c { +namespace dom { +namespace ls { + + + + +/*######################################################################### +## DOMImplementationLSImpl +#########################################################################*/ + + +/** + * + */ +LSParser *DOMImplementationLSImpl::createLSParser(unsigned short mode, + const DOMString &schemaType) + throw (dom::DOMException) +{ + return NULL; +} + +/** + * + */ +LSSerializer *DOMImplementationLSImpl::createLSSerializer() +{ + return NULL; +} + +/** + * + */ +LSInput *DOMImplementationLSImpl::createLSInput() +{ + return NULL; +} + +/** + * + */ +LSOutput *DOMImplementationLSImpl::createLSOutput() +{ + return NULL; +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +DOMImplementationLSImpl::~DOMImplementationLSImpl() +{ +} + +/*######################################################################### +## LSParserImpl +#########################################################################*/ + + +/** + * + */ +DOMConfiguration *LSParserImpl::getDomConfig() +{ + return NULL; +} + +/** + * + */ +LSParserFilter *LSParserImpl::getFilter() +{ + return NULL; +} + +/** + * + */ +void LSParserImpl::setFilter(const LSParserFilter *val) +{ +} + +/** + * + */ +bool LSParserImpl::getAsync() +{ + return false; +} + +/** + * + */ +bool LSParserImpl::getBusy() +{ + return false; +} + +/** + * + */ +Document *LSParserImpl::parse(const LSInput *input) + throw(dom::DOMException, LSException) +{ + return NULL; +} + + +/** + * + */ +Document *LSParserImpl::parseURI(const DOMString &uri) + throw(dom::DOMException, LSException) +{ + return NULL; +} + + /** + * + */ +Node *LSParserImpl::parseWithContext(const LSInput *input, + const Node *contextArg, + unsigned short action) + throw(dom::DOMException, LSException) +{ + return NULL; +} + +/** + * + */ +void LSParserImpl::abort() +{ +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSParserImpl::~LSParserImpl() +{ +} + + +/*######################################################################### +## LSInputImpl +#########################################################################*/ + +/** + * + */ +LSReader *LSInputImpl::getCharacterStream() +{ + return NULL; +} + +/** + * + */ +void LSInputImpl::setCharacterStream(const LSReader *val) +{ +} + +/** + * + */ +LSInputStream *LSInputImpl::getByteStream() +{ + return NULL; +} + +/** + * + */ +void LSInputImpl::setByteStream(const LSInputStream *val) +{ +} + +/** + * + */ +DOMString LSInputImpl::getStringData() +{ + return DOMString(""); +} + +/** + * + */ +void LSInputImpl::setStringData(const DOMString &val) +{ +} + +/** + * + */ +DOMString LSInputImpl::getSystemId() +{ + return DOMString(""); +} + +/** + * + */ +void LSInputImpl::setSystemId(const DOMString &val) +{ +} + +/** + * + */ +DOMString LSInputImpl::getPublicId() +{ + return DOMString(""); +} + +/** + * + */ +void LSInputImpl::setPublicId(const DOMString &val) +{ +} + +/** + * + */ +DOMString LSInputImpl::getBaseURI() +{ + return DOMString(""); +} + +/** + * + */ +void LSInputImpl::setBaseURI(const DOMString &val) +{ +} + +/** + * + */ +DOMString LSInputImpl::getEncoding() +{ + return DOMString(""); +} + +/** + * + */ +void LSInputImpl::setEncoding(const DOMString &val) +{ +} + +/** + * + */ +bool LSInputImpl::getCertifiedText() +{ + return false; +} + +/** + * + */ +void LSInputImpl::setCertifiedText(bool val) +{ +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSInputImpl::~LSInputImpl() +{ +} + + + + + + + +/*######################################################################### +## LSResourceResolverImpl +#########################################################################*/ + +/** + * + */ +LSInput *LSResourceResolverImpl::resolveResource(const DOMString &type, + const DOMString &namespaceURI, + const DOMString &publicId, + const DOMString *systemId, + const DOMString &baseURI) +{ +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSResourceResolverImpl::~LSResourceResolverImpl() +{ +} + + + + +/*######################################################################### +## LSParserFilterImpl +#########################################################################*/ + + +/** + * + */ +unsigned short LSParserFilterImpl::startElement(const Element *elementArg) +{ + return 0; +} + +/** + * + */ +unsigned short LSParserFilterImpl::acceptNode(const Node *nodeArg) +{ + return 0; +} + +/** + * + */ +unsigned long LSParserFilterImpl::getWhatToShow() +{ + return 0L; +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSParserFilterImpl::~LSParserFilterImpl() +{ +} + + + + +/*######################################################################### +## LSSerializerImpl +#########################################################################*/ + + +/** + * + */ +DOMConfiguration *LSSerializerImpl::getDomConfig() +{ + return NULL; +} + +/** + * + */ +DOMString LSSerializerImpl::getNewLine() +{ + return DOMString(""); +} + +/** + * + */ +void LSSerializerImpl::setNewLine(const DOMString &val) +{ +} + +/** + * + */ +LSSerializerFilter *LSSerializerImpl::getFilter() +{ + return NULL; +} + +/** + * + */ +void LSSerializerImpl::setFilter(const LSSerializerFilter *val) +{ +} + +/** + * + */ +bool LSSerializerImpl::write(const Node *nodeArg, + const LSOutput *destination) + throw (LSException) +{ + return false; +} + +/** + * + */ +bool LSSerializerImpl::writeToURI(const Node *nodeArg, + const DOMString &uri) + throw(LSException) +{ + return false; +} + +/** + * + */ +DOMString LSSerializerImpl::writeToString(const Node *nodeArg) + throw(dom::DOMException, LSException) +{ + return DOMString(""); +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSSerializerImpl::~LSSerializerImpl() +{ +} + + + + +/*######################################################################### +## LSOutputImpl +#########################################################################*/ + +/** + * + */ +LSWriter *LSOutputImpl::getCharacterStream() +{ + return NULL; +} + +/** + * + */ +void LSOutputImpl::setCharacterStream(const LSWriter *val) +{ +} + +/** + * + */ +LSOutputStream *LSOutputImpl::getByteStream() +{ + return NULL; +} + +/** + * + */ +void LSOutputImpl::setByteStream(const LSOutputStream *val) +{ +} + +/** + * + */ +DOMString LSOutputImpl::getSystemId() +{ + return DOMString(""); +} + +/** + * + */ +void LSOutputImpl::setSystemId(const DOMString &val) +{ +} + +/** + * + */ +DOMString LSOutputImpl::getEncoding() +{ + return DOMString(""); +} + +/** + * + */ +void LSOutputImpl::setEncoding(const DOMString &val) +{ +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSOutputImpl::~LSOutputImpl() +{ +} + + + +/*######################################################################### +## LSProgressEventImpl +#########################################################################*/ + +/** + * + */ +LSInput *LSProgressEventImpl::getInput() +{ + return NULL; +} + +/** + * + */ +unsigned long LSProgressEventImpl::getPosition() +{ + return 0L; +} + +/** + * + */ +unsigned long LSProgressEventImpl::getTotalSize() +{ + return 0L; +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSProgressEventImpl::~LSProgressEventImpl() +{ +} + + + +/*######################################################################### +## LSLoadEventImpl +#########################################################################*/ + +/** + * + */ +Document *LSLoadEventImpl::getNewDocument() +{ + return NULL; +} + +/** + * + */ +LSInput *LSLoadEventImpl::getInput() +{ + return NULL; +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSLoadEventImpl::~LSLoadEventImpl() +{ +} + + + + + +/*######################################################################### +## LSSerializerFilterImpl +#########################################################################*/ + + +/** + * + */ +unsigned long LSSerializerFilterImpl::getWhatToShow() +{ + return 0L; +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +LSSerializerFilterImpl::~LSSerializerFilterImpl() +{ +} + + + + + + + + +} //namespace ls +} //namespace dom +} //namespace w3c +} //namespace org + + + + + +/*######################################################################### +## E N D O F F I L E +#########################################################################*/ + |
