dbertoni    01/01/25 09:14:39

  Modified:    c/src/XPath FunctionConcat.cpp FunctionNormalizeSpace.cpp
                        FunctionNumber.cpp FunctionString.cpp
                        FunctionStringLength.cpp FunctionSubstring.cpp
                        FunctionSubstringAfter.cpp
                        FunctionSubstringBefore.cpp FunctionSum.cpp
                        FunctionTranslate.cpp XObject.cpp
                        XPathExecutionContext.hpp XPathExpression.cpp
                        XPathFunctionTable.cpp XPathProcessorImpl.cpp
                        XResultTreeFrag.hpp XStringCached.cpp
  Log:
  Change for Solaris port.
  
  Revision  Changes    Path
  1.9       +16 -12    xml-xalan/c/src/XPath/FunctionConcat.cpp
  
  Index: FunctionConcat.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionConcat.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FunctionConcat.cpp        2000/12/21 04:29:29     1.8
  +++ FunctionConcat.cpp        2001/01/25 17:14:10     1.9
  @@ -110,13 +110,15 @@
   
        XPathExecutionContext::GetAndReleaseCachedString        
theResult(executionContext);
   
  +     XalanDOMString&                 theString = theResult.get();
  +
        const XalanDOMString&   theArg1 = arg1->str();
        const XalanDOMString&   theArg2 = arg2->str();
   
  -     reserve(theResult, length(theArg1) + length(theArg2) + 1);
  +     reserve(theString, length(theArg1) + length(theArg2) + 1);
   
  -     append(theResult, theArg1);
  -     append(theResult, theArg2);
  +     append(theString, theArg1);
  +     append(theString, theArg2);
   
        return executionContext.getXObjectFactory().createString(theResult);
   }
  @@ -135,15 +137,17 @@
   
        XPathExecutionContext::GetAndReleaseCachedString        
theResult(executionContext);
   
  +     XalanDOMString&                 theString = theResult.get();
  +
        const XalanDOMString&   theArg1 = arg1->str();
        const XalanDOMString&   theArg2 = arg2->str();
        const XalanDOMString&   theArg3 = arg3->str();
   
  -     reserve(theResult, length(theArg1) + length(theArg2) + length(theArg3) 
+ 1);
  +     reserve(theString, length(theArg1) + length(theArg2) + length(theArg3) 
+ 1);
   
  -     append(theResult, theArg1);
  -     append(theResult, theArg2);
  -     append(theResult, theArg3);
  +     append(theString, theArg1);
  +     append(theString, theArg2);
  +     append(theString, theArg3);
   
        return executionContext.getXObjectFactory().createString(theResult);
   }
  @@ -174,14 +178,16 @@
   
        XPathExecutionContext::GetAndReleaseCachedString        
theResult(executionContext);
   
  -     reserve(theResult, theCombinedLength + 1);
  +     XalanDOMString&         theString = theResult.get();
   
  +     reserve(theString, theCombinedLength + 1);
  +
        {
                XObjectArgVectorType::const_iterator    i = args.begin();
   
                for(; i != theEnd; ++i)
                {
  -                     append(theResult, (*i)->str());
  +                     append(theString, (*i)->str());
                }
        }
   
  @@ -205,7 +211,5 @@
   const XalanDOMString
   FunctionConcat::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The concat() function takes at least two arguments!");
  +     return XALAN_STATIC_UCODE_STRING("The concat() function takes at least 
two arguments!");
   }
  -
  
  
  
  1.10      +4 -2      xml-xalan/c/src/XPath/FunctionNormalizeSpace.cpp
  
  Index: FunctionNormalizeSpace.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionNormalizeSpace.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FunctionNormalizeSpace.cpp        2000/12/06 21:00:37     1.9
  +++ FunctionNormalizeSpace.cpp        2001/01/25 17:14:11     1.10
  @@ -101,9 +101,11 @@
                // Get a cached string...
                XPathExecutionContext::GetAndReleaseCachedString        
