Qt 4.8
qabstractfunctionfactory_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtXmlPatterns module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 //
43 // W A R N I N G
44 // -------------
45 //
46 // This file is not part of the Qt API. It exists purely as an
47 // implementation detail. This header file may change from version to
48 // version without notice, or even be removed.
49 //
50 // We mean it.
51 
52 #ifndef Patternist_AbstractFunctionFactory_H
53 #define Patternist_AbstractFunctionFactory_H
54 
55 #include "qcommonnamespaces_p.h"
56 #include "qfunctionfactory_p.h"
57 #include "qfunctionsignature_p.h"
58 
60 
62 
63 namespace QPatternist
64 {
65 
76  {
77  public:
79  const Expression::List &arguments,
80  const StaticContext::Ptr &context,
81  const SourceLocationReflection *const r);
82 
84 
85  protected:
94  virtual Expression::Ptr retrieveExpression(const QXmlName name,
95  const Expression::List &args,
96  const FunctionSignature::Ptr &sign) const = 0;
97 
98  inline
100  const FunctionSignature::Arity minArgs,
101  const FunctionSignature::Arity maxArgs,
102  const SequenceType::Ptr &returnType,
103  const Expression::Properties props)
104  {
105  return addFunction(localName,
106  minArgs,
107  maxArgs,
108  returnType,
110  props);
111  }
112 
114  const FunctionSignature::Arity minArgs,
115  const FunctionSignature::Arity maxArgs,
116  const SequenceType::Ptr &returnType,
120  {
121  const QXmlName name(ns, localName);
122 
123  const FunctionSignature::Ptr s(new FunctionSignature(name, minArgs, maxArgs,
124  returnType, props, id));
125 
126  m_signatures.insert(name, s);
127  return s;
128  }
129 
130  static inline QXmlName::LocalNameCode argument(const NamePool::Ptr &np, const char *const name)
131  {
132  return np->allocateLocalName(QLatin1String(name));
133  }
134 
136 
137  private:
145  void verifyArity(const FunctionSignature::Ptr &sign,
146  const StaticContext::Ptr &context,
147  const xsInteger arity,
148  const SourceLocationReflection *const r) const;
149 
150  };
151 }
152 
154 
156 
157 #endif
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
NamespaceCode LocalNameCode
Definition: qxmlname.h:84
#define QT_BEGIN_HEADER
Definition: qglobal.h:136
static QXmlName::LocalNameCode argument(const NamePool::Ptr &np, const char *const name)
qint64 xsInteger
FunctionSignature::Ptr addFunction(const QXmlName::LocalNameCode &localName, const FunctionSignature::Arity minArgs, const FunctionSignature::Arity maxArgs, const SequenceType::Ptr &returnType, const Expression::ID id=Expression::IDIgnorableExpression, const Expression::Properties props=Expression::Properties(), const StandardNamespaces::ID ns=StandardNamespaces::fn)
virtual Expression::Ptr retrieveExpression(const QXmlName name, const Expression::List &args, const FunctionSignature::Ptr &sign) const =0
QLatin1String(DBUS_INTERFACE_DBUS))) Q_GLOBAL_STATIC_WITH_ARGS(QString
virtual Expression::Ptr createFunctionCall(const QXmlName name, const Expression::List &arguments, const StaticContext::Ptr &context, const SourceLocationReflection *const r)
FunctionSignature::Ptr addFunction(const QXmlName::LocalNameCode localName, const FunctionSignature::Arity minArgs, const FunctionSignature::Arity maxArgs, const SequenceType::Ptr &returnType, const Expression::Properties props)
iterator insert(const Key &key, const T &value)
Inserts a new item with the key and a value of value.
Definition: qhash.h:753
static int sign(int x)
virtual FunctionSignature::Hash functionSignatures() const
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
void verifyArity(const FunctionSignature::Ptr &sign, const StaticContext::Ptr &context, const xsInteger arity, const SourceLocationReflection *const r) const
Determines whether arity is a valid number of arguments for the function with signature sign...
const char * name
Represents the signature of an XPath function.
The namespace for the internal API of QtXmlPatterns.
Supplies convenience code for the function factories.
The QXmlName class represents the name of an XML node, in an efficient, namespace-aware way...
Definition: qxmlname.h:58
An entry point for looking up and creating FunctionCall instances.
The QFlags class provides a type-safe way of storing OR-combinations of enum values.
Definition: qglobal.h:2313
#define QT_END_HEADER
Definition: qglobal.h:137
Base class for all instances that represents something at a certain location.