| /**************************************************************************** |
| ** |
| ** Copyright (C) 2016 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the QtXmlPatterns module of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:LGPL$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see https://www.qt.io/terms-conditions. For further |
| ** information use the contact form at https://www.qt.io/contact-us. |
| ** |
| ** GNU Lesser General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU Lesser |
| ** General Public License version 3 as published by the Free Software |
| ** Foundation and appearing in the file LICENSE.LGPL3 included in the |
| ** packaging of this file. Please review the following information to |
| ** ensure the GNU Lesser General Public License version 3 requirements |
| ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU |
| ** General Public License version 2.0 or (at your option) the GNU General |
| ** Public license version 3 or any later version approved by the KDE Free |
| ** Qt Foundation. The licenses are as published by the Free Software |
| ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 |
| ** included in the packaging of this file. Please review the following |
| ** information to ensure the GNU General Public License requirements will |
| ** be met: https://www.gnu.org/licenses/gpl-2.0.html and |
| ** https://www.gnu.org/licenses/gpl-3.0.html. |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| #include "qebvtype_p.h" |
| #include "qgenericsequencetype_p.h" |
| #include "qnonetype_p.h" |
| |
| #include "qcommonsequencetypes_p.h" |
| |
| /* To avoid the static initialization fiasco, we put the builtin types in this compilation unit, since |
| * the sequence types depends on them. */ |
| #include "qbuiltintypes.cpp" |
| |
| QT_BEGIN_NAMESPACE |
| |
| using namespace QPatternist; |
| |
| // STATIC DATA |
| #define st(var, type, card) \ |
| const SequenceType::Ptr \ |
| CommonSequenceTypes::var(new GenericSequenceType(BuiltinTypes::type, \ |
| Cardinality::card())) |
| |
| /* Alphabetically. */ |
| st(ExactlyOneAnyURI, xsAnyURI, exactlyOne); |
| st(ExactlyOneAtomicType, xsAnyAtomicType, exactlyOne); |
| st(ExactlyOneAttribute, attribute, exactlyOne); |
| st(ExactlyOneBase64Binary, xsBase64Binary, exactlyOne); |
| st(ExactlyOneBoolean, xsBoolean, exactlyOne); |
| st(ExactlyOneComment, comment, exactlyOne); |
| st(ExactlyOneDateTime, xsDateTime, exactlyOne); |
| st(ExactlyOneDate, xsDate, exactlyOne); |
| st(ExactlyOneDayTimeDuration, xsDayTimeDuration, exactlyOne); |
| st(ExactlyOneDecimal, xsDecimal, exactlyOne); |
| st(ExactlyOneDocumentNode, document, exactlyOne); |
| st(OneOrMoreDocumentNodes, document, oneOrMore); |
| st(ExactlyOneDouble, xsDouble, exactlyOne); |
| st(ExactlyOneDuration, xsDuration, exactlyOne); |
| st(ExactlyOneElement, element, exactlyOne); |
| st(ExactlyOneFloat, xsFloat, exactlyOne); |
| st(ExactlyOneGDay, xsGDay, exactlyOne); |
| st(ExactlyOneGMonthDay, xsGMonthDay, exactlyOne); |
| st(ExactlyOneGMonth, xsGMonth, exactlyOne); |
| st(ExactlyOneGYearMonth, xsGYearMonth, exactlyOne); |
| st(ExactlyOneGYear, xsGYear, exactlyOne); |
| st(ExactlyOneHexBinary, xsHexBinary, exactlyOne); |
| st(ExactlyOneInteger, xsInteger, exactlyOne); |
| st(ExactlyOneItem, item, exactlyOne); |
| st(ExactlyOneNCName, xsNCName, exactlyOne); |
| st(ExactlyOneNode, node, exactlyOne); |
| st(ExactlyOneNumeric, numeric, exactlyOne); |
| st(ExactlyOneProcessingInstruction, pi, exactlyOne); |
| st(ExactlyOneQName, xsQName, exactlyOne); |
| st(ExactlyOneString, xsString, exactlyOne); |
| st(ExactlyOneTextNode, text, exactlyOne); |
| st(ExactlyOneTime, xsTime, exactlyOne); |
| st(ExactlyOneUntypedAtomic, xsUntypedAtomic, exactlyOne); |
| st(ExactlyOneYearMonthDuration, xsYearMonthDuration, exactlyOne); |
| st(OneOrMoreItems, item, oneOrMore); |
| st(ZeroOrMoreAtomicTypes, xsAnyAtomicType, zeroOrMore); |
| st(ZeroOrMoreElements, element, zeroOrMore); |
| st(ZeroOrMoreIntegers, xsInteger, zeroOrMore); |
| st(ZeroOrMoreItems, item, zeroOrMore); |
| st(ZeroOrMoreNodes, node, zeroOrMore); |
| st(ZeroOrMoreStrings, xsString, zeroOrMore); |
| st(ZeroOrOneAnyURI, xsAnyURI, zeroOrOne); |
| st(ZeroOrOneAtomicType, xsAnyAtomicType, zeroOrOne); |
| st(ZeroOrOneBoolean, xsBoolean, zeroOrOne); |
| st(ZeroOrOneDateTime, xsDateTime, zeroOrOne); |
| st(ZeroOrOneDate, xsDate, zeroOrOne); |
| st(ZeroOrOneDayTimeDuration, xsDayTimeDuration, zeroOrOne); |
| st(ZeroOrOneDecimal, xsDecimal, zeroOrOne); |
| st(ZeroOrOneDocumentNode, document, zeroOrOne); |
| st(ZeroOrOneDuration, xsDuration, zeroOrOne); |
| st(ZeroOrOneInteger, xsInteger, zeroOrOne); |
| st(ZeroOrOneItem, item, zeroOrOne); |
| st(ZeroOrOneNCName, xsNCName, zeroOrOne); |
| st(ZeroOrOneNode, node, zeroOrOne); |
| st(ZeroOrOneNumeric, numeric, zeroOrOne); |
| st(ZeroOrOneQName, xsQName, zeroOrOne); |
| st(ZeroOrOneString, xsString, zeroOrOne); |
| st(ZeroOrOneTextNode, text, zeroOrOne); |
| st(ZeroOrOneTime, xsTime, zeroOrOne); |
| st(ZeroOrOneYearMonthDuration, xsYearMonthDuration, zeroOrOne); |
| |
| #undef st |
| |
| /* Special cases. */ |
| const EmptySequenceType::Ptr CommonSequenceTypes::Empty (new EmptySequenceType()); |
| const NoneType::Ptr CommonSequenceTypes::None (new NoneType()); |
| const SequenceType::Ptr CommonSequenceTypes::EBV (new EBVType()); |
| |
| |
| QT_END_NAMESPACE |