You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by au...@apache.org on 2001/02/27 23:00:11 UTC
cvs commit: xml-xalan/c/src/XSLT ElemSort.cpp ElemSort.hpp ElemTemplateElement.cpp
auriemma 01/02/27 14:00:10
Modified: c/src/XSLT ElemSort.cpp ElemSort.hpp ElemTemplateElement.cpp
Log:
Updated ElemSort to use AVT's.
Revision Changes Path
1.7 +50 -9 xml-xalan/c/src/XSLT/ElemSort.cpp
Index: ElemSort.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemSort.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ElemSort.cpp 2001/02/12 02:34:53 1.6
+++ ElemSort.cpp 2001/02/27 22:00:06 1.7
@@ -83,10 +83,10 @@
columnNumber,
Constants::ELEMNAME_SORT),
m_selectPattern(0),
- m_langAVT(),
- m_dataTypeAVT(Constants::ATTRVAL_DATATYPE_TEXT),
- m_orderAVT(Constants::ATTRVAL_ORDER_ASCENDING),
- m_caseOrderAVT()
+ m_langAVT(0),
+ m_dataTypeAVT(0),
+ m_orderAVT(0),
+ m_caseOrderAVT(0)
{
const unsigned int nAttrs = atts.getLength();
@@ -100,22 +100,26 @@
= constructionContext.createXPath(atts.getValue(i), *this);
}
else if(equals(aname, Constants::ATTRNAME_LANG))
- {
- m_langAVT = atts.getValue(i);
+ {
+ m_langAVT = new AVT(aname, atts.getType(i), atts.getValue(i),
+ *this, constructionContext);
}
else if(equals(aname, Constants::ATTRNAME_DATATYPE))
{
- m_dataTypeAVT = atts.getValue(i);
+ m_dataTypeAVT = new AVT(aname, atts.getType(i), atts.getValue(i),
+ *this, constructionContext);
}
else if(equals(aname, Constants::ATTRNAME_ORDER))
{
- m_orderAVT = atts.getValue(i);
+ m_orderAVT = new AVT(aname, atts.getType(i), atts.getValue(i),
+ *this, constructionContext);
}
else if(equals(aname, Constants::ATTRNAME_CASEORDER))
{
constructionContext.warn("Xalan C++ does not yet handle the " + Constants::ATTRNAME_CASEORDER + " attribute!");
- m_caseOrderAVT = atts.getValue(i);
+ m_caseOrderAVT = new AVT(aname, atts.getType(i), atts.getValue(i),
+ *this, constructionContext);
}
else if(!isAttrOK(aname, atts, i, constructionContext))
{
@@ -123,12 +127,49 @@
}
}
+ //m_dataTypeAVT(Constants::ATTRVAL_DATATYPE_TEXT),
+ //m_orderAVT(Constants::ATTRVAL_ORDER_ASCENDING),
+
+
+ if(0 == m_dataTypeAVT)
+ {
+ m_dataTypeAVT = new AVT(c_wstr(Constants::ATTRNAME_DATATYPE), c_wstr(Constants::ATTRTYPE_CDATA), c_wstr(Constants::ATTRVAL_DATATYPE_TEXT),
+ *this, constructionContext);
+ }
+
+ if(0 == m_orderAVT)
+ {
+ m_orderAVT = new AVT(c_wstr(Constants::ATTRNAME_ORDER), c_wstr(Constants::ATTRTYPE_CDATA), c_wstr(Constants::ATTRVAL_ORDER_ASCENDING),
+ *this, constructionContext);
+ }
+
if(0 == m_selectPattern)
{
m_selectPattern = constructionContext.createXPath(StaticStringToDOMString(XALAN_STATIC_UCODE_STRING(".")), *this);
}
}
+
+ElemSort::~ElemSort()
+{
+#if defined(XALAN_CANNOT_DELETE_CONST)
+ delete (AVT*)m_langAVT;
+
+ delete (AVT*)m_dataTypeAVT;
+
+ delete (AVT*)m_orderAVT;
+
+ delete (AVT*)m_caseOrderAVT;
+#else
+ delete m_langAVT;
+
+ delete m_dataTypeAVT;
+
+ delete m_orderAVT;
+
+ delete m_caseOrderAVT;
+#endif
+}
const XalanDOMString&
1.7 +14 -10 xml-xalan/c/src/XSLT/ElemSort.hpp
Index: ElemSort.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemSort.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ElemSort.hpp 2001/02/12 02:34:53 1.6
+++ ElemSort.hpp 2001/02/27 22:00:07 1.7
@@ -65,6 +65,7 @@
// Base class header file.
+#include "AVT.hpp"
#include "ElemTemplateElement.hpp"
@@ -74,6 +75,7 @@
class XPath;
+class AVT;
@@ -97,12 +99,14 @@
int lineNumber,
int columnNumber);
+ ~ElemSort();
+
/**
* Retrieve the language attribute value template(AVT)
*
- * @return string corresponding the language AVT
+ * @return the language AVT
*/
- const XalanDOMString&
+ const AVT*
getLangAVT() const
{
return m_langAVT;
@@ -111,9 +115,9 @@
/**
* Retrieve the order attribute value template(AVT)
*
- * @return string corresponding the order AVT
+ * @return the order AVT
*/
- const XalanDOMString&
+ const AVT*
getOrderAVT() const
{
return m_orderAVT;
@@ -122,9 +126,9 @@
/**
* Retrieve the data type attribute value template(AVT)
*
- * @return string corresponding the data type AVT
+ * @return the data type AVT
*/
- const XalanDOMString&
+ const AVT*
getDataTypeAVT() const
{
return m_dataTypeAVT;
@@ -148,10 +152,10 @@
const XPath* m_selectPattern;
- XalanDOMString m_langAVT;
- XalanDOMString m_dataTypeAVT;
- XalanDOMString m_orderAVT;
- XalanDOMString m_caseOrderAVT;
+ const AVT* m_langAVT;
+ const AVT* m_dataTypeAVT;
+ const AVT* m_orderAVT;
+ const AVT* m_caseOrderAVT;
};
1.46 +27 -5 xml-xalan/c/src/XSLT/ElemTemplateElement.cpp
Index: ElemTemplateElement.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemTemplateElement.cpp,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- ElemTemplateElement.cpp 2001/02/12 23:55:25 1.45
+++ ElemTemplateElement.cpp 2001/02/27 22:00:07 1.46
@@ -582,16 +582,38 @@
{
ElemSort* sort = foreach->getSortElems()[i];
assert(sort != 0);
-
- const XalanDOMString langString = (!isEmpty(sort->getLangAVT())) ?
- executionContext.evaluateAttrVal(sourceNodeContext, *sort, sort->getLangAVT()): XalanDOMString();
- const XalanDOMString dataTypeString = executionContext.evaluateAttrVal(sourceNodeContext, *sort, sort->getDataTypeAVT());
+ const AVT* avt = 0;
+ XalanDOMString langString;
+
+ avt = sort->getLangAVT();
+
+ if(0 != avt)
+ {
+ avt->evaluate(langString, sourceNodeContext, xslInstruction, executionContext);
+ }
+
+ XalanDOMString dataTypeString;
+
+ avt = sort->getDataTypeAVT();
+
+ if(0 != avt)
+ {
+ avt->evaluate(dataTypeString, sourceNodeContext, xslInstruction, executionContext);
+ }
+
bool treatAsNumbers = ((!isEmpty(dataTypeString)) && equals(dataTypeString,Constants::ATTRVAL_DATATYPE_NUMBER)) ?
true : false;
+
+ XalanDOMString orderString;
+
+ avt = sort->getOrderAVT();
- const XalanDOMString orderString = executionContext.evaluateAttrVal(sourceNodeContext, *sort, sort->getOrderAVT());
+ if(0 != avt)
+ {
+ avt->evaluate(orderString, sourceNodeContext, xslInstruction, executionContext);
+ }
bool descending = ((!isEmpty(orderString)) && equals(orderString,Constants::ATTRVAL_ORDER_DESCENDING))?
true : false;