theData(executionContext);
   
  -             DOMServices::getNodeData(*context, theData);
  +             XalanDOMString&         theString = theData.get();
   
  -             return normalize(executionContext, theData);
  +             DOMServices::getNodeData(*context, theString);
  +
  +             return normalize(executionContext, theString);
        }
   }
   
  
  
  
  1.6       +4 -2      xml-xalan/c/src/XPath/FunctionNumber.cpp
  
  Index: FunctionNumber.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionNumber.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionNumber.cpp        2000/12/06 21:00:41     1.5
  +++ FunctionNumber.cpp        2001/01/25 17:14:12     1.6
  @@ -101,9 +101,11 @@
                // Get a cached string...
                XPathExecutionContext::GetAndReleaseCachedString        
theData(executionContext);
   
  -             DOMServices::getNodeData(*context, theData);
  +             XalanDOMString&         theString = theData.get();
   
  -             return 
executionContext.getXObjectFactory().createNumber(DOMStringToDouble(theData));
  +             DOMServices::getNodeData(*context, theString);
  +
  +             return 
executionContext.getXObjectFactory().createNumber(DOMStringToDouble(theString));
        }
   }
   
  
  
  
  1.9       +3 -1      xml-xalan/c/src/XPath/FunctionString.cpp
  
  Index: FunctionString.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionString.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FunctionString.cpp        2000/12/21 04:29:29     1.8
  +++ FunctionString.cpp        2001/01/25 17:14:13     1.9
  @@ -101,7 +101,9 @@
                // Get a cached string...
                XPathExecutionContext::GetAndReleaseCachedString        
theData(executionContext);
   
  -             DOMServices::getNodeData(*context, theData);
  +             XalanDOMString&         theString = theData.get();
  +
  +             DOMServices::getNodeData(*context, theString);
   
                return 
executionContext.getXObjectFactory().createString(theData);
        }
  
  
  
  1.6       +4 -2      xml-xalan/c/src/XPath/FunctionStringLength.cpp
  
  Index: FunctionStringLength.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionStringLength.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionStringLength.cpp  2000/12/06 21:00:55     1.5
  +++ FunctionStringLength.cpp  2001/01/25 17:14:13     1.6
  @@ -101,9 +101,11 @@
                // Get a cached string...
                XPathExecutionContext::GetAndReleaseCachedString        
theData(executionContext);
   
  -             DOMServices::getNodeData(*context, theData);
  +             XalanDOMString&         theString = theData.get();
   
  -             return 
executionContext.getXObjectFactory().createNumber(length(theData));
  +             DOMServices::getNodeData(*context, theString);
  +
  +             return 
executionContext.getXObjectFactory().createNumber(length(theString));
        }
   }
   
  
  
  
  1.11      +4 -2      xml-xalan/c/src/XPath/FunctionSubstring.cpp
  
  Index: FunctionSubstring.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionSubstring.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- FunctionSubstring.cpp     2000/12/21 04:29:29     1.10
  +++ FunctionSubstring.cpp     2001/01/25 17:14:14     1.11
  @@ -254,10 +254,12 @@
   
                                
XPathExecutionContext::GetAndReleaseCachedString        
theResult(executionContext);
   
  +                             XalanDOMString&         theString = 
theResult.get();
  +
                                assign(
  -                                             theResult,
  +                                             theString,
                                                toCharArray(theSourceString) + 
theStartIndex,
  -                                             theSubstringLength );
  +                                             theSubstringLength);
   
                                return 
executionContext.getXObjectFactory().createString(theResult);
                        }
  
  
  
  1.10      +3 -1      xml-xalan/c/src/XPath/FunctionSubstringAfter.cpp
  
  Index: FunctionSubstringAfter.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionSubstringAfter.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FunctionSubstringAfter.cpp        2000/12/21 04:29:29     1.9
  +++ FunctionSubstringAfter.cpp        2001/01/25 17:14:15     1.10
  @@ -143,8 +143,10 @@
   
                        XPathExecutionContext::GetAndReleaseCachedString        
