1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
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 The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/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 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40//
41// W A R N I N G
42// -------------
43//
44// This file is not part of the Qt API. It exists purely as an
45// implementation detail. This header file may change from version to
46// version without notice, or even be removed.
47//
48// We mean it.
49
50#ifndef Patternist_Duration_H
51#define Patternist_Duration_H
52
53#include <private/qabstractduration_p.h>
54
55QT_BEGIN_NAMESPACE
56
57namespace QPatternist
58{
59 /**
60 * @short Implements the value instance of the @c xs:duration type.
61 *
62 * @author Frans Englich <frans.englich@nokia.com>
63 * @ingroup Patternist_xdm
64 */
65 class Duration : public AbstractDuration
66 {
67 public:
68 typedef AtomicValue::Ptr Ptr;
69
70 /**
71 * Creates an instance from the lexical representation @p string.
72 */
73 static Duration::Ptr fromLexical(const QString &string);
74 static Duration::Ptr fromComponents(const bool isPositive,
75 const YearProperty years,
76 const MonthProperty months,
77 const DayCountProperty days,
78 const HourProperty hours,
79 const MinuteProperty minutes,
80 const SecondProperty seconds,
81 const MSecondProperty mseconds);
82
83 virtual ItemType::Ptr type() const;
84 virtual QString stringValue() const;
85
86 /**
87 * Always results in an assert crash. Calling this function makes no
88 * sense due to that the value space of xs:duration is not well defined.
89 */
90 virtual Value value() const;
91
92 /**
93 * Always results in an assert crash. Calling this function makes no
94 * sense due to that the value space of xs:duration is not well defined.
95 */
96 virtual Item fromValue(const Value val) const;
97
98 virtual YearProperty years() const;
99 virtual MonthProperty months() const;
100 virtual DayCountProperty days() const;
101 virtual HourProperty hours() const;
102 virtual MinuteProperty minutes() const;
103 virtual SecondProperty seconds() const;
104 virtual MSecondProperty mseconds() const;
105
106 protected:
107 friend class CommonValues;
108
109 Duration(const bool isPositive,
110 const YearProperty years,
111 const MonthProperty months,
112 const DayCountProperty days,
113 const HourProperty hours,
114 const MinuteProperty minutes,
115 const SecondProperty seconds,
116 const MSecondProperty mseconds);
117 private:
118 const YearProperty m_years;
119 const MonthProperty m_months;
120 const DayCountProperty m_days;
121 const HourProperty m_hours;
122 const MinuteProperty m_minutes;
123 const SecondProperty m_seconds;
124 const MSecondProperty m_mseconds;
125 };
126}
127
128QT_END_NAMESPACE
129
130#endif
131

source code of qtxmlpatterns/src/xmlpatterns/data/qduration_p.h