Return-Path: Delivered-To: apmail-xml-xalan-cvs-archive@xml.apache.org Received: (qmail 91638 invoked by uid 500); 3 Jan 2003 08:03:16 -0000 Mailing-List: contact xalan-cvs-help@xml.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: Delivered-To: mailing list xalan-cvs@xml.apache.org Received: (qmail 91613 invoked from network); 3 Jan 2003 08:03:15 -0000 Date: 3 Jan 2003 08:03:14 -0000 Message-ID: <20030103080314.35581.qmail@icarus.apache.org> From: dbertoni@apache.org To: xml-xalan-cvs@apache.org Subject: cvs commit: xml-xalan/c/src/XPath XObject.cpp XObject.hpp X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N dbertoni 2003/01/03 00:03:14 Modified: c/src/XPath XObject.cpp XObject.hpp Log: New conversion functions. Revision Changes Path 1.32 +35 -0 xml-xalan/c/src/XPath/XObject.cpp Index: XObject.cpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XPath/XObject.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- XObject.cpp 2 Jan 2003 17:39:08 -0000 1.31 +++ XObject.cpp 3 Jan 2003 08:03:14 -0000 1.32 @@ -144,6 +144,41 @@ +double +XObject::number( + XPathExecutionContext& executionContext, + const XalanNode& theNode) +{ + XPathExecutionContext::GetAndReleaseCachedString theGuard(executionContext); + + XalanDOMString& theString = theGuard.get(); + + XObject::string(theNode, theString); + + return XObject::number(theString); +} + + + +double +XObject::number( + XPathExecutionContext& executionContext, + const NodeRefListBase& theNodeList) +{ + if (theNodeList.getLength() == 0) + { + return number(s_nullString); + } + else + { + assert(theNodeList.item(0) != 0); + + return number(executionContext, *theNodeList.item(0)); + } +} + + + void XObject::dereferenced() { 1.26 +51 -19 xml-xalan/c/src/XPath/XObject.hpp Index: XObject.hpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XPath/XObject.hpp,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- XObject.hpp 2 Jan 2003 17:39:08 -0000 1.25 +++ XObject.hpp 3 Jan 2003 08:03:14 -0000 1.26 @@ -340,7 +340,7 @@ static bool boolean(double theNumber) { - return DoubleSupport::isNaN(theNumber) || DoubleSupport::isPositiveZero(theNumber) ? false : true; + return !DoubleSupport::isNaN(theNumber) && !DoubleSupport::equal(theNumber, 0.0); } /** @@ -392,31 +392,48 @@ } } + /** + * Static conversion function. + * + * @return The string value of the number + */ static void string( - const NodeRefListBase& theNodeList, - FormatterListener& formatterListener, - MemberFunctionPtr function) + double theNumber, + XalanDOMString& theString) { - if (theNodeList.getLength() > 0) - { - assert(theNodeList.item(0) != 0); + DoubleToDOMString(theNumber, theString); + } - DOMServices::getNodeData(*theNodeList.item(0), formatterListener, function); - } + static void + string( + double theNumber, + FormatterListener& formatterListener, + MemberFunctionPtr function) + { + DOMStringHelper::DoubleToCharacters(theNumber, formatterListener, function); } /** * Static conversion function. * - * @return The string value of the number + * @return The string value of the node */ static void string( - double theNumber, + const XalanNode& theNode, XalanDOMString& theString) { - DoubleToDOMString(theNumber, theString); + DOMServices::getNodeData(theNode, theString); + } + + static void + string( + const XalanNode& theNode, + FormatterListener& formatterListener, + MemberFunctionPtr function) + { + DOMServices::getNodeData(theNode, formatterListener, function); } /** @@ -433,17 +450,22 @@ { assert(theNodeList.item(0) != 0); - DOMServices::getNodeData(*theNodeList.item(0), theString); + string(*theNodeList.item(0), theString); } } static void string( - double theNumber, - FormatterListener& formatterListener, - MemberFunctionPtr function) + const NodeRefListBase& theNodeList, + FormatterListener& formatterListener, + MemberFunctionPtr function) { - DOMStringHelper::DoubleToCharacters(theNumber, formatterListener, function); + if (theNodeList.getLength() > 0) + { + assert(theNodeList.item(0) != 0); + + DOMServices::getNodeData(*theNodeList.item(0), formatterListener, function); + } } /** @@ -470,8 +492,18 @@ */ static double number( - XPathExecutionContext& executionContext, - const MutableNodeRefList& theNodeList); + XPathExecutionContext& executionContext, + const NodeRefListBase& theNodeList); + + /** + * Static conversion function. + * + * @return The number value of the node + */ + static double + number( + XPathExecutionContext& executionContext, + const XalanNode& theNode); // All XObject instances are controlled by an instance of an XObjectFactory. --------------------------------------------------------------------- To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org For additional commands, e-mail: xalan-cvs-help@xml.apache.org