Fix for bug 74786 (String cleanup). Non-copying tokenizer. r=Pike, sr=jst.

git-svn-id: svn://10.0.0.236/trunk@136765 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
peterv%netscape.com
2003-01-22 00:04:08 +00:00
parent 081acd66c9
commit 2785d19081
7 changed files with 16 additions and 69 deletions

View File

@@ -59,7 +59,6 @@ LOBJS = ../source/base/Double.$(OBJ_SUFFIX) \
../source/base/NamedMap.$(OBJ_SUFFIX) \
../source/base/SimpleErrorObserver.$(OBJ_SUFFIX) \
../source/base/Stack.$(OBJ_SUFFIX) \
../source/base/Tokenizer.$(OBJ_SUFFIX) \
../source/base/txAtoms.$(OBJ_SUFFIX) \
../source/base/txExpandedNameMap.$(OBJ_SUFFIX) \
../source/base/txURIUtils.$(OBJ_SUFFIX) \

View File

@@ -1062,13 +1062,6 @@
<FILEKIND>Text</FILEKIND>
<FILEFLAGS></FILEFLAGS>
</FILE>
<FILE>
<PATHTYPE>Name</PATHTYPE>
<PATH>Tokenizer.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
<FILEKIND>Text</FILEKIND>
<FILEFLAGS></FILEFLAGS>
</FILE>
<FILE>
<PATHTYPE>Name</PATHTYPE>
<PATH>NamedMap.cpp</PATH>
@@ -1624,11 +1617,6 @@
<PATH>NodeSet.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
</FILEREF>
<FILEREF>
<PATHTYPE>Name</PATHTYPE>
<PATH>Tokenizer.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
</FILEREF>
<FILEREF>
<PATHTYPE>Name</PATHTYPE>
<PATH>NamedMap.cpp</PATH>
@@ -2934,13 +2922,6 @@
<FILEKIND>Text</FILEKIND>
<FILEFLAGS></FILEFLAGS>
</FILE>
<FILE>
<PATHTYPE>Name</PATHTYPE>
<PATH>Tokenizer.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
<FILEKIND>Text</FILEKIND>
<FILEFLAGS></FILEFLAGS>
</FILE>
<FILE>
<PATHTYPE>Name</PATHTYPE>
<PATH>NamedMap.cpp</PATH>
@@ -3512,11 +3493,6 @@
<PATH>NodeSet.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
</FILEREF>
<FILEREF>
<PATHTYPE>Name</PATHTYPE>
<PATH>Tokenizer.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
</FILEREF>
<FILEREF>
<PATHTYPE>Name</PATHTYPE>
<PATH>NamedMap.cpp</PATH>
@@ -3955,12 +3931,6 @@
<PATH>Stack.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
</FILEREF>
<FILEREF>
<TARGETNAME>transformiixDebug.shlb</TARGETNAME>
<PATHTYPE>Name</PATHTYPE>
<PATH>Tokenizer.cpp</PATH>
<PATHFORMAT>MacOS</PATHFORMAT>
</FILEREF>
<FILEREF>
<TARGETNAME>transformiixDebug.shlb</TARGETNAME>
<PATHTYPE>Name</PATHTYPE>

View File

@@ -48,7 +48,6 @@ CPPSRCS = Double.cpp \
NamedMap.cpp \
SimpleErrorObserver.cpp \
Stack.cpp \
Tokenizer.cpp \
txAtoms.cpp \
txExpandedNameMap.cpp \
txURIUtils.cpp

View File

@@ -40,7 +40,6 @@ OBJS = ../base/Double.$(OBJ_SUFFIX) \
../base/NamedMap.$(OBJ_SUFFIX) \
../base/SimpleErrorObserver.$(OBJ_SUFFIX) \
../base/Stack.$(OBJ_SUFFIX) \
../base/Tokenizer.$(OBJ_SUFFIX) \
../base/txAtoms.$(OBJ_SUFFIX) \
../base/txExpandedNameMap.$(OBJ_SUFFIX) \
../base/txStringUtils.$(OBJ_SUFFIX) \

View File

