/usr/include/xqilla/dom-api/XPath2Result.hpp is in libxqilla-dev 2.3.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 | /*
* Copyright (c) 2001, 2008,
* DecisionSoft Limited. All rights reserved.
* Copyright (c) 2004, 2011,
* Oracle and/or its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __XPATH2RESULT_HPP
#define __XPATH2RESULT_HPP
#include <xqilla/framework/XQillaExport.hpp>
#include <xercesc/dom/DOMNode.hpp>
#include <xercesc/dom/DOMTypeInfo.hpp>
#include <xercesc/dom/DOMException.hpp>
#include <xercesc/dom/DOMXPathException.hpp>
/**
* The XPathResult2 interface represents the result of the evaluation of an XPath
* 2.0 expression within the context of a particular node. Since evaluation of an
* XPath 2.0 expression can result in various result types, this object makes it
* possible to discover and manipulate the type and value of the result.
* @since DOM Level 3
*/
class XQILLA_API XPath2Result
{
public:
/** @name Destructor */
//@{
/**
* Destructor
*/
virtual ~XPath2Result() {};
//@}
/** @name Public Constants */
//@{
/**
* <p>FIRST_RESULT
* <br>The result is a sequence as defined by XPath 2.0 and will be accessed
* as a single current value or there will be no current value if the sequence
* is empty. Document modification does not invalidate the value, but may mean
* that the result no longer corresponds to the current document. This is a
* convenience that permits optimization since the implementation can stop once
* the first item in the resulting sequence has been found. If there is more
* than one item in the actual result, the single item returned might not be
* the first in document order.
* <p>ITERATOR_RESULT
* <br>The result is a sequence as defined by XPath 2.0 that will be accessed
* iteratively. Document modification invalidates the iteration.
* <p>SNAPSHOT_RESULT
* <br>The result is a sequence as defined by XPath 2.0 that will be accessed
* as a snapshot list of values. Document modification does not invalidate the
* snapshot but may mean that reevaluation would not yield the same snapshot
* and any items in the snapshot may have been altered, moved, or removed from
* the document.
*/
enum ResultType {
FIRST_RESULT = 100,
ITERATOR_RESULT = 101,
SNAPSHOT_RESULT = 102
};
//@}
/** @name Functions introduced in DOM Level 3 */
//@{
/**
* Returns the result type of this result
* @return ResultType
* A code representing the type of this result, as defined by the type constants.
*/
virtual ResultType getResultType() const = 0;
/**
* Returns true if the result has a current result and the value is a node.
* @return isNode of type boolean, readonly
*/
virtual bool isNode() const = 0;
/**
* Returns the DOM type info of the current result node or value.
* @return typeInfo of type TypeInfo, readonly
*/
virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfo *getTypeInfo() const = 0;
/**
* Conversion of the current result to double. If the native double type of the
* DOM binding does not directly support the exact IEEE 754 result of the XPath
* expression, then it is up to the definition of the binding to specify how the
* XPath number is converted to the native binding number.
* @return asDouble of type double, readonly
* @exception XPathException
* TYPE_ERR: raised if current result cannot be properly converted to double.
* @exception DOMException
* INVALID_STATE_ERR: There is no current result in the result.
*/
virtual double getNumberValue() const = 0;
/**
* Conversion of the current result to int.
* @return asInt of type int, readonly
* @exception XPathException
* TYPE_ERR: raised if current result cannot be properly converted to int.
* @exception DOMException
* INVALID_STATE_ERR: There is no current result in the result.
*/
virtual int getIntegerValue() const = 0;
/**
* Conversion of the current result to string.
* @return asString of type DOMString, readonly
* @exception XPathException
* TYPE_ERR: raised if current result cannot be properly converted to string.
* @exception DOMException
* INVALID_STATE_ERR: There is no current result in the result.
*/
virtual const XMLCh* getStringValue() const = 0;
/**
* Conversion of the current result to boolean.
* @return asBoolean of type boolean, readonly
* @exception XPathException
* TYPE_ERR: raised if cannot be properly converted to boolean.
* @exception DOMException
* INVALID_STATE_ERR: There is no current result in the result.
*/
virtual bool getBooleanValue() const = 0;
/**
* Retrieve the current node value.
* @return asNode of type Node, readonly
* @exception XPathException
* TYPE_ERR: raised if current result is not a node.
* @exception DOMException
* INVALID_STATE_ERR: There is no current result in the result.
*/
virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getNodeValue() const = 0;
/**
* Signifies that the iterator has become invalid.
* @return invalidIteratorState of type boolean, readonly
*/
virtual bool getInvalidIteratorState() const = 0;
/**
* The number of items in the result snapshot. Valid values for snapshotItem
* indices are 0 to snapshotLength-1 inclusive.
* @return snapshotLength of type size_t, readonly
* @exception XPathException
* TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT.
*/
virtual size_t getSnapshotLength() const = 0;
/**
* Iterates and returns true if the current result is the next item from the
* sequence or false if there are no more items.
* @return boolean True if the current result is the next item from the sequence
* or false if there are no more items.
* @exception XPathException
* TYPE_ERR: raised if resultType is not ITERATOR_RESULT.
* @exception DOMException
* INVALID_STATE_ERR: The document has been mutated since the result was returned.
*/
virtual bool iterateNext() = 0;
/**
* Sets the current result to the indexth item in the snapshot collection. If
* index is greater than or equal to the number of items in the list, this method
* returns false. Unlike the iterator result, the snapshot does not become
* invalid, but may not correspond to the current document if it is mutated.
* @param index of type size_t - Index into the snapshot collection.
* @return boolean True if the current result is the next item from the sequence
* or false if there are no more items.
* @exception XPathException
* TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT.
*/
virtual bool snapshotItem(size_t) = 0;
//@}
/** @name Non-standard Extension */
//@{
/**
* Called to indicate that this object (and its associated children) is no longer in use
* and that the implementation may relinquish any resources associated with it and
* its associated children.
*
* Access to a released object will lead to unexpected result.
*/
virtual void release() = 0;
//@}
protected:
/** @name Hidden constructors */
//@{
XPath2Result() {};
//@}
private:
/** @name Unimplemented constructors and operators */
//@{
XPath2Result(const XPath2Result &);
XPath2Result &operator=(const XPath2Result &);
//@}
};
#endif
|