theResult(executionContext);
   
  +                     XalanDOMString&         theString = theResult.get();
  +
                        assign(
  -                                     theResult,
  +                                     theString,
                                        theFirstCharacter,
                                        theSubstringLength);
   
  
  
  
  1.10      +3 -1      xml-xalan/c/src/XPath/FunctionSubstringBefore.cpp
  
  Index: FunctionSubstringBefore.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionSubstringBefore.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FunctionSubstringBefore.cpp       2000/12/21 04:29:29     1.9
  +++ FunctionSubstringBefore.cpp       2001/01/25 17:14:15     1.10
  @@ -131,8 +131,10 @@
                {
                        XPathExecutionContext::GetAndReleaseCachedString        
theResult(executionContext);
   
  +                     XalanDOMString&         theString = theResult.get();
  +
                        assign(
  -                                     theResult,
  +                                     theString,
                                        toCharArray(theFirstString),
                                        theIndex);
   
  
  
  
  1.7       +5 -3      xml-xalan/c/src/XPath/FunctionSum.cpp
  
  Index: FunctionSum.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionSum.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FunctionSum.cpp   2001/01/03 19:32:38     1.6
  +++ FunctionSum.cpp   2001/01/25 17:14:16     1.7
  @@ -106,13 +106,15 @@
   
        XPathExecutionContext::GetAndReleaseCachedString        
theData(executionContext);
   
  +     XalanDOMString&         theString = theData.get();
  +
        for (unsigned int i = 0; i < count; i++)
        {
  -             DOMServices::getNodeData(*nl.item(i), theData);
  +             DOMServices::getNodeData(*nl.item(i), theString);
   
  -             sum += DoubleSupport::toDouble(theData);
  +             sum += DoubleSupport::toDouble(theString);
   
  -             clear(theData);
  +             clear(theString);
        }
   
        return executionContext.getXObjectFactory().createNumber(sum);
  
  
  
  1.10      +6 -6      xml-xalan/c/src/XPath/FunctionTranslate.cpp
  
  Index: FunctionTranslate.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionTranslate.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FunctionTranslate.cpp     2000/12/21 04:29:29     1.9
  +++ FunctionTranslate.cpp     2001/01/25 17:14:16     1.10
  @@ -140,10 +140,12 @@
        // A string to hold the result.
        XPathExecutionContext::GetAndReleaseCachedString        
theResult(executionContext);
   
  +     XalanDOMString&         theString = theResult.get();
  +
        // The result string can only be as large as the first string, so
        // just reserve the space now.  Also reserve space for the
        // terminating 0.
  -     reserve(theResult, theFirstStringLength + 1);
  +     reserve(theString, theFirstStringLength + 1);
   
        for (unsigned int i = 0; i < theFirstStringLength; i++)
        {
  @@ -155,13 +157,13 @@
                {
                        // Didn't find the character in the second string, so it
                        // is not translated.
  -                     append(theResult, theCurrentChar);
  +                     append(theString, theCurrentChar);
                }
                else if (theIndex < theThirdStringLength)
                {
                        // OK, there's a corresponding character in the
                        // third string, so do the translation...
  -                     append(theResult, charAt(theThirdString, theIndex));
  +                     append(theString, charAt(theThirdString, theIndex));
                }
                else
                {
  @@ -207,7 +209,5 @@
   const XalanDOMString
   FunctionTranslate::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The translate() function takes three arguments!");
  +     return XALAN_STATIC_UCODE_STRING("The translate() function takes three 
arguments!");
   }
  -
  
  
  
  1.20      +13 -9     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.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XObject.cpp       2001/01/08 18:25:17     1.19
  +++ XObject.cpp       2001/01/25 17:14:17     1.20
  @@ -214,7 +214,9 @@
        const XalanDOMString
        operator()(const XalanNode&             theNode) const
        {
  -             XPathExecutionContext::GetAndReleaseCachedString        
theString(m_executionContext);
  +             XPathExecutionContext::GetAndReleaseCachedString        
theGuard(m_executionContext);
  +
  +             XalanDOMString&         theString = theGuard.get();
   
                getStringFromNode(theNode, theString);
   
  @@ -265,9 +267,9 @@
        {
                XPathExecutionContext::GetAndReleaseCachedString        
theString(m_executionContext);
   
  -             getStringFromNode(theNode, theString);
  +             getStringFromNode(theNode, theString.get());
   
  -             return DoubleSupport::toDouble(theString);
  +             return DoubleSupport::toDouble(theString.get());
        }
   
        void
  @@ -323,24 +325,24 @@
                                const XalanNode* const  theLHSNode = 
theLHSNodeSet.item(i);
                                assert(theLHSNode != 0);
   
  -                             theTypeFunction(*theLHSNode, s1);
  +                             theTypeFunction(*theLHSNode, s1.get());
   
                                for(unsigned int k = 0; k < len2 && theResult 
== false; k++)
                                {
                                        const XalanNode* const  theRHSNode = 
theRHSNodeSet.item(k);
                                        assert(theRHSNode != 0);
   
  -                                     theTypeFunction(*theRHSNode, s2);
  +                                     theTypeFunction(*theRHSNode, s2.get());
   
  -                                     if(theCompareFunction(s1, s2) == true)
  +                                     if(theCompareFunction(s1.get(), 
s2.get()) == true)
                                        {
                                                theResult = true;
                                        }
   
  -                                     clear(s2);
  +                                     clear(s2.get());
                                }
   
  -                             clear(s1);
  +                             clear(s1.get());
                        }
                }
        }
  @@ -362,8 +364,10 @@
        bool                            theResult = false;
   
        const unsigned int      len1 = theLHSNodeSet.getLength();
  +
  +     XPathExecutionContext::GetAndReleaseCachedString        
theGuard(executionContext);
   
  -     XPathExecutionContext::GetAndReleaseCachedString        
theLHS(executionContext);
  +     XalanDOMString&         theLHS = theGuard.get();
   
        for(unsigned int i = 0; i < len1 && theResult == false; i++)
        {
  
  
  
  1.36      +0 -7      xml-xalan/c/src/XPath/XPathExecutionContext.hpp
  
  Index: XPathExecutionContext.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExecutionContext.hpp,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- XPathExecutionContext.hpp 2001/01/17 16:57:37     1.35
  +++ XPathExecutionContext.hpp 2001/01/25 17:14:18     1.36
  @@ -481,13 +481,6 @@
                        return *m_string;
                }
   
  -             operator XalanDOMString& () const
  -             {
  -                     assert(m_string != 0);
  -
  -                     return *m_string;
  -             }
  -
                XPathExecutionContext&
                getExecutionContext() const
                {
  
  
  
  1.22      +9 -1      xml-xalan/c/src/XPath/XPathExpression.cpp
  
  Index: XPathExpression.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExpression.cpp,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- XPathExpression.cpp       2001/01/16 02:34:46     1.21
  +++ XPathExpression.cpp       2001/01/25 17:14:19     1.22
  @@ -648,7 +648,15 @@
        {
                assert(getToken(i) != 0);
   
  -             thePrintWriter.print(" '");
  +             if (i > 0)
  +             {
  +                     thePrintWriter.print(" '");
  +             }
  +             else
  +             {
  +                     thePrintWriter.print("'");
  +             }
  +
                thePrintWriter.print(getToken(i)->str());
                thePrintWriter.print("'");
        }
  
  
  
  1.13      +1 -1      xml-xalan/c/src/XPath/XPathFunctionTable.cpp
  
  Index: XPathFunctionTable.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathFunctionTable.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XPathFunctionTable.cpp    2000/11/06 19:33:49     1.12
  +++ XPathFunctionTable.cpp    2001/01/25 17:14:20     1.13
  @@ -119,7 +119,7 @@
        assert(length(theFunctionName) != 0);
   
        // See if a function of that name is already installed...
  -     const FunctionNameIndexMapType::const_iterator  i =
  +     const FunctionNameIndexMapType::iterator        i =
                m_FunctionNameIndex.find(theFunctionName);
   
        if (i != m_FunctionNameIndex.end())
  
  
  
  1.30      +89 -36    xml-xalan/c/src/XPath/XPathProcessorImpl.cpp
  
  Index: XPathProcessorImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathProcessorImpl.cpp,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- XPathProcessorImpl.cpp    2001/01/18 18:50:59     1.29
  +++ XPathProcessorImpl.cpp    2001/01/25 17:14:21     1.30
  @@ -65,6 +65,7 @@
   #include <PlatformSupport/DOMStringHelper.hpp>
   #include <PlatformSupport/DOMStringPrintWriter.hpp>
   #include <PlatformSupport/DoubleSupport.hpp>
  +#include <PlatformSupport/XalanXMLChar.hpp>
   
   
   
  @@ -118,6 +119,11 @@
   
        Expr();
   
  +     if (length(m_token) != 0)
  +     {
  +             error("Extra illegal tokens!");
  +     }
  +
        m_xpath = 0;
        m_expression = 0;
        m_prefixResolver = 0;
  @@ -148,6 +154,11 @@
   
        Pattern();
   
  +     if (length(m_token) != 0)
  +     {
  +             error("Extra illegal tokens!");
  +     }
  +
        // Terminate for safety.
        m_expression->appendOpCode(XPathExpression::eENDOP);
   
  @@ -175,7 +186,6 @@
   
        bool            isStartOfPat = true;
        bool            isAttrName = false;
  -     bool            isNum = false;
   
        // Nesting of '[' so we can know if the given element should be 
        // counted inside the m_patternMap.
  @@ -192,7 +202,6 @@
                        {
                                if(startSubstring != -1)
                                {
  -                                     isNum = false;
                                        isStartOfPat = 
mapPatternElemPos(nesting, isStartOfPat, isAttrName);
   
                                        isAttrName = false;
  @@ -227,7 +236,6 @@
                        {
                                if(startSubstring != -1)
                                {
  -                                     isNum = false;
                                        isStartOfPat = 
mapPatternElemPos(nesting, isStartOfPat, isAttrName);
                                        isAttrName = false;
   
  @@ -264,7 +272,6 @@
                        {
                                if(startSubstring != -1)
                                {
  -                                     isNum = false;
                                        isStartOfPat = 
mapPatternElemPos(nesting, isStartOfPat, isAttrName);
                                        isAttrName = false;
   
  @@ -290,12 +297,10 @@
                        {
                                if(XalanUnicode::charHyphenMinus == c)
                                {
  -                                     if(!(isNum || startSubstring == -1))
  +                                     if(!(startSubstring == -1))
                                        {
                                                break;
                                        }
  -
  -                                     isNum = false;
                                }
                        }
                        // fall-through on purpose
  @@ -319,7 +324,6 @@
                        {
                                if(startSubstring != -1)
                                {
  -                                     isNum = false;
                                        isStartOfPat = 
mapPatternElemPos(nesting, isStartOfPat, isAttrName);
                                        isAttrName = false;
   
  @@ -382,7 +386,6 @@
                                                }
                                        }
   
  -                                     isNum = false;
                                        isAttrName = false;
                                        startSubstring = -1;
                                        posOfNSSep = -1;
  @@ -404,11 +407,41 @@
                                {
                                        startSubstring = i;
   
  -                                     isNum = isXMLDigit(c);
  -                             }
  -                             else if(isNum == true)
  -                             {
  -                                     isNum = isXMLDigit(c);
  +                                     if (XalanXMLChar::isDigit(c) == true)
  +                                     {
  +                                             bool    gotFullStop = false;
  +
  +                                             while(i < nChars - 1)
  +                                             {
  +                                                     ++i;
  +
  +                                                     const XalanDOMChar      
currentChar = charAt(pat, i);
  +
  +                                                     if (currentChar == 
XalanUnicode::charFullStop)
  +                                                     {
  +                                                             if (gotFullStop 
== false)
  +                                                             {
  +                                                                     
gotFullStop = true;
  +                                                             }
  +                                                             else
  +                                                             {
  +                                                                     --i;
  +
  +                                                                     break;
  +                                                             }
  +                                                     }
  +                                                     else if 
(XalanXMLChar::isDigit(currentChar) == false)
  +                                                     {
  +                                                             --i;
  +
  +                                                             break;
  +                                                     }
  +                                             }
  +
  +                                             addToTokenQueue(substring(pat, 
startSubstring, i + 1));
  +
  +                                             startSubstring = -1;
  +                                     }
                                }
                        }
                }
  @@ -416,8 +449,6 @@
   
        if(startSubstring != -1)
        {
  -             isNum = false;
  -
                isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, 
isAttrName);
   
                if(-1 != posOfNSSep)
  @@ -430,11 +461,11 @@
                }
        }
   
  -     if(0 == m_expression->tokenQueueSize())
  +     if (0 == m_expression->tokenQueueSize())
        {
                error("Empty expression!");
        }
  -     else if(0 != targetStrings)
  +     else if (0 != targetStrings)
        {
                recordTokenString(*targetStrings);
        }
  @@ -537,7 +568,6 @@
   
   
   
  -
   void
   XPathProcessorImpl::addToTokenQueue(const XalanDOMString&    s) const
   {
  @@ -756,7 +786,14 @@
        const XObject* const    theNextToken =
                        m_expression->getNextToken();
   
  -     m_token = theNextToken == 0 ? XalanDOMString() : theNextToken->str();
  +     if (theNextToken == 0)
  +     {
  +             clear(m_token);
  +     }
  +     else
  +     {
  +             m_token = theNextToken->str();
  +     }
   
        if(length(m_token) > 0)
        {
  @@ -906,14 +943,21 @@
   
                DOMStringPrintWriter    thePrintWriter(emsg);
   
  +             thePrintWriter.print(msg);
  +
  +             thePrintWriter.println();
  +
                if (length(theCurrentPattern) != 0)
                {
                        thePrintWriter.print(XALAN_STATIC_UCODE_STRING("pattern 
= '"));
  -                     thePrintWriter.println(theCurrentPattern);
  +                     thePrintWriter.print(theCurrentPattern);
  +                     thePrintWriter.println("'");
                }
   
  -             thePrintWriter.print(msg);
  +             // Back up one token, since we've consumed one...
  +             m_expression->getPreviousToken();
   
  +             // Ask the expression to dump the remaining tokens...
                m_expression->dumpRemainingTokenQueue(thePrintWriter);
        }
   
  @@ -1330,7 +1374,7 @@
   
        bool            isNeg = false;
   
  -     if(m_tokenChar == XalanUnicode::charHyphenMinus)
  +     if(tokenIs(XalanUnicode::charHyphenMinus) == true)
        {
                nextToken();
   
  @@ -1528,7 +1572,8 @@
   
        const int       opPos = m_expression->opCodeMapLength();
   
  -     if(m_tokenChar == XalanUnicode::charApostrophe || m_tokenChar == 
XalanUnicode::charQuoteMark)
  +     if(tokenIs(XalanUnicode::charApostrophe) == true ||
  +        tokenIs(XalanUnicode::charQuoteMark) == true)
        {
                m_expression->appendOpCode(XPathExpression::eOP_LITERAL);
   
  @@ -1537,7 +1582,7 @@
                m_expression->updateOpCodeLength(XPathExpression::eOP_LITERAL,
                                                                                
 opPos);
        }
  -     else if(m_tokenChar == XalanUnicode::charDollarSign)
  +     else if(tokenIs(XalanUnicode::charDollarSign) == true)
        {
                nextToken(); // consume '$'
   
  @@ -1548,7 +1593,7 @@
                m_expression->updateOpCodeLength(XPathExpression::eOP_VARIABLE,
                                                                                
         opPos);
        }
  -     else if(m_tokenChar == XalanUnicode::charLeftParenthesis)
  +     else if(tokenIs(XalanUnicode::charLeftParenthesis) == true)
        {
                nextToken();
   
  @@ -1561,10 +1606,10 @@
                m_expression->updateOpCodeLength(XPathExpression::eOP_GROUP,
                                                                                
 opPos);
        }
  -     else if((XalanUnicode::charFullStop == m_tokenChar &&
  -                             m_token.length() > 1 &&
  -                             isXMLDigit(charAt(m_token, 1)) == true)
  -                      || isXMLDigit(m_tokenChar) == true)
  +     else if((tokenIs(XalanUnicode::charFullStop) == true &&
  +                             length(m_token) > 1 &&
  +                             XalanXMLChar::isDigit(charAt(m_token, 1)) == 
true) ||
  +                             XalanXMLChar::isDigit(m_tokenChar) == true)
        {
                m_expression->appendOpCode(XPathExpression::eOP_NUMBERLIT);
   
  @@ -1610,7 +1655,7 @@
   
        consumeExpected(XalanUnicode::charLeftParenthesis);
   
  -     while(tokenIs(XalanUnicode::charRightParenthesis) == false)
  +     while(tokenIs(XalanUnicode::charRightParenthesis) == false && 
isEmpty(m_token) == false)
        {
                if(tokenIs(XalanUnicode::charComma) == true)
                {
  @@ -1623,7 +1668,6 @@
   
                if(tokenIs(XalanUnicode::charRightParenthesis) == false)
                {
  -
                        consumeExpected(XalanUnicode::charComma);
   
                        if(tokenIs(XalanUnicode::charRightParenthesis) == true)
  @@ -1804,6 +1848,9 @@
                                                                   theArgs);
   
                m_expression->appendOpCode(XPathExpression::eNODETYPE_NODE);
  +
  +             // Tell how long the entire step is.
  +             m_expression->updateOpCodeLength(opPos);
        }
        else if(tokenIs(s_dotDotString) == true)
        {
  @@ -1816,8 +1863,14 @@
                                                                   theArgs);
   
                m_expression->appendOpCode(XPathExpression::eNODETYPE_NODE);
  +
  +             // Tell how long the entire step is.
  +             m_expression->updateOpCodeLength(opPos);
        }
  -     else
  +     else if (tokenIs(XalanUnicode::charAsterisk) ||
  +                      tokenIs(XalanUnicode::charCommercialAt) ||
  +                      tokenIs(XalanUnicode::charSolidus) ||
  +                      XalanXMLChar::isLetter(charAt(m_token, 0)))
        {
                Basis();
   
  @@ -1825,10 +1878,10 @@
                {
                        Predicate();
                }
  -     }
   
  -     // Tell how long the entire step is.
  -     m_expression->updateOpCodeLength(opPos);
  +             // Tell how long the entire step is.
  +             m_expression->updateOpCodeLength(opPos);
  +     }
   }
   
   
  
  
  
  1.19      +1 -1      xml-xalan/c/src/XPath/XResultTreeFrag.hpp
  
  Index: XResultTreeFrag.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XResultTreeFrag.hpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XResultTreeFrag.hpp       2001/01/16 02:32:39     1.18
  +++ XResultTreeFrag.hpp       2001/01/25 17:14:22     1.19
  @@ -68,7 +68,7 @@
   
   
   
  -#if defined(XALAN_AUTO_PTR_NEEDS_DEFINITION)
  +#if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION)
   #include <XPath/ResultTreeFragBase.hpp>
   #endif
   
  
  
  
  1.2       +1 -1      xml-xalan/c/src/XPath/XStringCached.cpp
  
  Index: XStringCached.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XStringCached.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XStringCached.cpp 2000/12/21 04:23:07     1.1
  +++ XStringCached.cpp 2001/01/25 17:14:23     1.2
  @@ -101,7 +101,7 @@
   const XalanDOMString&
   XStringCached::str() const
   {
  -     return m_value;
  +     return m_value.get();
   }
   
   
  
  
  

Reply via email to