SourceForge.net Logo
ExternalFunction.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2001, 2008,
3  * DecisionSoft Limited. All rights reserved.
4  * Copyright (c) 2004, 2015 Oracle and/or its affiliates. All rights reserved.
5  *
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 
20 #ifndef _EXTERNALFUNCTION_HPP
21 #define _EXTERNALFUNCTION_HPP
22 
23 #include <xqilla/framework/XQillaExport.hpp>
24 
25 #include <xercesc/util/XMLUniDefs.hpp>
26 
27 class Result;
28 class PendingUpdateList;
29 class DynamicContext;
31 
32 class XQILLA_API ExternalFunction
33 {
34 public:
35  class XQILLA_API Arguments
36  {
37  public:
38  virtual ~Arguments() {}
39 
41  virtual Result getArgument(size_t index, DynamicContext *context) const = 0;
42  };
43 
44  virtual ~ExternalFunction() {}
45 
46  const XMLCh *getURI() const { return uri_; }
47  const XMLCh *getName() const { return name_; }
48  const XMLCh *getURINameHash() const { return uriName_; }
49  unsigned int getNumberOfArguments() const { return numArgs_; }
50 
52  virtual Result execute(const Arguments *args, DynamicContext *context) const;
54  virtual PendingUpdateList executeUpdate(const Arguments *args, DynamicContext *context) const;
55 
56 protected:
57  ExternalFunction(const XMLCh *uri, const XMLCh *name, unsigned int numberOfArgs, XPath2MemoryManager *mm);
58 
59  const XMLCh *uri_;
60  const XMLCh *name_;
61  const XMLCh *uriName_;
62  unsigned int numArgs_;
63 };
64 
65 #endif
66 
ExternalFunction::executeUpdate
virtual PendingUpdateList executeUpdate(const Arguments *args, DynamicContext *context) const
Execute the updating function.
DynamicContext
The execution time dynamic context interface.
Definition: DynamicContext.hpp:39
ExternalFunction::getName
const XMLCh * getName() const
Definition: ExternalFunction.hpp:47
ExternalFunction::Arguments::~Arguments
virtual ~Arguments()
Definition: ExternalFunction.hpp:38
Result
A scoped pointer wrapper for the lazily evaluated query result.
Definition: Result.hpp:38
XPath2MemoryManager
Definition: XPath2MemoryManager.hpp:46
ExternalFunction::name_
const XMLCh * name_
Definition: ExternalFunction.hpp:60
ExternalFunction::ExternalFunction
ExternalFunction(const XMLCh *uri, const XMLCh *name, unsigned int numberOfArgs, XPath2MemoryManager *mm)
ExternalFunction::getURINameHash
const XMLCh * getURINameHash() const
Definition: ExternalFunction.hpp:48
ExternalFunction::~ExternalFunction
virtual ~ExternalFunction()
Definition: ExternalFunction.hpp:44
ExternalFunction::uri_
const XMLCh * uri_
Definition: ExternalFunction.hpp:59
ExternalFunction::numArgs_
unsigned int numArgs_
Definition: ExternalFunction.hpp:62
ExternalFunction::execute
virtual Result execute(const Arguments *args, DynamicContext *context) const
Execute the (non-updating) function.
ExternalFunction::uriName_
const XMLCh * uriName_
Definition: ExternalFunction.hpp:61
ExternalFunction
Definition: ExternalFunction.hpp:33
ExternalFunction::getURI
const XMLCh * getURI() const
Definition: ExternalFunction.hpp:46
ExternalFunction::Arguments
Definition: ExternalFunction.hpp:36
ExternalFunction::getNumberOfArguments
unsigned int getNumberOfArguments() const
Definition: ExternalFunction.hpp:49
ExternalFunction::Arguments::getArgument
virtual Result getArgument(size_t index, DynamicContext *context) const =0
Return the result for the argument index specified. Arguments indexes are zero based.