SourceForge.net Logo

Node.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2001, 2008,
00003  *     DecisionSoft Limited. All rights reserved.
00004  * Copyright (c) 2004, 2011,
00005  *     Oracle and/or its affiliates. All rights reserved.
00006  *
00007  * Licensed under the Apache License, Version 2.0 (the "License");
00008  * you may not use this file except in compliance with the License.
00009  * You may obtain a copy of the License at
00010  *
00011  *     http://www.apache.org/licenses/LICENSE-2.0
00012  *
00013  * Unless required by applicable law or agreed to in writing, software
00014  * distributed under the License is distributed on an "AS IS" BASIS,
00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00016  * See the License for the specific language governing permissions and
00017  * limitations under the License.
00018  */
00019 
00020 #ifndef _XQILLANODE_HPP
00021 #define _XQILLANODE_HPP
00022 
00023 #include <xqilla/items/ATQNameOrDerived.hpp>
00024 #include <xqilla/items/ATBooleanOrDerived.hpp>
00025 #include <xqilla/ast/XQStep.hpp>
00026 
00027 class DynamicContext;
00028 class XPath2MemoryManager;
00029 class Sequence;
00030 class Result;
00031 class NodeTest;
00032 
00033 class XQILLA_API Node : public Item
00034 {
00035 public:
00036   typedef RefCountPointer<const Node> Ptr;
00037 
00039   virtual bool isNode() const;
00040 
00042   virtual bool isAtomicValue() const;
00043 
00044   virtual bool isFunction() const;
00045 
00046   virtual void typeToBuffer(DynamicContext *context, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &buffer) const;
00047 
00049   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
00050 
00052   virtual bool hasInstanceOfType(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0;
00053   
00056   virtual Sequence dmBaseURI(const DynamicContext* context) const = 0;
00057 
00059   virtual const XMLCh* dmNodeKind() const = 0;
00060 
00062   virtual ATQNameOrDerived::Ptr dmNodeName(const DynamicContext* context) const = 0;
00063 
00065   virtual const XMLCh* dmStringValue(const DynamicContext* context) const = 0;
00066 
00070   virtual Sequence dmTypedValue(DynamicContext* context) const = 0;
00071 
00074   virtual Sequence dmDocumentURI(const DynamicContext* context) const = 0;
00075 
00077   virtual ATQNameOrDerived::Ptr dmTypeName(const DynamicContext* context) const = 0;
00078 
00080   virtual ATBooleanOrDerived::Ptr dmNilled(const DynamicContext* context) const = 0;
00081 
00084   virtual bool lessThan(const Node::Ptr &other, const DynamicContext *context) const = 0;
00085 
00087   virtual bool equals(const Node::Ptr &other) const = 0;
00088 
00091   virtual bool uniqueLessThan(const Node::Ptr &other, const DynamicContext *context) const = 0;
00092 
00094   virtual Node::Ptr root(const DynamicContext* context) const = 0;
00095 
00097   virtual Node::Ptr dmParent(const DynamicContext* context) const = 0;
00098 
00100   virtual Result dmAttributes(const DynamicContext* context, const LocationInfo *info) const = 0;
00101 
00103   virtual Result dmNamespaceNodes(const DynamicContext* context, const LocationInfo *info) const = 0;
00104 
00106   virtual Result dmChildren(const DynamicContext *context, const LocationInfo *info) const = 0;
00107 
00113   virtual Result getAxisResult(XQStep::Axis axis, const NodeTest *nodeTest, const DynamicContext *context, const LocationInfo *info) const = 0;
00114 
00116   virtual ATBooleanOrDerived::Ptr dmIsId(const DynamicContext* context) const = 0;
00117 
00119   virtual ATBooleanOrDerived::Ptr dmIsIdRefs(const DynamicContext* context) const = 0;
00120 
00121   /* Get the namespace URI for the DOM type */
00122   virtual const XMLCh* getTypeURI() const = 0;
00123 
00124   /* Get the name of the DOM type  (ie "integer" for xs:integer) */
00125   virtual const XMLCh* getTypeName() const = 0;
00126 
00127   static const XMLCh document_string[];
00128   static const XMLCh element_string[];
00129   static const XMLCh attribute_string[];
00130   static const XMLCh text_string[];
00131   static const XMLCh processing_instruction_string[];
00132   static const XMLCh comment_string[];
00133   static const XMLCh namespace_string[];
00134 };
00135 #endif