00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef XSECXPATHNODELIST_INCLUDE
00030 #define XSECXPATHNODELIST_INCLUDE
00031
00032
00033 #include <xsec/framework/XSECDefs.hpp>
00034
00035
00036
00037 XSEC_DECLARE_XERCES_CLASS(DOMNode);
00038
00039 #define _XSEC_NODELIST_DEFAULT_SIZE 100
00040
00058 class DSIG_EXPORT XSECXPathNodeList {
00059
00060 public:
00061
00064
00065 XSECXPathNodeList(unsigned int initialSize = _XSEC_NODELIST_DEFAULT_SIZE);
00066
00075 XSECXPathNodeList(const XSECXPathNodeList &other);
00076
00077 ~XSECXPathNodeList();
00078
00091 XSECXPathNodeList & operator= (const XSECXPathNodeList & toCopy);
00092
00093
00095
00096
00099
00109 void addNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *n);
00110
00119 void removeNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *n);
00120
00126 void clear(void);
00127
00129
00132
00139 bool hasNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *n);
00140
00149 const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * getFirstNode(void);
00150
00159 const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getNextNode(void);
00160
00162
00165
00174 void intersect(const XSECXPathNodeList &toIntersect);
00175
00177
00178 private:
00179
00180
00181 unsigned int findNodeIndex(const XERCES_CPP_NAMESPACE::DOMNode * n);
00182
00183 const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode
00184 ** mp_elts;
00185
00186 unsigned int m_size;
00187 unsigned int m_num;
00188
00189 unsigned int m_current;
00190 };
00191
00192
00193
00194 #endif
00195