/**************************************************************************** ** ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.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