@@ -34,9 +34,9 @@
#include "FunctionLib.h"
#include "NodeSet.h"
#include "Tokenizer.h"
#include "txAtoms.h"
#include "txIXPathContext.h"
#include "txTokenizer.h"
#include "XMLDOMUtils.h"
/*
@@ -98,24 +98,24 @@ ExprResult* NodeSetFunctionCall::evaluate(txIEvalContext* aContext) {
NodeSet* nodes = (NodeSet*)exprResult;
int i;
for (i = 0; i < nodes->size(); i++) {
nsAutoString idList, id;
nsAutoString idList;
XMLDOMUtils::getNodeValue(nodes->get(i), idList);
txTokenizer tokenizer(idList);
while (tokenizer.hasMoreTokens()) {
tokenizer.nextToken(id);
Node* idNode = contextDoc->getElementById(id);
Node* idNode =
contextDoc->getElementById(tokenizer.nextToken());
if (idNode)
resultSet->add(idNode);
}
}
}
else {
nsAutoString idList, id;
nsAutoString idList;
exprResult->stringValue(idList);
txTokenizer tokenizer(idList);
while (tokenizer.hasMoreTokens()) {
tokenizer.nextToken(id);
Node* idNode = contextDoc->getElementById(id);
Node* idNode =
contextDoc->getElementById(tokenizer.nextToken());
if (idNode)
resultSet->add(idNode);
}

View File

@@ -38,12 +38,12 @@
#include "txURIUtils.h"
#include "XMLUtils.h"
#include "XMLDOMUtils.h"
#include "Tokenizer.h"
#include "ExprResult.h"
#include "XMLParser.h"
#include "TxLog.h"
#include "txAtoms.h"
#include "txSingleNodeContext.h"
#include "txTokenizer.h"
#include "txVariableMap.h"
#include "XSLTProcessor.h"
@@ -752,10 +752,9 @@ void ProcessorState::shouldStripSpace(const nsAString& aNames,
ImportFrame* aImportFrame)
{
//-- split names on whitespace
txTokenizer tokenizer(aNames);
nsAutoString name;
txTokenizer tokenizer(PromiseFlatString(aNames));
while (tokenizer.hasMoreTokens()) {
tokenizer.nextToken(name);
const nsAString& name = tokenizer.nextToken();
PRInt32 aNSID = kNameSpaceID_None;
nsCOMPtr<nsIAtom> prefix;
XMLUtils::getPrefix(name, getter_AddRefs(prefix));

View File

@@ -42,7 +42,6 @@
*/
#include "XSLTProcessor.h"
#include "Tokenizer.h"
#include "txAtoms.h"
#include "TxLog.h"
#include "txNodeSetContext.h"
@@ -50,6 +49,7 @@
#include "txRtfHandler.h"
#include "txStringUtils.h"
#include "txTextHandler.h"
#include "txTokenizer.h"
#include "txURIUtils.h"
#include "txVariableMap.h"
#include "txXSLTNumber.h"
@@ -880,11 +880,9 @@ txXSLTProcessor::processAttributeSets(Element* aElement,
// Split names
txTokenizer tokenizer(names);
nsAutoString nameStr;
while (tokenizer.hasMoreTokens()) {
tokenizer.nextToken(nameStr);
txExpandedName name;
rv = name.init(nameStr, aElement, MB_FALSE);
rv = name.init(tokenizer.nextToken(), aElement, MB_FALSE);
if (NS_FAILED(rv)) {
aPs->receiveError(NS_LITERAL_STRING("missing or malformed name in use-attribute-sets"));
return;
@@ -1458,28 +1456,11 @@ txXSLTProcessor::processTopLevel(Element* aStylesheet,
if (element->getAttr(txXSLTAtoms::cdataSectionElements,
kNameSpaceID_None, attValue)) {
txTokenizer tokens(attValue);
nsAutoString token;
while (tokens.hasMoreTokens()) {
tokens.nextToken(token);
if (!XMLUtils::isValidQName(token)) {
break;
}
nsCOMPtr<nsIAtom> namePart;
XMLUtils::getPrefix(token, getter_AddRefs(namePart));
PRInt32 nsID = element->lookupNamespaceID(namePart);
if (nsID == kNameSpaceID_Unknown) {
// XXX ErrorReport: unknown prefix
break;
}
XMLUtils::getLocalPart(token, getter_AddRefs(namePart));
if (!namePart) {
// XXX ErrorReport: out of memory
break;
}
txExpandedName* qname = new txExpandedName(nsID, namePart);
if (!qname) {
// XXX ErrorReport: out of memory
txExpandedName* qname = new txExpandedName();
if (!qname || NS_FAILED(qname->init(tokens.nextToken(),
element, PR_FALSE))) {
// XXX ErrorReport
break;
}
format.mCDATASectionElements.add(qname);